Frage

Ich habe eine JEE-Anwendung, die ausgeführt wird, WAR 6.Es muss in der class-loader, um die Einstellung zu "Klassen geladen with application class loader first", und der KRIEG ClassLoader Politik option "Einzelnes Klassenladeprogramm für Anwendung".

Ist es möglich, geben Sie diese Optionen in der EAR-Datei, ob in der ibm-web-bnd.xmi-Datei oder eine andere Datei, so dass der admin braucht nicht zu ändern Sie diese Einstellung manuell ein?

Da die app bereitgestellt wird, der über ein automatisiertes Skript, und der Kerl, wer ist verantwortlich für die Bereitstellung ist die off-site, und auch einige andere politischen Gründen, würde dies sehr helfen!

War es hilfreich?

Lösung

Dank @Matthew Murdochs Antwort konnte ich mit einer Lösung kommen. Hier ist es, für den Fall, hilft es jemand anderes.

Ich habe ein deployment.xml wie folgt aus:

<?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>

Achten Sie darauf, den Namen Ihrer WAR-Datei (en) zu ändern, anzupassen (Mine heißt AGS.war).

Ich habe auch die Zahlen in den xmi:id Attribute, um sicherzustellen, dass sie einzigartig sind, obwohl ich nicht sicher bin es wirklich wichtig ist, dass sie über mehrere Anwendungen hinweg eindeutig sein.

Dann lege ich die Datei deployment.xml in der Wurzel meiner EAR-Datei, über ANT:

    <ear destfile="${artifactsDir}/${earName}.ear" appxml="${projectName}_EAR/application.xml">
        <fileset dir="${artifactsDir}" includes="${warName}.war"/>
        <fileset dir="${projectName}_EAR/" includes="deployment.xml"/>
    </ear>

Andere Tipps

Edit (2): Die WebSphere Application Server Toolkit (AST) ist ein Werkzeug, das Sie verwenden können, um verbessern eine EAR-Datei mit diesen Informationen (siehe zum Beispiel die 'Konfigurieren Sie eine Erweiterte OHR' Abschnitt dieses Dokument).

Edit (1): Dieser Beitrag deutet darauf hin, dass die 'Klassen geladen with application class loader first' (die PARENT_LAST-Einstellung) festgelegt werden können in die deployment.xml Datei in das OHR.

Wenn Sie haben die Kontrolle über das automatisierte deployment-Skripte dies getan werden kann.Unten finden Sie einige wsadmin jython-code für die Einstellung der web-Modul-Klassen-Ladeprogramm-Reihenfolge zu 'Klassen geladen with application class loader first" (interessanterweise wird die Einstellung genannt PARENT_LAST das ist, was es wurde als in früheren Versionen von der admin-Konsole,...).

wsadmin Beispiel (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

diesen Link Check out. Es gibt verschiedene Möglichkeiten Class Loader Politik Jython mit basierend auf dem Server-Version zu setzen - http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Frxml_7libapp4.html

Ähnlich wie die Antwort von pkaeding, entdeckte ich, wie folgt, nicht spezifisch für einen bestimmten .war mit Namen, aber nützlich, wenn auf die Anwendung, was die Standard-.war in der EAR-Datei ist. (EAR-Dateien mit einer WAR-Datei in ihnen nur, dass .war, die .war so Benennung in dem Eintrag nicht erforderlich ist.) Dieser Ansatz für Situationen gut sein kann, wo Sie müssen möglicherweise erneut Namen des .war später aus irgendeinem Grund Projekt, und so würden Sie nicht über die Aktualisierung der deployment.xml Datei zu kümmern. Ich fand die deployment.xml Datei in einer Zelle Referenzverzeichnis Spur begraben; weiß nicht, ob es in Ordnung, wie gezeigt, wenn die Datei auf Verzeichnisebene META-INF platziert ist und nicht tiefer.

In meinem speziellen Fall, fand ich deployment.xml in meinem .ear Projekt an:

\ META-INF \ ibmconfig \ cells \ defaultCell \ applications \ DefaultApp \ Implementierungen \ DefaultApp \

Der Inhalt der Datei sieht viel wie:

<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>

Die Zeile:

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

ursprünglich lesen:

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

Beachten Sie in jedem .war kein Bezug genommen wird. Wie pkaeding erwähnt, sollten Sie nicht die verschiedenen ID-Nummern erwarten das gleiche für Sie sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top