据我了解,这 3 个项目是 CDI 和 OSGI 之间的链接,但它们之间有什么区别?
1 回答
FighterFish 允许您将 OSGi 服务注入 CDI bean,但它不允许您将 CDI bean 发布为 OSGi 服务。
Weld OSGi 是 Weld for OSGi 的一个(现已过时的)扩展,它需要 Weld 1.x 的修改版本。(1.2.0.Beta1)
Weld 2.1 及更高版本包括一些源自 Weld OSGi 的修改,这些修改通过支持多个并行 CDI 容器(独立于线程上下文类加载器)使 Weld 核心对 OSGi 更加友好。
Weld 参考手册现在建议在 OSGi 环境中使用 Pax CDI。
Pax CDI 支持 OSGi 服务的注入和注册。它不依赖于任何给定的 CDI 实现(与 Weld OSGi 不同),目前支持 Weld 2.2.x 和 OpenWebBeans 1.5.0。
从概念上讲,Pax CDI 或多或少是 FighterFish CDI 和 Weld OSGi 的超集,即对于大多数 FighterFish 和 Weld OSGi 功能,您会在 Pax CDI 中找到等效的解决方案。
曾几何时,Pax CDI 计划成为 OSGi 企业专家组指定的 CDI 服务的官方参考实现。由于该规范工作目前停滞不前(据我们所知),情况不再如此,Pax CDI 项目现在正在遵循自己的路线图。
免责声明:我是 Pax CDI 项目负责人。