在EAR项目中,EJB在部署时出现两次

时间:2013-05-18 11:00:27

标签: java java-ee maven ejb websphere

当我部署EAR项目时,我注意到相同的EJB出现两次 - 在WAR和JAR(EJB)模块中。哪里可以有问题?

enter image description here enter image description here

我使用Maven构建项目。并没有明确定义任何ejb-jar.xml

在EJB项目的pom.xml中,我添加了maven-ejb-plugin

        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ejb-plugin</artifactId>
        <version>2.3</version>
        <configuration>
            <ejbVersion>3.0</ejbVersion>
            <archive>
                <addMavenDescriptor>false</addMavenDescriptor>
            </archive>
            <generateClient>true</generateClient>
            <clientExcludes>
                <clientExclude>**/core/</clientExclude>
                <clientExclude>**/utils/</clientExclude>
            </clientExcludes>
        </configuration>
    </plugin>

从客户端我引用生成的EJB-client:

        <dependency>
            <groupId>orgstructure</groupId>
            <artifactId>orgstructure-ejb</artifactId>
            <version>1.0.4-SNAPSHOT</version>
            <type>ejb-client</type>
            <scope>compile</scope>
        </dependency>

P.S。我将项目部署到WebSphere 8。

更新

生成的.ear文件具有标准布局:

-project.ear
   --web-module.war
   --ejb-module.jar
   --lib
   --META-INF

并生成applcation.xml

 <display-name>orgstructure-ear</display-name>
  <module>
    <web>
      <web-uri>orgstructure-web-1.0.3.war</web-uri>
      <context-root>/orgstructure</context-root>
    </web>
  </module>
  <module>
    <ejb>orgstructure-ejb-1.0.3.jar</ejb>
  </module>
  <library-directory>lib</library-directory>

1 个答案:

答案 0 :(得分:0)

您是否正在构建(EJB和Web模块除外)一个将使用您的EJB的独立Java应用程序?我猜不是,因为你没有在任何地方提到它。

如果我猜对了,请不要生成EJB客户端。删除选项

<generateClient>true</generateClient>
来自POM的

以及与之相关的所有配置。

此上下文中的 EJB客户端表示在外部部署了希望直接使用EJB的应用程序服务器,因此需要客户端jar来处理远程调用服务器上的bean。

如果我猜错了,你仍然不应该在web存档中包含对你的客户端jar的依赖,Java EE web应用程序使用内置的app服务器机制连接到EJB,而不是生成的客户端存根。在这种情况下,请删除选项

<type>ejb-client</type>

来自你的WAR依赖。