Реализация 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
подход.