web-dev-qa-db-ja.com

設定方法JavaクラスローダーPARENT_LAST

クラスローダーを変更する必要があるSpringMVCWebアプリケーションがあります。クラスローダーをPARENT_LASTと等しくなるように変更する必要があります。私はWAS6.1を使用しており、ジョブを実行するためにコピーできる以前のWebアプリケーションからのjaclスクリプトをすでに持っています。

最後のアプリケーションでは、Apache antが使用され、それらが行ったことは、デプロイをjaclスクリプトの実行に依存させることでした。

新しいWebアプリケーションでは、maven installを使用してwarファイルを作成し、そのwarファイルをアプリケーションサーバーにデプロイしています。

Mavenを使用してクラスローダーをPARENT_LASTに設定するにはどうすればよいですか?私はコンソールでそれを行う方法を知っていますが、スクリプトを使用してそれを行う方法があれば、それは素晴らしいことです。

また、この設定はwarファイルのどこかに配置されるため、アプリケーションのデプロイ時に設定が取得されます。この質問は、jaclスクリプトがどのように機能するかについての私の理解の欠如から来ていますか?

ありがとう

11
Richie

WARファイル自体のみをデプロイしている場合、これを制御することはできませんが、EARファイルにWARファイルがある場合は、deployment.xmlソリューションを使用できます。 Deployment.xmlファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<appdeployment:Deployment xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:appdeployment="http://www.ibm.com/websphere/appserver/schemas/5.0/appdeployment.xmi" xmi:id="Deployment_1347529484613">
  <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1347544766353" startingWeight="99" warClassLoaderPolicy="SINGLE">
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1347543866613" startingWeight="1" uri="YourWebApp.war" classloaderMode="PARENT_LAST"/>
    <classloader xmi:id="Classloader_1347543866613" mode="PARENT_LAST"/>
  </deployedObject>
</appdeployment:Deployment>

完了したら、src/main/applicationであるsrc/main/application/META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/deployment.xmlを使用していると仮定して、EARプロジェクトビルドの正しい場所にファイルを追加し、通常どおりMavenを使用してEARをビルドするだけです。

サーバーの展開中に、これはWASによって取得されます。

17
DanielBarbarian

アセンブリ中にPARENT_LASTのWARを事前設定する方法はありません。クラスローディングポリシーはデプロイ時に指定されるため、設定方法はアプリケーションのデプロイ方法によって異なります。

スクリプトを使用してポリシーを変更するのは簡単です。スクリプトはwsadminツールを使用して実行されます。以下のJythonスニペットがその役割を果たします。 Jaclに簡単に変換できます。

dep = AdminConfig.getid('/Deployment:app_name/')
depObject = AdminConfig.showAttribute(dep, 'deployedObject')
classldr = AdminConfig.showAttribute(depObject, 'classloader')
AdminConfig.modify(classldr, [['mode', 'PARENT_LAST']])
AdminConfig.save()

Websphereは、deployment.xmlファイルを使用して、earファイル内の各モジュールのデプロイメント設定を管理します。次のパスで、deployment.xmlのクラスローダー設定を変更できます。

/MyTestEAR/META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/deployment.xml

Mavenでそれを構成する方法がわかりません。

1
pawinder gupta