使用OSGi中的声明性服务实现Service Factory实现

时间:2012-06-21 11:26:12

标签: osgi declarative-services service-factory

我正在使用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 个答案:

答案 0 :(得分:5)

servicefactory标志表示每个使用者包都获得一个单独的实例。因此,如果您从2个捆绑包中使用该服务,那么您将获得2个实例。您为每个消费者提供多个实例。

如果您想要消费者对实例数量进行编程控制,那么您需要使用ComponentFactory方法。