JBoss 6 - 在战争包装中部署ejb

时间:2011-03-06 20:28:58

标签: jboss java-ee war ejb-3.1 jboss6.x

我正在尝试使用新的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的deploy目录中),则会部署一个指定的jndi名称。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分: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原型创建我的war模块。