2013-05-18 280 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>