3

我正在尝试使用新的 EJB3.1 功能,可以在其中部署打包在 .war 文件中的 EJB。

我正在使用 Maven 2.2.1 打包 EJB 模块,然后将 ejb jar 放入 war 模块中(作为依赖项)。最终的战争包含一个没有内容的简单 web.xml,以及 lib 目录中的 ejb jar 库。但是,尽管应用程序已正确部署,但容器无法识别带注释的 ejb (@Stateless)。我没有 ejb-jar.xml 描述符(我相信它在 EJB3 中是可选的)。

如果我自己部署 ejb jar(通过将其放在 JBoss 的部署目录中),它将部署一个分配的 jndi 名称。

我在这里错过了什么吗?

4

1 回答 1

6

我发现了这个问题。我的 web.xml 是 2.4 版本:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  version="2.4">

但是,要在 war 包中部署 EJB,它至少需要为 3.0:

<web-app 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/web-app_3_0.xsd"
      version="3.0">

这主要是因为我正在使用 J2EE Maven 原型创建我的战争模块。

于 2011-03-07T11:26:07.970 回答