2010-12-18 4 views
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>osgiの宣言型サービスを使用する場合、同じコンポーネントでサービスを提供して参照できますか?

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

答えて

1

これは、サービス参照がオプションでも動的でもあるため、完全に問題はないようです。

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

オプション/ダイナミックリファレンスを使用すると、DSはリファレンスをアンバインドして1つのコンポーネントを作成し、もう一方のコンポーネントを作成して最初のコンポーネントに挿入することができます。

関連する問題