0

<?xml version="1.0" encoding="UTF-8"?> <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="sensor_test"> <implementation class="test.sensor.version1.serviceImpl.SensorServiceImpl"/> <service> <provide interface="test.sensor.version1.serviceInterface.SensorServiceInterface"/> </service> <reference bind="setOntologyService" cardinality="0..1" interface="test.ontology.version1.serviceinterface.OntologyServiceInterface" name="OntologyServiceInterface" policy="dynamic" unbind="unsetOntologyService"/> </scr:component>

上に示したものについては、同じコンポーネントでサービスを提供および参照しても大丈夫ですか?たとえば、2つのバンドルAとBがあります。AはBが使用するサービスを提供し、BはAが使用するサービスも提供します。この状況で私は何をすべきですか?

4

1 に答える 1

1

サービス参照はオプションで動的であるため、これはまったく問題ないように見えます。

両方の参照が必須である循環依存を定義すると、DS はエラーを報告します。最初に 1 つのコンポーネントを作成する方法が必要であり、必須の参照では、他のコンポーネントが作成されるまでどちらのコンポーネントも作成できません (ただし、3 番目のバンドル「C」は、コンポーネントの 1 つを満たすサービスを登録できます)。

オプション/動的参照を使用すると、DS はバインドされていない参照を使用して 1 つのコンポーネントを構築し、次に別のコンポーネントを構築して最初のコンポーネントに挿入し直すことができます。

于 2010-12-19T23:16:26.727 に答える