0

サービスを提供して消費するバンドルがあります。私のアプリケーションコンテキストは次のとおりです。

<bean id="dbConsumer" class="service.User">
    <property name="db" ref="DBservice"></property>
</bean> 

<osgi:reference id="DBservice">
    <osgi:interfaces>
        <value>com.db.manager.DatabaseManager</value>
    </osgi:interfaces>
</osgi:reference>

<bean name="ServicioZB" id="zbservice" class="service.ZBService"/>

<osgi:service  ref="zbservice">
    <osgi:interfaces>
        <value>service.IZBService</value>
    </osgi:interfaces>
</osgi:service>

問題は、展開するときです。私はEquinoxに取り組んでおり、サービスを見ると、バンドルがDBserviceを消費していることがわかります。ただし、サービスは公開されていません。しかし、参照タグを削除すると、サービスが公開されます。つまり、私は3つのバンドル(A、B、C)を持っています。BはAによって消費されるサービスをエクスポートします。また、CはBによって消費されるサービスをエクスポートします。次に、私の質問は次のとおりです。タグを一緒にすることはできませんか?どうすればサービスを消費して提供するためのバンドルを開発できますか?

前もって感謝します!

よろしく!

4

1 に答える 1

0

パブリッシング インターフェースを 1 つだけ使用している場合は、interfaces-tag の代わりにインターフェース プロパティを使用してみてください。だから交換

 <osgi:service ref="zbservice">
     <osgi:interfaces>
         <value>service.IZBService</value>
     </osgi:interfaces>
 </osgi:service>

 <osgi:service ref="zbservice" interface="service.IZBService"/>

私はかつて同様の問題を抱えていましたが、このアプローチはうまくいきました。

于 2011-06-10T14:43:35.013 に答える