1. 程式人生 > >記一次weblogic中的jar包衝突

記一次weblogic中的jar包衝突

問題介紹:
我們新上線的生產環境上有不同功能的五個專案,其中一個專案不知道什麼原因到第二天就不列印日誌了。

曲折的解決過程:
正好在測試環境也遇到了相同的問題,當時把換log4j 的jar包 ,直接在weblogic先載入專案中相同的log4j的jar包等能想到的方法都試了,他就是不生成日誌檔案。
後來叫我們的技術大哥看了一下,發現測試環境是因為沒有做相應的操作所以沒有列印日誌,但是生產上依舊是不列印第二天的日誌。因為我再測試環境是直接改linux時間來測試這個日誌問題的,所以最後鎖定是因為日結(關閉其中幾個專案,跑一些自動任務,再把相關專案啟動其阿里)的問題導致日誌檔案不列印的。

最後發現是因為在日結啟動有問題的專案(專案A)之前另一個專案(專案B)有一個相同版本的log4j的jar包,但是專案B的weblogic.xml檔案中的配置是

<prefer-web-inf-classes>false</prefer-web-inf-classes>

把裡面的false改成true 問題解決日誌正常列印。

由於對weblogic底層不太理解,猜想是因為出問題的專案A以為之前的專案B已經載入過那個版本的jar包了,但由於專案B中沒有設定優先載入專案中的jar包,導致啟動專案B的時候載入的是weblogic中自帶版本的log4j的jar包 , 而專案A由於最後啟動所以導致專案A找不到對應的jar包。

由於沒有找到太多於weblogic 多專案jar包載入相關的資料,所以若有什麼不對之處歡迎指正。