我正在尝试使用新的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名称。
我在这里错过了什么吗?
答案 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模块。