OSGi Equinox、GWTをバンドルとして統合し、SpringDynamicModulesを統合しています。まず、サービスなしでGWTバンドルをチェックし、実行します。ここで、SpringDynamicModulesを使用して外部サービスを呼び出したいと思います。これらは、サービスを宣言して使用するための私のXMLファイルです。
<bean name="ServicioZB" id="zbservice" class="service.ZBService"/>
<osgi:service ref="zbservice" interface="service.IZBService"/>
と:
<osgi:reference id="service">
<osgi:interfaces>
<value>service.IZBService</value>
</osgi:interfaces>
</osgi:reference>
GreetingServiceImplには、プロパティzbとsetter/getterがあります。
private IZBService zb;
public IZBService getZb() {
return zb;
}
public void setZb(IZBService zb) {
this.zb = zb;
}
public boolean greetServer(String input, String input2) throws Exception {
return this.zb.checkUser();
}
Equinoxタイプの「サービス」の場合、すべてのサービスとコンシューマーを表示できます。次のように表示されます。
{service.IZBService}={org.springframework.osgi.bean.name=zbservice, Bundle-SymbolicName=zbservice, Bundle-Version=3.0.0, service.id=56}
Registered by bundle: zbservice_3.0.0 [56]
Bundles using service:
ZBGWTApp_1.0.0 [57]
次に、サービスが表示され、私のアプリケーションZBGWTAppがコンシューマーです。すべてが正しいようです。ただし、アプリケーションをデバッグする場合、zb.checkUser()行でスレッドを中断すると、zbの値はNULLになります。つまり、サービス参照が注入されていないのはなぜですか?