依存性注入を利用してバンドルを分離することを強くお勧めします( OSGi Service Platform Enterprise仕様のブループリントコンテナー仕様をOSGi Blueprint参照してください。ただし、V5リリース用であることに注意してください)。
この仕様では、個別のxmlファイルを使用してバンドルの依存関係を宣言します- (デフォルトですが、ヘッダーOSGI-INF/blueprint/*.xmlで変更できます)。Bundle-Blueprint
したがって、あなたの場合Comm Service、サービスがバンドルの依存関係であるバンドルを開発しますCommunication。また、サービスを登録してバンドルの依存関係になることができるように、同じサービスインターフェイスPollのバンドルも存在する可能性があります。PostcardCommunication
このような構成では、バンドル/サービスCommunicationを渡すのはバンドルではありませんが、初期化中にとバンドルはサービスの依存関係を取得します。Comm ServicePollPostcardComm Service
Pollバンドルの架空のブループリント構成は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<bean id="PollSenderBean" class="pl.japila.osgi.poll.PollSender">
<argument ref="commService" />
</bean>
<service id="PollSenderBeanService" ref="PollSenderBean"
interface="pl.japila.osgi.Sender">
<service-properties>
<entry key="type" value="poll" />
</service-properties>
</service>
<reference id="commService" interface="pl.japila.osgi.comm.CommService" />
</blueprint>
Postcardバンドルも同様です。このようなクエリが必要な場合に特定のサービスを利用できるようにentry、の値に注意してください。poll
バンドルのブループリント構成はCommunication次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<reference-list activation="lazy" member-type="service-object"
id="Sender" interface="pl.japila.osgi.Sender" />
</blueprint>
ソリューションを研究および学習するには、仕様およびおそらくApacheAriesブループリントモジュールを参照してください。