我正在使用OSGi声明性服务和设置注册OSGi服务
servicefactory="true"
如下。
<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>
我正在尝试从另一个捆绑包中多次使用该服务。但是,它向我返回了该服务的相同实例。
这里可能出现什么问题?
servicefactory
标志意味着每个使用者捆绑包都有一个单独的实例。因此,如果您从 2 个捆绑包中使用服务,您将获得 2 个实例。您不会为每个使用者获取多个实例。
如果您希望使用者对实例数进行编程控制,则需要使用 ComponentFactory
方法。