2010-10-13 48 views
11

我剛開始閱讀EJB。有關EAR和WAR的EJB解釋

即使我冒險進入它,我有幾個問題基於我聽說過他們。

  1. 使用EJB的應用程序總是必須作爲EAR部署嗎?
  2. 是否可以像使用ECLIPSE而不使用ANT的其他其他Java Web項目一樣部署包含EJB的應用程序?

回答

25

1.使用ejb的應用程序總是必須部署爲EAR嗎?

EJB模塊組裝成一個JAR,讓我們把它叫做MYAPP,ejb.jar的命名約定。

這包含EJB代碼以及EJB 2.x中名爲ejb-jar.xml的部署描述符文件。在EJB 3.0中,代碼本身包含服務器爲了部署需要理解的註釋,因此部署描述符是可選的。部署描述符/註釋包含EJB部署所需的基本內容,如JNDI,DataSource查找等。

多個EJB模塊和其他Web模塊(war)的集合構成了一個EAR。正如@Isaac指出的那樣,EAR不必在其中包含任何WAR文件。 EAR文件的唯一條件是至少包含一個任何類型的J2EE模塊。

EAR需要一個META-INF/application.xml,其中列出了EAR中存在的所有EJB容器和戰爭。所以當你有多個EJB模塊時,你會選擇EAR,因爲通常的部署是EAR。

該文件的示例如下所示,取自http://download.oracle.com/docs/cd/B32110_01/web.1013/b28221/undejdev003.htm。這是一篇很好的文章供你閱讀。

<application> 
    <display-name>master-application</display-name> 
    <module> 
    <ejb>ejb1.jar</ejb> 
    </module> 
    <module> 
    <ejb>ejb2.jar</ejb> 
    </module> 
    <module> 
    <java>appclient.jar</java> 
    </module> 
    <module> 
    <web> 
     <web-uri>clientweb.war</web-uri> 
     <context-root>webapp</context-root> 
    </web> 
    </module> 
    <module> 
    <ejb>ejb3.jar</ejb> 
    </module> 

2.可應用含有EJB的部署,就像其他其他Java 網絡項目使用Eclipse和不 使用ANT

是,一旦EAR/JAR組裝它可以部署到服務器(如果你願意,可以通過Eclipse)。

Ant是一個構建工具,與EJB代碼的實際部署無關。它用於編譯和組裝JAR,這也可以從Eclipse完成。

這裏is a tutorial which does just that

進一步閱讀

Packaging Applications

Packaging EJB3 Applications

+1

很好的解釋。儘管有小的改正:EAR並沒有在其中包含任何WAR文件。EAR文件的唯一條件是至少包含一個任何類型的J2EE模塊。 – Isaac 2010-10-20 16:32:18

+0

@Isaac:謝謝,請澄清,在答案 – JoseK 2010-10-21 10:52:22

+0

necrobumping,我可以將庫包含到ejb jar嗎? – carpinchosaurio 2018-03-08 12:11:17