2011-03-06 84 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原型創建我的戰爭模塊。