【问题标题】:JBoss EAP 6.2 CDI beans.xmlJBoss EAP 6.2 CDI beans.xml
【发布时间】:2017-01-20 20:21:51
【问题描述】:

我有一个关于在 JBoss EAP 6.2 中运行 cdi 的简单问题 使用@inject(来自 javax.annotation)注入的 Pojo 始终为空。

我唯一能找到的是我需要添加一个 beans.xml。我在我的罐子(耳朵里面)的 de META-INF 文件夹中添加了它。 我仍然没有看到任何 cdi/焊接记录,所以我想知道是否完全启用了焊接。

我们正在使用自定义的standalone.xml 和 jboss-deployment-structure.xml 我尝试在这些文件中添加焊接模块,但结果是一样的:没有焊接记录,也没有注入 bean。

我创建了一个带有 ejb 的示例项目,该 ejb 已加载 @Startup 并尝试注入 pojo。当我在同一个容器中部署这个项目时,bean 已初始化,但注入的字段为空。

【问题讨论】:

  • 你有一些例子,你是如何定义你的类的,你得到了什么错误?
  • 当我看到“EAR”这个词时,我已经开始发抖了。您需要指定部署的结构 -> 根据 JEE 规范,必须为不同的 EAR 部分使用不同的类加载器,并且可见性有限(例如 EJB 无法看到位于 WAR 中的内容,但反之亦然)。这通常会导致混乱和 CDI 无法按预期工作。请添加更多详细信息,涵盖部署结构和代码示例。至于beans.xml - 你应该有它来启用对bean的检测。
  • @Siliarus 屏幕截图中的项目部署为带有单个 jar 的爆炸耳朵。 EJB 和 pojo 在同一个 jar 中。还提供了 beans.xml。我将尝试创建一个具有相同来源的单个 ejb jar。
  • @Siliarus 我还创建了一个 jar 模块(使用 beans.xml),但仍然得到相同的 Null 结果,所以不是耳朵结构是这个问题的原因。
  • 好的!我刚刚发现我在standalone.xml 中搞砸了。我还不知道是什么,但是用原来的覆盖它就可以了。

标签: java jboss cdi weld


【解决方案1】:

我没有关注standalone.xml

<extensions>
    <extension module="org.jboss.as.weld"/>
</extensions>

<subsystem xmlns="urn:jboss:domain:weld:1.0"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多