java - 使用 Glassfish 和 CDI 获取服务属性或其他包

标签 java glassfish osgi cdi

我使用 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/

相关文章:

osgi - 如何在 Karaf 中运行 Vaadin 7 应用程序?

spring - 为什么 <context :component-scan> not resolve Spring beans in an OSGi fragment bundle?

java - 为什么 Jackson 用一个以类(class)命名的额外层包裹我的对象?

JAVA过滤目录内的文件

java - 如何在 Java 中比较字符串?

java - OSGi 线程永远不会停止运行,为线程定义了固定的生命周期

java - 如何使用setter和getter在android中的类之间传递数据

java - Glassfish server.log 填充 WS-TX 服务不可用

java - 带有 JMS 队列的同步消费者

java - Glassfish 4.0 和 SAP JCo3