JBoss EAP 6.2 CDI beans.xml

Posted

技术标签:

【中文标题】JBoss 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 中搞砸了。我还不知道是什么,但是用原来的覆盖它就可以了。 【参考方案1】:

我没有关注standalone.xml

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

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

【讨论】:

以上是关于JBoss EAP 6.2 CDI beans.xml的主要内容,如果未能解决你的问题,请参考以下文章

在 JBoss EAP 6.2 中无法通过 SSL 连接到 SOAP 服务

如何在 JBoss EAP 6.2 中使用 ManagementRealm 保护 Web 应用程序?

如何更新jboss EAP -6.2中的JSP / JS而无需重新启动或重新部署构建

JBoss EAP 6.2:war-file 的交换 auth-method

Jboss EAP 6.2 log4j.properties 不记录输出但创建日志文件

javax.jms.TransactionInProgressException: 无法在 JBoss EAP 6.2 和 Active MQ 5.10.0 上的 XASession 中回滚()