12

WAS 6で実行されるJEEアプリケーションがあります。クラスローダーの順序を「アプリケーションクラスローダーで最初にロードされるクラス」に設定し、WARクラスローダーポリシーオプションを「アプリケーションのシングルクラスローダー」に設定する必要があります。

ibm-web-bnd.xmiファイルまたはその他のファイルのいずれかでEARファイル内でこれらのオプションを指定できるので、管理者はこれらの設定を手動で変更する必要はありませんか?

アプリは自動化されたスクリプトを介してデプロイされ、デプロイを担当する人はオフサイトにいるため、またその他の政治的な理由から、これは非常に役立ちます。

4

4 に答える 4

10

@Matthew Murdoch の回答のおかげで、解決策を思いつくことができました。それが他の誰かを助ける場合に備えて、ここにあります。

次のような 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_1241112964096">
  <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1241112964096" startingWeight="1" warClassLoaderPolicy="SINGLE">
    <classloader xmi:id="Classloader_1241112964096" mode="PARENT_LAST"/>
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1241112964096" startingWeight="10000" uri="AGS.war">
      <classloader xmi:id="Classloader_1241112964097"/>
    </modules>
  </deployedObject>
</appdeployment:Deployment>

WARファイルの名前を一致するように変更してください(私の名前はAGS.warです)。

属性の数値も変更して、xmi:idそれらが一意であることを確認しましたが、アプリケーション間で一意であることが本当に重要かどうかはわかりません。

次に、ANT 経由で deployment.xml ファイルを EAR ファイルのルートに配置します。

    <ear destfile="${artifactsDir}/${earName}.ear" appxml="${projectName}_EAR/application.xml">
        <fileset dir="${artifactsDir}" includes="${warName}.war"/>
        <fileset dir="${projectName}_EAR/" includes="deployment.xml"/>
    </ear>
于 2009-05-04T17:32:02.227 に答える
8

編集(2): WebSphere Application Server Toolkit(AST)は、この情報を使用してEARファイルを拡張するために使用できるツールです(たとえば、この文書の「拡張EARの構成」セクションを参照してください)。

編集(1): この投稿は、「アプリケーションクラスローダーで最初にロードされたクラス」(PARENT_LAST設定)をEAR内のdeployment.xmlファイルで設定できることを示唆しています。

自動展開スクリプトを制御できる場合は、これを実行できます。以下は、Webモジュールクラスローダーの順序を「アプリケーションクラスローダーが最初にロードされたクラス」に設定するためのwsadmin jythonコードです(興味深いことに、この設定はPARENT_LASTと呼ばれ、以前のバージョンの管理コンソールでラベル付けされていたものです...)。

wsadminの例(jython):

def getWebModule(config, applicationName):
    webModules = config.list('WebModuleDeployment').
         split(system.getProperty('line.separator'))
    for webModule in webModules:
        if (webModule.find(applicationName) != -1):
            return webModule
    return None

applicationName = "<Your application name here>"

webModule = getWebModule(AdminConfig, applicationName)
if (webModule != None):
    AdminConfig.modify(webModule, "[[classloaderMode PARENT_LAST]]")
    AdminConfig.save()
else:
    print "Error: Cannot find web module for application: " + applicationName
于 2009-05-01T21:13:27.663 に答える
0

pkaeding からの回答と同様に、特定の .war に固有の名前ではなく、.ear ファイルのデフォルトの .war に適用する場合に役立つことを次のように発見しました。(1 つの .war ファイルを含む .ear ファイルにはその .war しかないため、エントリで .war に名前を付ける必要はありません。) この方法は、.war の名前を変更する必要がある場合に適しています。なんらかの理由で後でプロジェクトを作成するので、ファイルの更新について心配する必要はありませんdeployment.xmldeployment.xmlファイルがセル参照ディレクトリ トレイル内に埋もれているのを見つけました。ファイルがディレクトリレベルに配置されMETA-INF、それより深く配置されていない場合に示されているように、問題がないかどうかはわかりません。

私の特定のケースでは、次deployment.xmlの .ear プロジェクトで見つけました。

<project_root> \META-INF\ibmconfig\cells\defaultCell\applications\defaultApp\deployments\defaultApp\

ファイルの内容は次のようになります。

<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_1262775196208">
  <deployedObject xmi:type="appdeployment:ApplicationDeployment"
    xmi:id="ApplicationDeployment_1262775196208" startingWeight="10">
      <classloader xmi:id="Classloader_1262775196208" mode="PARENT_LAST" />
  </deployedObject>
</appdeployment:Deployment>

この線:

<classloader xmi:id="Classloader_1262775196208" mode="PARENT_LAST" />

もともと読んだ:

<classloader xmi:id="Classloader_1262775196208" mode="PARENT_FIRST" />

.war への参照が行われていないことに注意してください。pkaeding が述べたように、さまざまな ID 番号が同じであるとは思わないでください。

于 2014-10-02T17:51:01.907 に答える
0

このリンクをチェックしてください。Jython を使用してクラス・ローダー・ポリシーを設定するには、サーバーのバージョンに応じてさまざまな方法があります ( http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.express)。 doc%2Finfo%2Fexp%2Fae%2Frxml_7libapp4.html

于 2012-11-27T15:31:41.980 に答える