2016-11-04 66 views
3

我目前正面臨一個有趣的問題,即由於類加載問題導致應用程序無法在3/4節點上啓動。WebSphere如何在文件夾中選擇類加載順序(WEB-INF/lib)

問題似乎是,WAS在a.jar之前加載了b.jar。在排除故障之後,我發現所有節點都以不同的順序(通過控制檯中的Classpath查看器)加載罐子,而工作節點可能只是一種僥倖。

WebSphere如何確定安裝的應用程序WEB-INF/lib文件夾中的類加載順序?

+0

啓動過程中你得到一流未發現異常? – Satheshkumar

+0

不太......我收到了另一個錯誤,當與開發人員討論時,他說這是因爲它正在加載某個我們的訂單。有一個0-jarname.jar,它們打算在jarname.jar之前加載,但是在3/4節點上,它會在0-jarname.jar之前加載jarname.jar。我試圖理解它如何加載順序,因爲在websphere classpath查看器中,它似乎沒有任何有意義的順序。 – leeman24

+0

是否有任何理由爲什麼0-jarname.jar和jarname.jar不能簡單地組合成一個jar? –

回答

1

加載jar的順序在websphere中是未定義的。爲了解決你的問題,我建議你使用下面的一個選項。

使用清單類路徑設置通過按照您希望如何加載的順序提及jar名稱。

OR

您可以從a.jar文件提取類,並把它在WEB-INF/classes目錄。然後從lib文件夾中刪除a.jar。因爲classes目錄將在lib目錄之前加載。

+0

謝謝。我會盡快嘗試第一個選項,如果需要,可能會要求開發人員幫助選項2。 – leeman24

+0

Ok.Good luck :) – Satheshkumar

+0

實際上有一個問題..設置Class-path時:在清單文件中..如果我想查看installedApps/[appname] /WEB-INF/lib/jarname.jar ,相對路徑是什麼? WEB-INF/lib/jarname.jar是否足夠? – leeman24

-1

有兩種方法可以在Websphere,PARENT_FIRST(默認)或PARENT_LAST中配置類加載器。 Websphere中的Classloaders是分層的,你可以把它想象成一棵樹,你可以將它看作: Java class loader - > ext class loader - > App module class loader - > web module class loader

PARENT_FIRST將從「自頂向下「,從Java類加載器開始,而PARENT_LAST將從Web模塊類加載器開始的」自下而上「加載類。如果您使用的開源庫與WAS提供的庫衝突,我建議您使用PARENT_LAST。

看看這些資源的更多信息:

+1

感謝您的反饋,但不是我所要求的。我最後使用父節點,因爲我首先需要Web模塊類,但是在Web模塊WEB-INF/lib文件夾中,我想知道如何在該文件夾中加載類(它看起來沒有文檔)。 – leeman24

相關問題