【问题标题】:OSGI - CDI / is it usable right now ? [Oct 2012]OSGI-CDI/现在可用吗? [2012 年 10 月]
【发布时间】:2012-10-04 23:54:25
【问题描述】:

我对 Java EE 6 和 OSGI 概念还很陌生,对此我感到非常兴奋...

最令人兴奋的功能是执行时的动态依赖注入。

我看到了一些非常棒的演示,其中应用程序在激活或取消激活捆绑包时进行 ajaxly 更新,我喜欢这种将应用程序解耦到模块中并在运行时更新它的方式...

其次,我对 XML 配置文件很无聊,我认为带有 javax.inject 和其他注释的 Java EE 6 是一件非常好的事情......

所以,我已经准备好开始在我的 web 应用程序中使用 OSGI,但首先我需要一些信息..

我找不到明确的 OSGI 进度状态 - Java EE 容器中的 CDI 集成。

(gf-cdi-osgi-integration / osgi-cdi / osgi-cdi-api)

我认为这个问题也调用了weld-osgi。

  1. 最新的 glassfish 3.1.2.2 是否支持 OSGI 的 CDI 注释? @OsgiService 和 @Publish ? 还是会在未来的版本中发布?

(我已经看到使用 @OsgiService 和 maven depenmdancy 的示例,它们似乎启用了这个注释,但现在没有关于 @Publish 的...)

1bis - Jboss AS 是否支持该功能?以下哪个 Java EE 容器与 OSGI 的集成度最好?

  1. 什么是 fighterfish (Oracle),它与 ​​glassfish osgi 有关吗?

  2. 所以基本上如果我现在想用 cdi 和 osgi 开发战争,我需要哪个 env

    (服务器 - 版本 - 插件)

  3. 此外,需要哪些 maven 依赖才能使用 @publish 和 @osgiservice

  4. 为了澄清一点,如果我接受 hibernate lib 打包在我的 war / wab 中并且不会作为捆绑包提供,我可以在我的项目中使用带有 OSGI 的 hibernate 吗

    任何其他库的相同问题...

感谢您的时间和解释,顺便说一句,我已经阅读了很多论坛和博客https://github.com/tangyong/gf-cdi-osgi-integration 例如,我只需要明确回答我的问题:)

【问题讨论】:

标签: jakarta-ee glassfish osgi cdi


【解决方案1】:

Glassfish 已经支持在 OSGi 包中使用 Java EE 注释。下面的文档显示了我认为已经可以完成的工作,这令人印象深刻。其中支持@OsgiService。

http://glassfish.java.net/public/GF-OSGi-Features.pdf

【讨论】:

  • 根据 glassfish 在最终版本中提供所有 Entreprises 包和一些注释,是的,它令人印象深刻......但我迫不及待地想使用 WELD 1.2 提供的 OSGI Event 和 @publish 等新功能!
  • 我也会密切关注weld,因为我主要使用Apache Karaf。你知道 Weld 是否适用于 Karaf 吗?
  • AFAIK theweld-1.2.0-Beta1 提供了 4 个基于 Equinox、Felix 和其他 2 个的示例 ..
【解决方案2】:

Apache Karaf 现在还通过使用 pax-cdi 项目支持 CDI。

In a mailing list thread on ops4jHarald Wellman 描述了如何在 karaf 上使用 pax cdi。 这对我来说很好。即将推出的 karaf 3.0.0 将在企业功能中包含 pax cdi,因此安装将只是“feature:install cdi”。

启动 Apache Karaf 3.0.0.RC1

feature:repo-add mvn:org.ops4j.pax.cdi/pax-cdi-features/0.4.0/xml/features
install mvn:org.apache.xbean/xbean-bundleutils/3.12
feature:install pax-cdi-openwebbeans
install mvn:org.ops4j.pax.cdi.samples/pax-cdi-sample1/0.4.0
start org.ops4j.pax.cdi.sample1

所以我们可以检查示例是否有效:

services org.ops4j.pax.cdi.sample1

OPS4J Pax CDI Sample1 (153) provides:
------------------------------------
[org.ops4j.pax.cdi.sample1.impl.VanillaService,
org.ops4j.pax.cdi.sample1.IceCreamService]
[org.ops4j.pax.cdi.sample1.IceCreamService]
[org.ops4j.pax.cdi.spi.CdiContainer]

【讨论】:

    【解决方案3】:

    JBoss AS7 的未来版本(遗憾的是我没有日期)将包括新的焊接 osgi (http://in.relation.to/Bloggers/NotOneTwoWeldReleases1110FinalAnd120Beta1),它可能会满足您的需求。至于 GlassFish,我不希望很快在那里看到焊接 1.2.x 版本:(

    【讨论】:

    • 谢谢..我很高兴去jboss那里..但是afaik glassfish通过将所有jee模块作为捆绑包提供了更好的osgi实现,所以我要检查jboss进度
    • 顺便说一句,我可以用提供的weld-1.2.0-beta1替换jbossweld吗?或者它不兼容?如果是我应该只更换weld-core / api / spi 模块或其他模块吗?哪个版本的 jboss 可以做到这一点(我目前有 7.1.3(CI 版本)
    • 集成 SPI 发生了变化,因此您无法简单地更换 jar,抱歉。
    • 那么有什么办法让它工作呢?我的意思是,我认为可以测试weld-1.2.0 版本以检查错误并测试新功能?有没有可以使用它的 jboss 分支?
    • 我不确定是否有。您必须询问weld-dev 列表或JBoss 开发列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 2012-10-25
    • 2012-03-29
    • 2012-09-24
    • 1970-01-01
    • 2012-05-17
    相关资源
    最近更新 更多