当存在 ejb-jar.xml 时,EJB3 注释被忽略

EJB3 annotations get ignored when ejb-jar.xml is present

我有一个当前包含 EJB 2.1 会话 Bean 的应用程序。我想尽可能将它们传输到 EJB 3.1 注释。

不幸的是,这对所有人来说都是不可能的,所以我需要为那些我无法使用注释的文件维护 ejb-jar.xml 文件。

我已经添加了 beans.xml 文件,但只要存在 ejb-jar.xml 文件,注释就会被忽略。一旦我删除它,注释就会起作用。

如何配置我的应用程序以使用存在的注释并仅将 ejb-jar.xml 文件用于其中配置的内容。据我对文档的理解,无论如何这应该是正常情况。

当您将应用程序从 EJB-2.1 转移到 EJB-3.1 时,您必须检查是否将 ejb-jar.xml 的版本也设置为 3.1。

使用 the xsd 中的 header:

<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
      version="3.1">

然后您的注释也会被考虑。

根本不需要beans.xml。它是启用 CDI 所必需的(如果您仅从其他 bean 引用您的 bean,则不需要它),看看 this post 它是什么以及何时需要它。

您的 ejb-jar.xml 可能还需要其他设置,但这是另一个问题的主题。