JBoss 6 - Deploy ejb in war packaging

2019-02-15 05:44发布

I am trying to use the new EJB3.1 feature where one can deploy an EJB packaged within a .war file.

I am using Maven 2.2.1 to package the EJB module and then dropping the ejb jar in a war module (as a dependency). The final war contains a simple web.xml with no content, and the ejb jar library in the lib directory. However, though the application is deployed correctly, the annotated ejb (@Stateless) is not recognized by the container. I have no ejb-jar.xml descriptor (which I believe is optional in EJB3).

If I deploy the ejb jar on its own (by dropping it in the deploy directory in JBoss) it is deployed an assigned a jndi name.

Am I missing something here?

1条回答
等我变得足够好
2楼-- · 2019-02-15 06:10

I found the problem on this one. My web.xml was 2.4 version:

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

However, for EJBs to be deployed in war packages, it needs to be 3.0 at least:

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

This was mainly due to the fact that I was creating my war module with a J2EE Maven archetype.

查看更多
登录 后发表回答