首頁  >  文章  >  Java  >  springboot部署到weblogic中jar包衝突如何解決

springboot部署到weblogic中jar包衝突如何解決

PHPz
PHPz轉載
2023-05-11 17:10:061699瀏覽

背景

某項目,客戶要求使用已有的 weblogic 部署已經開發好的 springboot,於是乎對 springboot 進行了部分配置的調整,主要包括去除 tomcat 依賴,增加啟動類別的處理。

通常都會比較順利,實際上總是會遇到些小問題。

問題1

打包後發佈到weblogic 上啟動時,如下圖所示的錯誤:

springboot部署到weblogic中jar包衝突如何解決

##從異常內容可以很容易判斷出,這是jar 包衝突所導致的錯誤。

經過定位,weblogic 有個目錄

wls12213\oracle_common\modules\thirdparty,其中存放了一些第三方的預設的jar 包,專案啟動過程中預設是先載入這裡的jar包,再加載專案工程中的jar 包,因為你無法保證專案工程中的jar 包和weblogic 中的jar 包版本剛好一致,所以就因為jar 包版本不一致出現了比較常見的類加載衝突的問題。

查閱官網資料,weblogic 也有是解決方案的,可以透過新增並設定 weblogic.xml 檔案來定義哪些類別需要優先從專案工程套件的 jar 套件中載入。

設定方法如下:

在springboot 專案程式碼與resource 同級建立一個webapp 目錄,然後再webapp 目錄下建立WEB-INF 目錄,將weblogic.xml檔案放在WEB-INF 中,以springboot-weblogic-demo 工程為例它的完整路徑就是

springboot-weblogic-demo\\src\main\webapp\WEB-INF\weblogic.xml,其內容如下:

<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
    <container-descriptor>
        <prefer-application-packages>
            <package-name>org.slf4j</package-name>
            <package-name>javax.validation.*</package-name>
            <package-name>org.hibernate.*</package-name>
            <package-name>javax.el.*</package-name>
            <package-name>org.springframework.*</package-name>
            <!--解决项目中jackson的jar包和weblogic中thirdparty的jar包冲突问题,配置优先加载项目中的jar-->
            <package-name>com.fasterxml.jackson.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
    <context-root>/springboot-weblogic-demo</context-root>
</weblogic-web-app>

只是添加配置了這一個文件,沒有其他什麼配置了,網上說的那些添加web.xml 的操作,我這裡並沒有添加,示例是基於springboot 2.7 .2 正常部署運作。

問題2

部署的過程中也出現了GC 錯誤

GC overhead limit exceeded,這個問題比較容易解決,給weblogic 啟動環境修改記憶體值,調大一些即可。

修改對應檔案

D:\weblogic\fmw_12.2.1.3.0_wls_quick_Disk1_1of1\wls12213\user_projects\domains\base_domain\bin\setDomain#.cmd##在200 行出頭的位置,修改行出頭的位置,修改後來的內容如下:

if NOT "%JAVA_VENDOR%"=="HP" (
	if "%VM_TYPE%"=="HotSpot" (
		set WLS_MEM_ARGS_64BIT=-Xms1024m -Xmx4096m
		set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m
	)
)

重啟weblogic 服務,最開始就能看到我們修改後剩下的記憶體配置:

springboot部署到weblogic中jar包衝突如何解決

##WLS_MEM_ARGS_64BIT的原始值為-Xms256m -Xmx512m,或者你也可以追加更多關於內存的設置,例如:-Xms512m -Xmx1024m -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m

以上是springboot部署到weblogic中jar包衝突如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除