могу ли я предоставлять и ссылаться на услуги в одном и том же компоненте при использовании декларативных услуг для osgi? - PullRequest
0 голосов
/ 18 декабря 2010

<?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>

Для того, что показано выше, нормально ли предоставлять и ссылаться на услуги в одном и том же компоненте?Например, есть два пакета A и B. A предоставляет услугу для использования B, а B также предоставляет услугу для использования A.Что мне делать с этой ситуацией?

1 Ответ

1 голос
/ 20 декабря 2010

Кажется, что это прекрасно, потому что ссылка на службу является необязательной и динамической.

Если вы определите круговую зависимость, где обе ссылки являются обязательными, DS сообщит об ошибке. Должен быть способ сначала создать один компонент, и с обязательными ссылками ни один компонент не может быть создан до тех пор, пока не будет создан другой (однако третий пакет «C» может зарегистрировать службу, которая удовлетворяет одному из компонентов).

С необязательной / динамической ссылкой DS может создать один компонент с несвязанной ссылкой, затем создать другой компонент и вставить его обратно в первый.

...