2011-03-06 82 views
3

我想使用新的EJB3.1功能,可以在其中部署打包在.war文件中的EJB。JBoss 6 - 在战争包装中部署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名称。

我在这里错过了什么吗?

回答

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"> 

然而,在战争包被部署的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原型创建我的战争模块。