昨天收到有個童鞋發(fā)來的一個問題咨詢,如下圖所示。
提到幾個疑問:
配置如圖所示,然后共享庫和項目自身lib下都有一個“xxxx-common.jar”,如果項目用到j(luò)ar包里面的一個類,將會是共享庫的還是自身lib的呢?發(fā)現(xiàn)是用的lib里邊的。現(xiàn)網(wǎng)情況也是xxlib和lib下都有那jar包,但是根據(jù)日志來看,是用共享庫的。現(xiàn)網(wǎng)的配置如何,暫時沒查明。不過就開發(fā)環(huán)境的配置來看,我一直認(rèn)為Parent First應(yīng)該會走共享庫的,目前的現(xiàn)象和我掌握的知識不匹配。
于是,我上網(wǎng)搜索了一下Websphere關(guān)于共享庫的資料,主要的鏈接如下:
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/haoaili/0512/http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/tcws_sharedlib_nativelib.html?lang=zhhttps://10.132.10.69:9043/ibm/help/index.jsp?topic=/com.ibm.ws.console.environment/ucws_rsharedlib_inst.html通過這些鏈接資料的描述(不得不說,這些中文翻譯很隱晦),但的確是可以解釋目前的情況的。
首先,Websphere的共享庫和tomcat的共享庫差別很大,而我卻一直以為是差不多的。 tomcat的共享庫是一個獨立的類加載器,并且在多個Web應(yīng)用中共享。好處是明顯的,共享加載的類,優(yōu)化內(nèi)存使用。
其次,Webshpere的共享庫非常靈(fu)活(za),有多種配置組合可以影響結(jié)果。具體如下:
設(shè)置參考下圖所示:
對于第三種情況,它的類加載順序如下:
如果應(yīng)用的類載入順序選擇“父類裝入器裝入的類最先”,即Parent First,那么順序如下:
檢查相關(guān)聯(lián)的庫類裝入器是否可以裝入類。(共享庫)檢查它的父代類裝入器是否可以裝入類。(應(yīng)用服務(wù)器及更高)檢查應(yīng)用程序或 WAR 模塊類裝入器是否可以裝入類。(應(yīng)用)如果應(yīng)用的類載入順序選擇“本地類裝入器裝入的類最先”,即Parent Last,那么順序如下:
檢查應(yīng)用程序或 WAR 模塊類裝入器是否可以裝入類。(應(yīng)用)檢查相關(guān)聯(lián)的庫類裝入器是否可以裝入類。(共享庫)檢查它的父代類裝入器是否可以裝入類。(應(yīng)用服務(wù)器及更高)
|
新聞熱點
疑難解答