通过在OSGI中不使用servicefactory,使用Componentfactory创建唯一的服务实例



我正在尝试在OSGi中使用组件工厂。我的意图是使用作为工厂管理器的类B来创建作为工厂公开的类A的实例。类A包含一些带有@Reference注释的服务,这些服务运行良好。同样的方法用于C类,工厂(类似于A类),具有与@Reference相同的服务引用。

  1. 它会向类A&C级
  2. 如果是(对于问题1),服务工厂是否会为A类服务工作;C级?(组件工厂内具有属性servicefactory的服务(A类和C类)
  3. 如果没有(对于问题1),是否有任何方法可以在类A&使用@Reference时为C类
  4. 我可以使用新的运营商来实现同样的A级和A级服务;类C,但我期待某种DI方法。在DS中是否可能/可实现

ServiceFactory的行为独立于DS。假设您在R6中没有使用新的PrototypeServiceFactory,那么为ServiceFactory服务生成多个get的bundle将看到相同的服务对象。不同的bundle将看到不同的服务对象(假设ServiceFactory实现返回不同的对象)。

因此,如果A和C在同一个捆绑包中,那么它们将为引用的服务看到相同的服务对象,而与引用的服务是否是ServiceFactory无关。

如果您需要不同的服务对象,您应该查看Core R6中添加并在DS 1.3中支持的PrototypeServiceFactory。

相关内容

  • 没有找到相关文章

最新更新