2014-02-27 12 views
0

我對這個問題很感興趣,因爲我在這裏描述了problem。 Glassfish如何尋找所需的課程呢?假設應用程序的pom.xml中有兩個庫(依賴項),其中一個聲明的範圍爲,提供的項爲,另一個聲明爲標準範圍。glassfish是否正確解析庫的路徑?

因此,我有兩個庫 - A.jar位於Glassfish的lib文件夾中,B.jar位於我部署的war模塊的WEB-INF/lib中。

這裏解決依賴關係的順序是什麼?我假設:

  • 如果任何jar匹配類,請首先查看WEB-INF/lib文件夾。
  • 然後在Glassfish/lib文件夾中查看,如果任何jar匹配類。

這是正確的嗎? A.jar中的班級是否會在B.jar中重新定義一個班級,這種配置是合法的,反之亦然?

更具體地說,我有Glassfish 2.1。

回答

0

根據類加載器documentation for GF2我會說反之亦然。

請注意,類加載器層次結構不是Java繼承層次結構,而是一個委託層次結構。在委託設計中,類加載器在嘗試加載類本身之前將類加載委託給其父類。如果父類加載器無法加載類,則類加載器會嘗試加載類本身。實際上,類加載器只負責加載父類不可用的類。層次結構中較高級別的類加載器加載的類不能引用層次結構中較低級別的類。

注:爲GF3.1相關文檔herehere

但是您可以通過GlassFish的具體描述與

<class-loader delegate="true/false"/> 

影響行爲,你可以找到更多關於它的下面第一鏈接