1

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になります。つまり、サービス参照が注入されていないのはなぜですか?

4

2 に答える 2

1

同じエラーが発生しました。コンストラクター呼び出しを削除して解決しました。Spring によって自動的に行われます。

public void start(BundleContext bundleContext) throws Exception {
    Activator.context = bundleContext;
    // NOTE vobmaniuk: do not call HelloService(), it must be created by spring. 
    // context.registerService(IHelloService.class.getName(), new
    // HelloService(), null);
}
于 2012-03-11T14:24:14.820 に答える
0

さて、私は問題を解決します。私だけが属性を静的にして実行します!!!

于 2011-06-07T11:41:31.770 に答える