私は Eclipse Virgo/Gemini ブループリントを使用しており、複数の実装を持つインターフェイスを持っています。
実装 1:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
<bean id="MyID1"
class="ImplementationCLass1">
</bean>
<service ref="MyID1"
interface="MyInterface" />
実装 2:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
<bean id="MYID2"
class="ImplementationClass2">
</bean>
<service ref="MYID2"
interface="MyInterface" />
実装 3:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
<bean id="MyID3"
class="ImplementationClass3">
</bean>
<service ref="MyID3"
interface="MyInterface" />
そしてクライアント:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
<reference-list id="MyImplementations"
interface="MyInterface" />
<bean id="clientID" class="ClientClass"
init-method="startUp">
<property name="services" ref="MyImplementations"></property>
</bean>
startUp メソッドは、リスト全体を反復処理して単純な文字列を出力する単純なメソッドです (テスト目的)。
問題は、クライアント バンドルをインストールすると、ツリー サービスのうち 2 つだけがリストに表示されることです。バンドルを停止して再度開始すると、3 つのサービスすべてがリストに表示されます。
アイデア/提案はありますか?
リストに MyInterface に一致するすべてのサービスを含める必要があることを乙女座に伝えることは可能ですか?
追加情報が必要な場合は、お気軽にお問い合わせください