我使用 glassfish 4 OSGi 控制台来管理包。所以,如果我想从另一个包中获取一个包,我会使用@Inject 和@OSGIService 注释。 当我在上下文中注册服务时,我将属性放在其中:
context.registerService(
ServiceClass.class.getName(), new ServiceClass(), props);
当我注入(inject)它时,我能以某种方式通过 bundle 获得这些属性吗?
我可以使用 CDI 获取包上下文吗?
如果bundle之间的某些接口(interface)有不同的实现,我想通过代码中的属性获取它们,我该如何实现?
最佳答案
尝试@Inject BundleContext上下文;注入(inject) BundleContext。 执行@Inject @OSGIService @Filter("myprop=a") MyService 服务;注入(inject)具有某些属性的服务。
这是来自焊接文档,但大多数情况下它也适用于 glassfish。
详情请看:
http://de.slideshare.net/TrevorReznik/weldosgi-injecting-easiness-in-osgi
关于java - 使用 Glassfish 和 CDI 获取服务属性或其他包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24950116/