2009/01/13

BlazeDSとGuiceの連携

Google Codeにguice-blazedsというプロジェクトを見つけたので、ちょっと試してみました。

guice-blazeds(Guice injection for BlazeDS)
http://code.google.com/p/guice-blazeds/

ソースコードを覗いてみたら、とってもシンプル。2クラスだけしかありません。
uk.co.chasetechnology.guice_blazeds.AbstractGuiceFactory.java
uk.co.chasetechnology.guice_blazeds.GuiceFactoryInstance.java

BlazeDS用のFactoryクラスのベースを提供してくれるだけのようです。

guice-blazedsアプリの作成手順としては、まず、リモートサービスを定義。
package net.air_life.guice_blazeds.service;

public class HelloWorldService {
public String sayHello() {
return "Hello World.";
}
}
次にBlazeDSで使用するFactoryを作るために、guice-blazedsが提供してくれてるAbstractGuiceFactoryのサブクラスを定義。
package net.air_life.guice_blazeds.factory;

import uk.co.chasetechnology.guice_blazeds.AbstractGuiceFactory;
import com.google.inject.Guice;
import com.google.inject.Injector;

public class GuiceFactory extends AbstractGuiceFactory {
private Injector injector;

public GuiceFactory() {
injector = Guice.createInjector();
}

public <T> T createInjectedObject(Class<T> clazz) {
return injector.getInstance(clazz);
}
}
あとはBlazeDS側の設定services-config.xmlに上記のFactoryを追加。
<services-config>
....
<factories>
<factory id="guice" class="net.air_life.guice_blazeds.factory.GuiceFactory"/>
</factories>
</services-config>
最後にremoting-config.xmlにHelloWorldServiceを追加。

....
<destination id="helloWorld">
<properties>
<source>net.air_life.guice_blazeds.service.HelloWorldService</source>
<factory>guice</factory>
</properties>
</destination>
あとはクライアント側からhelloWorld宛にサービス呼び出しをかけると、HelloWorldという文字列を受け取れます。

0 件のコメント: