Puis-je définir la stratégie de chargeur de classe pour WebSphere dans le fichier ibm-web-bnd.xmi?

StackOverflow https://stackoverflow.com/questions/813202

  •  03-07-2019
  •  | 
  •  

Question

J'ai une application JEE qui s'exécute sur WAS 6. Le paramètre de commande de chargeur de classe doit être défini sur & "Classes chargées avec le chargeur de classe d'application en premier &" ;, et le jeu d'options de stratégie de chargeur de classe WAR. vers " chargeur de classe unique pour l'application ".

Est-il possible de spécifier ces options dans le fichier EAR, que ce soit dans le fichier ibm-web-bnd.xmi ou dans un autre fichier, afin que l'administrateur n'ait pas besoin de modifier ces paramètres manuellement?

Etant donné que l'application est déployée via un script automatisé et que le responsable du déploiement est hors site, et pour d'autres raisons politiques, cela aiderait grandement!

Était-ce utile?

La solution

Grâce à la réponse de @Matthew Murdoch, j'ai pu trouver une solution. La voici au cas où cela aiderait quelqu'un d'autre.

J'ai créé un fichier deployment.xml comme celui-ci:

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

Assurez-vous de changer le nom de vos fichiers WAR afin qu'ils correspondent (le mien s'appelle AGS.war).

J'ai également modifié les nombres dans les attributs xmi:id, pour être sûr qu'ils sont uniques, bien que je ne sois pas sûr que ce soit vraiment important qu'ils soient uniques dans toutes les applications.

Ensuite, je mets le fichier deployment.xml à la racine de mon fichier EAR, via 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>

Autres conseils

Modifier (2): Le WebSphere Application Server Toolkit (AST) est un outil que vous pouvez utiliser pour améliorer un fichier EAR avec ces informations (voir ci-dessous). Exemple: la section "Configurer un EAR amélioré" dans ce document ). / p>

Modifier (1): ce message suggère que les "Classes chargées en premier avec le chargeur de classes de l'application" (paramètre PARENT_LAST) puissent être définies dans le fichier deployment.xml dans le fichier EAR.

Si vous avez le contrôle sur les scripts de déploiement automatisé, vous pouvez le faire. Ci-dessous, quelques exemples de code jython wsadmin permettant de définir l’ordre du chargeur de classes du module Web sur 'Classes chargées en premier avec le chargeur de classes d’application' (le paramètre s’appelle PARENT_LAST et correspond à ce qu’il avait été nommé dans les versions précédentes de la console d’administration ...).

Exemple 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

Découvrez ce lien. Il existe différentes manières de définir une stratégie de chargeur de classe à l'aide de Jython en fonction de la version de votre serveur: http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Frxml_7libapp4.ht

Semblable à la réponse de pkaeding, j’ai découvert ce qui suit, non spécifique à un .war particulier, mais utile lorsqu’il s’applique à la valeur .war par défaut du fichier .ear. (Les fichiers .ear contenant un fichier .war ne contiennent que ce fichier .war. Il n'est donc pas nécessaire de nommer le fichier .war.) Cette approche peut s'avérer utile dans les cas où vous devrez peut-être renommer le fichier .war. projetez plus tard pour une raison quelconque, vous évitant ainsi de vous inquiéter de la mise à jour du fichier deployment.xml. J'ai trouvé le fichier META-INF enfoui dans un chemin de répertoire de références de cellules; ne sais pas si c'est bien comme indiqué lorsque le fichier est placé au niveau du répertoire <=> et pas plus profond.

Dans mon cas particulier, j'ai trouvé <=> dans mon projet .ear à l'adresse

.

< racine_projet > \ META-INF \ ibmconfig \ cell \ defaultCell \ applications \ defaultApp \ deployments \ defaultApp \

Le contenu du fichier ressemble beaucoup à:

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

La ligne:

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

initialement lu:

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

Notez qu'aucune référence à aucun .war n'est faite. Comme mentionné par Pkaeding, vous ne devez pas vous attendre à ce que les différents numéros d'identification soient les mêmes pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top