我正在尝试在OSGi中使用组件工厂。我的目的是使用Class B(工厂经理)创建A类实例,它作为工厂公开。 A类包含一些带有@Reference注释的服务,它们工作正常。 相同的方法用于C类,工厂(类似于A类),具有与@Reference相同的服务引用。
答案 0 :(得分:0)
ServiceFactory行为与DS无关。假设您没有在R6中使用新的PrototypeServiceFactory,那么为ServiceFactory服务创建多个gets的bundle将看到相同的服务对象。不同的bundle会看到不同的服务对象(假设ServiceFactory实现返回不同的对象)。
因此,如果A和C在同一个包中,它们将看到引用服务的相同服务对象,而与引用的服务是否为ServiceFactory无关。
如果您需要不同的服务对象,您应该查看在Core R6中添加并在DS 1.3中受支持的PrototypeServiceFactory。