2013-11-28 24 views

回答

1

由於Web模塊可以訪問EAR/lib上的JAR,所以最好在EAR/lib中使用公共庫。另外一種選擇是在你的應用程序服務器的ext/lib文件夾中包含你的公用庫,但是當你釋放EAR時你必須單獨發送這些,這也不是一個好習慣。

BIG.ear 
+-- lib (contains common libs for all modules) 
+-- META-INF 
| +-- application.xml (lists modules myWEB.war and myEJB.jar) 
| +-- MANIFEST.MF 
+-- myEJB.jar 
| +-- META-INF 
| | +- ejb-jar.xml 
|  
|   +-- ... 
+-- myWEB.war 
     +-- META-INF 
     | +-- MANIFEST.MF 
     +-- WEB-INF 
     | |+-- lib (3rd party libs only used by .war) 
     | +-- web.xml 
     +-- index.html 
+0

我的困惑是我只想知道如果我保留兩個相同的jar副本會發生什麼。它會對類加載器產生任何問題嗎? – Adam

+1

好吧,只要兩個庫具有相同的JAR,就不會有衝突,可以更全面地解釋類加載。在委託設計中,類加載器在嘗試加載類本身之前將類加載委託給其父類。類加載器父類可以是System類加載器或自定義類加載器。如果父類加載器不能加載類,則類加載器會嘗試加載類本身。實際上,類加載器只負責加載父類不可用的類。因此,您的孩子是WAR,父母是EAR,因此您的Web將使用EARs Jar文件。 – jayalalk