Реализация Service Factory с использованием декларативных сервисов в OSGi

Я регистрирую сервис OSGi, используя декларативный сервис OSGi и настройки

ServiceFactory="истина"

следующее.

<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="test.Configuration">
  <implementation class="test.ConfigurationImpl"/>
  <service servicefactory="true">
     <provide interface="test.Configuration"/>
  </service>
</scr:component>

Я пытаюсь использовать сервис несколько раз из другого пакета. Но он возвращает мне тот же экземпляр службы.

Что может пойти не так?

1 ответ

Решение

servicefactory Флаг означает, что каждый потребительский пакет получает отдельный экземпляр. Таким образом, если вы используете услугу из 2 пакетов, вы получите 2 экземпляра. Вы не получаете несколько экземпляров на одного потребителя.

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

Другие вопросы по тегам