解決springboot?部署到?weblogic?中?jar?包沖突的問(wèn)題
背景
某項(xiàng)目,客戶(hù)要求使用已有的 weblogic 部署已經(jīng)開(kāi)發(fā)好的 springboot,于是乎對(duì) springboot 進(jìn)行了部分配置的調(diào)整,主要包括去除 tomcat 依賴(lài),增加啟動(dòng)類(lèi)的處理。
一般都會(huì)比較順利,實(shí)際上總會(huì)遇到些小問(wèn)題。
本文不贅述如何在 weblogic 中部署項(xiàng)目,如果你有需要,可以訪(fǎng)問(wèn)http://m.fzitv.net/article/218458.htm 參考該文章。
問(wèn)題1
打包后發(fā)布到 weblogic 上啟動(dòng)時(shí),如下圖所示的錯(cuò)誤:

從異常內(nèi)容可以很容易判斷出,這是 jar 包沖突導(dǎo)致的錯(cuò)誤。
經(jīng)過(guò)定位,weblogic 有個(gè)目錄 wls12213\oracle_common\modules\thirdparty,其中存放了一些第三方的默認(rèn)的 jar 包,項(xiàng)目啟動(dòng)過(guò)程中默認(rèn)是先加載這里的 jar 包,再加載項(xiàng)目工程中的 jar 包,因?yàn)槟銦o(wú)法保證項(xiàng)目工程中的 jar 包和 weblogic 中的 jar 包版本剛好一致,所以就因?yàn)?jar 包版本不一致出現(xiàn)了比較常見(jiàn)的類(lèi)加載沖突的問(wèn)題。
查閱官網(wǎng)資料,weblogic 也有是解決方案的,可以通過(guò)新增并配置 weblogic.xml 文件來(lái)定義哪些類(lèi)需要優(yōu)先從項(xiàng)目工程包的 jar 包中加載。
配置方法如下:
在 springboot 項(xiàng)目代碼和 resource 同級(jí)創(chuàng)建一個(gè) webapp 目錄,然后再 webapp 目錄下創(chuàng)建 WEB-INF 目錄,將 weblogic.xml 文件放在 WEB-INF 中,以 springboot-weblogic-demo 工程為例它的完整路徑就是 springboot-weblogic-demo\\src\main\webapp\WEB-INF\weblogic.xml,其內(nèi)容如下:
<?xml version='1.0' encoding='UTF-8'?>
<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>
<!--解決項(xiàng)目中jackson的jar包和weblogic中thirdparty的jar包沖突問(wèn)題,配置優(yōu)先加載項(xiàng)目中的jar-->
<package-name>com.fasterxml.jackson.*</package-name>
</prefer-application-packages>
</container-descriptor>
<context-root>/springboot-weblogic-demo</context-root>
</weblogic-web-app>僅僅是添加配置了這一個(gè)文件,沒(méi)有其他什么配置了,網(wǎng)上說(shuō)的那些添加 web.xml 的操作,我這里并沒(méi)有添加,示例是基于 springboot 2.7.2 正常部署運(yùn)行。
問(wèn)題2
部署的過(guò)程中還出現(xiàn)了 GC 錯(cuò)誤 GC overhead limit exceeded,這個(gè)問(wèn)題比較容易解決,給 weblogic 啟動(dòng)環(huán)境修改內(nèi)存值,調(diào)大一些即可。
修改對(duì)應(yīng)文件 D:\weblogic\fmw_12.2.1.3.0_wls_quick_Disk1_1of1\wls12213\user_projects\domains\base_domain\bin\setDomainEnv.cmd,大約在 200 行出頭的位置,修改后的內(nèi)容如下:
if NOT "%JAVA_VENDOR%"=="HP" ( if "%VM_TYPE%"=="HotSpot" ( set WLS_MEM_ARGS_64BIT=-Xms1024m -Xmx4096m set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m ) )
重啟 weblogic 服務(wù),最開(kāi)始就能看到我們修改后剩下的內(nèi)存配置:

WLS_MEM_ARGS_64BIT 的原始值為 -Xms256m -Xmx512m,或者你也可以追加更多關(guān)于內(nèi)存的設(shè)置,例如:-Xms512m -Xmx1024m -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m
我寫(xiě)好的 springboot-weblogic-demo 示例工程代碼的地址:https://github.com/xzxiaoshan/springboot-weblogic-demo
到此這篇關(guān)于springboot 部署到 weblogic 中 jar 包沖突的文章就介紹到這了,更多相關(guān)springboot 部署weblogic jar 包沖突內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot項(xiàng)目部署到服務(wù)器上的方法(Jar包)
- SpringBoot中jar打包并部署到Tomcat
- 使用SpringBoot打jar包并部署到Tomcat詳細(xì)步驟
- java 一鍵部署 jar 包和 war 包
- Spring Boot Jar 包部署腳本的實(shí)例講解
- SpringBoot項(xiàng)目jar和war打包部署方式詳解
- springboot項(xiàng)目打包發(fā)布部署的過(guò)程及jar和war的區(qū)別
- 詳解如何給SpringBoot部署的jar包瘦身
- 如何打jar包為Docker鏡像并部署
- idea一鍵部署SpringBoot項(xiàng)目jar包到服務(wù)器的實(shí)現(xiàn)
相關(guān)文章
EasyExcel實(shí)現(xiàn)讀寫(xiě)Excel文件的示例代碼
EasyExcel是阿里巴巴開(kāi)源的一個(gè)excel處理框架,以使用簡(jiǎn)單、節(jié)省內(nèi)存著稱(chēng)。它可以在盡可能節(jié)約內(nèi)存的情況下支持讀寫(xiě)百M(fèi)的Excel,所以本文就將利用它實(shí)現(xiàn)讀寫(xiě)Excel文件,感興趣的可以了解一下2022-08-08
Log4j2?重大漏洞編譯好的log4j-2.15.0.jar包下載(替換過(guò)程)
Apache?開(kāi)源項(xiàng)目?Log4j?的遠(yuǎn)程代碼執(zhí)行漏洞細(xì)節(jié)被公開(kāi),由于?Log4j?的廣泛使用,該漏洞一旦被攻擊者利用會(huì)造成嚴(yán)重危害,下面小編給大家?guī)?lái)了Log4j2?重大漏洞編譯好的log4j-2.15.0.jar包下載,感興趣的朋友一起看看吧2021-12-12
Java對(duì)List進(jìn)行排序的方法總結(jié)
在Java中,對(duì)List進(jìn)行排序是一項(xiàng)常見(jiàn)的任務(wù),Java提供了多種方法來(lái)對(duì)List中的元素進(jìn)行排序,本文將詳細(xì)介紹如何使用Java來(lái)實(shí)現(xiàn)List的排序操作,涵蓋了常用的排序方法和技巧,需要的朋友可以參考下2024-07-07
java獲取當(dāng)前時(shí)間并格式化代碼實(shí)例
這篇文章主要介紹了java獲取當(dāng)前時(shí)間并格式化代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
springboot執(zhí)行延時(shí)任務(wù)之DelayQueue的使用詳解
DelayQueue是一個(gè)無(wú)界阻塞隊(duì)列,只有在延遲期滿(mǎn)時(shí),才能從中提取元素。這篇文章主要介紹了springboot執(zhí)行延時(shí)任務(wù)-DelayQueue的使用,需要的朋友可以參考下2019-12-12
Mybatis 中的sql批量修改方法實(shí)現(xiàn)
在項(xiàng)目中遇到需要批量更新的功能,原本想的是在Java中用循環(huán)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)去更新,但是心里總覺(jué)得這樣做會(huì)不會(huì)太頻繁了,太耗費(fèi)資源了,效率也很低,查了下mybatis的批量操作,原來(lái)確實(shí)有<foreach>標(biāo)簽可以做到,下面通過(guò)本文給大家介紹下2017-01-01

