2013-05-18 109 views
3

当我部署EAR项目时,我注意到相同的EJB出现两次 - 在WAR和JAR(EJB)模块中。哪里可以解决问题?在EAR项目中,当部署时,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客户端:

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

附:我将项目部署到WebSphere 8

UPDATE

生成.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> 
+0

您是否还可以在ear文件中提供ear Maven构建的内容和application.xml的内容。谢谢。 – mszalbach

+0

EJB-classes是在WEB-INF \ classes下的war-archieve还是在jar-archieve unter WEB-INF \ lib下的? maven是否生成了2个ejb-jar.xml? – cljk

+0

@mszalbach更新了问题。请查阅。 – MyTitle

回答

0

你建设(除EJB和Web模块)将要使用您的EJB的独立Java应用程序?我猜不是,因为你没有在任何地方提及它。

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

<generateClient>true</generateClient> 

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

EJB客户在这种情况下指的是应用程序部署想要直接使用EJB组件,因此它需要一个客户端JAR处理对服务器上的豆远程调用的应用程序服务器。

如果我猜错了,您仍然不应该在Web归档中包含对客户机jar的依赖项,那么Java EE web应用程序将使用内置应用服务器机制连接到EJB,而不是生成客户机存根控件。在这种情况下,请从您的WAR依赖关系中删除选项

<type>ejb-client</type>