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という文字列を受け取れます。