osgi - 如何在 jboss 中将 OSGI 与 CDI 一起使用?

标签 osgi cdi jboss-weld jboss-eap-6

我正在试验 OSGI 和 CDI。我想使用 CDI 注释注册我的 OSGI 服务,并使用 CDI 检索已注册的 OSGI 服务。

我找到了以下内容:https://github.com/mathieuancelin/weld-osgi ,它似乎已集成到 weld-core 中。但是,当我依赖 weld-core 1.2.0.Beta1 或 2.0.0.Final 版本时,我没有找到 https://github.com/mathieuancelin/weld-osgi 文档中指定的任何注释。 .

当您想将 OSGI 与 CDI 结合使用时,这就是 weld-osgi 的方法吗?或者我应该使用 Spring ? (我更喜欢 weld,因为我的 AS 目前是 jboss EAP 6.1)

我可以在哪个依赖项中找到文档中指定的注释?

谢谢!

最佳答案

目前我不建议使用 CDI 来处理 OSGi 服务。 Weld-OSGi 库仍处于试验阶段,很可能会在 OSGi-CDI 规范发布时发生变化。

目前,OSGi-CDI (RFC 193) 的新规范正在企业 OSGi 专家组中编写(我是编写此规范的成员之一)。 OSGi-CDI 计划在明年初成为 Enterprise OSGi R6 的一部分。不幸的是,现在开始使用它还为时过早,引用实现还远未完成。有关即将推出的规范的更多详细信息,请参阅我今年在 EclipseCon 上所做的演示:https://speakerdeck.com/paulbakker/rfc-193-osgi-cdi

我强烈建议使用可用于 OSGi 服务的其他依赖项注入(inject)解决方案之一,最好是 Apache Felix 依赖项管理器或动态服务。因为这两个库都是直接构建在 OSGi 服务 API 上的,所以您不必拖入其他依赖项。编程模型明显不同于 CDI,但概念非常相似,因此应该很容易上手。

也不要使用 Spring,因为它不太适合 OSGi(尽管它可以工作)。

关于osgi - 如何在 jboss 中将 OSGI 与 CDI 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16829622/

相关文章:

spring - 将接口(interface)的多个实现公开为 OSGI 服务

java - 如何在 Quarkus 中读取环境变量

java - 在其他应用程序的 beans.xml 上启用 CDI 替代方案

java - 使用 Wicket 从 super /抽象类调用方法时焊接注入(inject)失败

java - 如何将 byte[] 转换为 Binary 以设置 jcr :data with file contents?

java - 嵌入式 Felix 无法将激活器转换为 BundleActivator

java - CDI - 正确的 bean.xml 格式是什么?

java - CDI-- 有条件安装

java - 获取 OSGi 包上下文的最佳技术?

java - JBoss 中的 EJB 特化