ホームページ  >  記事  >  Java  >  springboot を Weblogic にデプロイするときに jar パッケージの競合を解決する方法

springboot を Weblogic にデプロイするときに jar パッケージの競合を解決する方法

PHPz
PHPz転載
2023-05-11 17:10:061646ブラウズ

背景

あるプロジェクトでは、顧客は開発した Springboot をデプロイするために既存の WebLogic を使用する必要があったため、主に Tomcat の依存関係の削除やスタートアップ クラスの処理の追加など、Springboot に対していくつかの構成調整が行われました。

通常は順調に進みますが、実際には常に小さな問題が発生します。

質問 1

パッケージが Weblogic にリリースされて開始されると、次の図に示すエラーが発生します:

springboot を Weblogic にデプロイするときに jar パッケージの競合を解決する方法

例外これは、jar パッケージの競合によって引き起こされるエラーであると判断するのは簡単です。

見つけた後、weblogic にはディレクトリ wls12213\oracle_common\modules\thirdparty があり、これにはいくつかのサードパーティのデフォルトの jar パッケージが保存されます。プロジェクトの起動プロセス中に、ここの jar は最初にロードされます。デフォルトのパッケージを作成し、プロジェクト プロジェクトに jar パッケージをロードします。プロジェクト プロジェクトの jar パッケージのバージョンと Weblogic の jar パッケージのバージョンがまったく同じであることは保証できないため、一貫性がないために一般的なクラス読み込みの競合が発生します。 jar パッケージのバージョン。

公式 Web サイトの情報を確認してください。weblogic にも解決策があります。weblogic.xml ファイルを追加して構成することで、プロジェクト エンジニアリング パッケージの jar パッケージから最初にロードする必要があるクラスを定義できます。

設定方法は次のとおりです。

springboot プロジェクトのコードとリソースと同じレベルに webapp ディレクトリを作成し、その下に WEB-INF ディレクトリを作成します。 webapp ディレクトリに 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 オーバーヘッド制限を超えました。この問題は比較的簡単に解決できます。メモリ値を変更してください。 WebLogic 起動環境の場合は、値を増やすだけです。

対応するファイル #D:\weblogic\fmw_12.2.1.3.0_wls_quick_Disk1_1of1\wls12213\user_projects\domains\base_domain\bin\setDomainEnv.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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。