Mise à jour des applications installées à l'aide de l'outil de scriptage wsadmin

Utilisation de l'outil wsadmin et du scriptage pour mettre à jour les applications installées sur un serveur d'applications.

Pourquoi et quand exécuter cette tâche

Les commandes update et updateinteractive prennent toutes deux en charge un ensemble d'options. Vous pouvez également obtenir une liste des options prises en charge pour un fichier EAR (Enterprise Archive) à l'aide de la commande options. Par exemple :

Avec Jacl :
$AdminApp options
A l'aide de Jython :
print AdminApp.options()

Vous pouvez définir ou mettre à jour une valeur de configuration en utilisant les options en mode de traitement par lot. Pour identifier l'objet de configuration à définir ou mettre à jour, les valeurs des zones en lecture seule sont utilisées pour rechercher l'objet de configuration correspondant. Toutes les valeurs des zones en lecture seule doivent correspondre à un objet de configuration existant pour que la commande aboutisse.

Avertissement : Si une application est en cours d'exécution, la modification de ses paramètres entraîne son redémarrage. Sur les serveurs autonomes, l'application est redémarrée une fois les modifications sauvegardées. Sur les produits utilisant des serveurs multiples, l'application redémarre une fois les modifications sauvegardées et les fichiers sont synchronisés sur le noeud où l'application est installée. Pour contrôler la survenue de la synchronisation sur des produits utilisant plusieurs serveurs, désélectionnez Synchroniser les modifications avec les noeuds sur la page Préférences de la console.

Effectuez les opérations ci-après pour mettre à jour une application.

Procédure

  1. Démarrez l'outil de scriptage wsadmin.
  2. Mettez à jour l'application installée en utilisant l'une des options suivantes.
    • La commande suivante met à jour un fichier unique dans une application déployée :
      • Avec Jacl :

        [AIX Solaris HP-UX Linux Windows]
        $AdminApp update app1 file {-operation update -contents c:/apps/app1/my.xml 
         -contenturi app1.jar/my.xml}
        [z/OS]
        $AdminApp update app1 file {-operation update -contents /apps/app1/my.xml 
         -contenturi app1.jar/my.xml}
        [IBM i]
        $AdminApp update app1 file {-operation update -contents 
         /home/myProfile/apps/app1/my.xml -contenturi app1.jar/my.xml}
      • Avec la chaîne Jython :

        [AIX Solaris HP-UX Linux Windows]
        AdminApp.update('app1', 'file', '[-operation update -contents c:/apps/app1/my.xml  
         -contenturi app1.jar/my.xml]')
        [z/OS]
        AdminApp.update('app1', 'file', '[-operation update -contents /apps/app1/my.xml  
         -contenturi app1.jar/my.xml]')
        [IBM i]
        AdminApp.update('app1', 'file', '[-operation update -contents /home/myProfile/ 
         apps/app1/my.xml -contenturi app1.jar/my.xml]')
      • Avec la liste Jython :

        [AIX Solaris HP-UX Linux Windows]
        AdminApp.update('app1', 'file', ['-operation', 'update', '-contents', 
         'c:/apps/app1/my.xml', '-contenturi', 'app1.jar/my.xml'])
        [z/OS]
        AdminApp.update('app1', 'file', ['-operation', 'update', '-contents', 
         '/apps/app1/my.xml',  '-contenturi', 'app1.jar/my.xml'])
        [IBM i]
        AdminApp.update('app1', 'file', ['-operation', 'update', '-contents', 
         '/home/myProfile/apps/app1/my.xml', '-contenturi', 'app1.jar/my.xml'])
      Tableau 1. Eléments de la commande update file. Exécutez la commande update pour modifier un fichier d'application installé.
      Elément Définition
      $ est un opérateur Jacl permettant de remplacer un nom de variable par sa valeur
      AdminApp est un objet prenant en charge la gestion des objets application
      update est une commande AdminApp
      app1 est le nom de l'application à mettre à jour
      file est la valeur définie pour le type de contenu
      operation est une option de la commande update
      update est la valeur de l'option operation
      contents est une option de la commande update
      /apps/app1/my.xml est la valeur de l'option contents
      contenturi est une option de la commande update
      app1.jar/my.xml est la valeur de l'option contenturi
    • La commande suivante ajoute un module à l'application déployée, si ce module n'existe pas. Sinon, le module existant est mis à jour.
      • A l'aide de Jacl :

        [AIX Solaris HP-UX Linux Windows]
        $AdminApp update app1 modulefile {-operation addupdate -contents 
         c:/apps/app1/Increment.jar -contenturi Increment.jar -nodeployejb
         -BindJndiForEJBNonMessageBinding {{"Increment EJB module" Increment Increment.jar,META-INF/ejb-jar.xml Inc}}}
        [z/OS]
        $AdminApp update app1 modulefile {-operation addupdate -contents 
         /apps/app1/Increment.jar -contenturi Increment.jar -nodeployejb
         -BindJndiForEJBNonMessageBinding {{"Increment EJB module" Increment Increment.jar,META-INF/ejb-jar.xml Inc}}}
        [IBM i]
        $AdminApp update app1 modulefile {-operation addupdate -contents  
         /home/myProfile/apps/app1/Increment.jar -contenturi Increment.jar -nodeployejb
          -BindJndiForEJBNonMessageBinding {{"Increment EJB module" Increment Increment.jar,META-INF/ejb-jar.xml Inc}}}
      • Avec la chaîne Jython :

        [AIX Solaris HP-UX Linux Windows]
        AdminApp.update('app1', 'modulefile', '[-operation addupdate -contents 
         c:/apps/app1/Increment.jar -contenturi Increment.jar -nodeployejb
         -BindJndiForEJBNonMessageBinding [["Increment EJB module" Increment Increment.jar,META-INF/ejb-jar.xml Inc]]]')
        [z/OS]
        AdminApp.update('app1', 'modulefile', '[-operation addupdate -contents 
         /apps/app1/Increment.jar -contenturi Increment.jar -nodeployejb
         -BindJndiForEJBNonMessageBinding [["Increment EJB module" Increment Increment.jar,META-INF/ejb-jar.xml Inc]]]')
        [IBM i]
        AdminApp.update('app1', 'modulefile', '[-operation addupdate -contents 
         /home/myProfile/apps/app1/Increment.jar -contenturi Increment.jar -nodeployejb
         -BindJndiForEJBNonMessageBinding [["Increment EJB module" Increment Increment.jar,META-INF/ejb-jar.xml Inc]]]')
      • Avec la liste Jython :

        [AIX Solaris HP-UX Linux Windows]
        bindJndiForEJBValue = [["Increment EJB module", "Increment", "Increment.jar,META-INF/ejb-jar.xml", 
        "Inc"]]  AdminApp.update('app1', 'modulefile', ['-operation', 'addupdate', '-contents', 
         'c:/apps/app1/Increment.jar', '-contenturi','Increment.jar' '-nodeployejb',
         `-BindJndiForEJBNonMessageBinding', bindJndiForEJBValue])
        [z/OS]
        bindJndiForEJBValue = [["Increment EJB module", "Increment", "Increment.jar,META-INF/ejb-jar.xml", 
        "Inc"]]  AdminApp.update('app1', 'modulefile', ['-operation', 'addupdate', '-contents', 
         '/apps/app1/Increment.jar', '-contenturi','Increment.jar' '-nodeployejb', `-BindJndiForEJBNonMessageBinding', 
         bindJndiForEJBValue])
        [IBM i]
        bindJndiForEJBValue = [["Increment EJB module", "Increment", "Increment.jar,META-INF/ejb-jar.xml", 
        "Inc"]]  AdminApp.update('app1', 'modulefile', ['-operation', 'addupdate', '-contents', 
         '/home/myProfile/apps/app1/Increment.jar', '-contenturi','Increment.jar'
         '-nodeployejb', `-BindJndiForEJBNonMessageBinding', bindJndiForEJBValue])
      Tableau 2. Eléments de la commande update modulefile. Exécutez la commande update pour modifier un fichier module installé.
      Elément Définition
      $ est un opérateur Jacl permettant de remplacer un nom de variable par sa valeur
      AdminApp est un objet prenant en charge la gestion des objets application
      update est une commande AdminApp
      app1 est le nom de l'application à mettre à jour
      modulefile est la valeur définie pour le type de contenu
      operation est une option de la commande update
      addupdate est la valeur de l'option operation
      contents est une option de la commande update
      /apps/app1/Increment.jar est la valeur de l'option contents
      contenturi est une option de la commande update
      Increment.jar est la valeur de l'option contenturi
      nodeployejb est une option de la commande update
      BindJndiForEJBNonMessageBinding est une option de la commande update
      "Increment EJB module" Increment Increment.jar,META-INF/ejb-jar.xml Inc est la valeur de l'option BindJndiForEJBNonMessageBinding. La valeur de cette option est définie dans votre configuration d'applications. Pour déterminer la valeur de cette option, utilisez la commande Jython ou Jacl suivante :
      Avec Jython :
      AdminApp.view('myAppName')
      Avec Jacl :
      $AdminApp view myAppName
      bindJndiForEJBValue est une variable Jython contenant la valeur de l'option BindJndiForEJBNonMessageBinding
    • La commande suivante utilise une application partielle pour mettre à jour une application déployée :
      • A l'aide de Jacl :

        [AIX Solaris HP-UX Linux Windows]
        $AdminApp update app1 partialapp {-contents c:/apps/app1/app1Partial.zip}
        [z/OS]
        $AdminApp update app1 partialapp {-contents /apps/app1/app1Partial.zip}
        [IBM i]
        $AdminApp update app1 partialapp {-contents /home/myProfile/apps/app1/app1Partial.zip}
      • Avec la chaîne Jython :

        [AIX Solaris HP-UX Linux Windows]
        AdminApp.update('app1', 'partialapp', '[-contents 
         c:/apps/app1/app1Partial.zip]')
        [z/OS]
        AdminApp.update('app1', 'partialapp', '[-contents /apps/app1/app1Partial.zip]')
        [IBM i]
        AdminApp.update('app1', 'partialapp', '[-contents
         /home/myProfile/apps/app1/app1Partial.zip]')
      • Avec la liste Jython :

        [AIX Solaris HP-UX Linux Windows]
        AdminApp.update('app1', 'partialapp', ['-contents', 
         'c:/apps/app1/app1Partial.zip'])
        [z/OS]
        AdminApp.update('app1', 'partialapp', ['-contents', 
         '/apps/app1/app1Partial.zip'])
        [IBM i]
        AdminApp.update('app1', 'partialapp', ['-contents', 
         '/home/myProfile/apps/app1/app1Partial.zip'])
      Tableau 3. Eléments de la commande update partialapp. Exécutez la commande update pour modifier une partie d'une application installée.
      Elément Définition
      $ est un opérateur Jacl permettant de remplacer un nom de variable par sa valeur
      AdminApp est un objet prenant en charge la gestion des objets application
      update est une commande AdminApp
      app1 est le nom de l'application à mettre à jour
      partialapp est la valeur définie pour le type de contenu
      contents est une option de la commande update
      /apps/app1/app1Partial.zip est la valeur de l'option contents
    • Mettez à jour la totalité de l'application déployée.

      Pour utiliser le port d'écoute existant au lieu d'utiliser ou de créer une spécification d'activation, déterminez si la version JAR d'EJB est inférieure à 2.1. Le système crée et utilise automatiquement une spécification d'activation que vous spécifiez à l'aide de l'option -usedefaultbindings pour déployer une application. Si une spécification d'activation existe, le système ignore le port d'écoute, mais utilise la spécification d'activation. Pour déployer une application avec une version JAR d'EJB supérieure ou égale à 2.1 utilisant les ports d'écoute définis au lieu d'une nouvelle spécification d'activation, attribuez la valeur true à la propriété système com.ibm.websphere.management.application.dfltbndng.mdb.preferexisting dans le fichier wsadmin.properties figurant dans le répertoire des propriétés du profil concerné.

      • A l'aide de Jacl :

        [AIX Solaris HP-UX Linux Windows]
        $AdminApp update app1 app {-operation update -contents c:/apps/app1/newApp1.jar 
         -usedefaultbindings -nodeployejb -BindJndiForEJBNonMessageBinding {{"Increment EJB module" Increment 
         Increment.jar,META-INF/ejb-jar.xml Inc}}}
        [z/OS]
        $AdminApp update app1 app {-operation update -contents /apps/app1/newApp1.jar 
         -usedefaultbindings -nodeployejb -BindJndiForEJBNonMessageBinding {{"Increment EJB module" Increment 
         Increment.jar,META-INF/ejb-jar.xml Inc}}}
        [IBM i]
        $AdminApp update app1 app {-operation update -contents 
         /home/myProfile/apps/app1/newApp1.jar -usedefaultbindings -nodeployejb -BindJndiForEJBNonMessageBinding {{"Increment EJB module" 
         Increment Increment.jar,META-INF/ejb-jar.xml Inc}}}
      • Avec la chaîne Jython :

        [AIX Solaris HP-UX Linux Windows]
        AdminApp.update('app1', 'app', '[-operation update -contents 
         c:/apps/app1/newApp1.ear  -usedefaultbindings -nodeployejb -BindJndiForEJBNonMessageBinding [["Increment EJB module" Increment 
         Increment.jar,META-INF/ejb-jar.xml Inc]]]')
        [z/OS]
        AdminApp.update('app1', 'app', '[-operation update -contents 
         /apps/app1/newApp1.ear -usedefaultbindings -nodeployejb -BindJndiForEJBNonMessageBinding [["Increment EJB module" Increment 
         Increment.jar,META-INF/ejb-jar.xml Inc]]]')
        [IBM i]
        AdminApp.update('app1', 'app', '[-operation update -contents 
         /home/myProfile/apps/app1/ newApp1.ear -usedefaultbindings -nodeployejb -BindJndiForEJBNonMessageBinding [["Increment EJB module" 
         Increment Increment.jar,META-INF/ejb-jar.xml Inc]]]')
      • Avec la liste Jython :

        [AIX Solaris HP-UX Linux Windows]
        bindJndiForEJBValue = [["Increment EJB module", "Increment", "Increment.jar,META-INF/ejb-jar.xml", 
        "Inc"]]  AdminApp.update('app1', 'app', ['-operation', 'update', '-contents', 
         'c:/apps/app1/NewApp1.ear', '-usedefaultbindings', '-nodeployejb', `-BindJndiForEJBNonMessageBinding', bindJndiForEJBValue]) 
         
        [z/OS]
        bindJndiForEJBValue = [["Increment EJB module", "Increment", "Increment.jar,META-INF/ejb-jar.xml", 
        "Inc"]]  AdminApp.update('app1', 'app', ['-operation', 'update', '-contents', 
         '/apps/app1/NewApp1.ear', '-usedefaultbindings', '-nodeployejb', `-BindJndiForEJBNonMessageBinding', bindJndiForEJBValue]) 
        [IBM i]
        bindJndiForEJBValue = [["Increment EJB module", "Increment", "Increment.jar,META-INF/ejb-jar.xml", 
        "Inc"]]  AdminApp.update('app1', 'app', ['-operation', 'update', '-contents', 
         '/apps/app1/NewApp1.ear', '-usedefaultbindings', '-nodeployejb', `-BindJndiForEJBNonMessageBinding', bindJndiForEJBValue]) 
      Tableau 4. Eléments de la commande update app. Exécutez la commande update pour modifier une application installée.
      Elément Définition
      $ est un opérateur Jacl permettant de remplacer un nom de variable par sa valeur
      AdminApp est un objet prenant en charge la gestion des objets application
      update est une commande AdminApp
      app1 est le nom de l'application à mettre à jour
      app est la valeur définie pour le type de contenu
      operation est une option de la commande update
      update est la valeur de l'option operation
      contents est une option de la commande update
      /apps/app1/newApp1.ear est la valeur de l'option contents
      usedefaultbindings est une option de la commande update
      nodeployejb est une option de la commande update
      BindJndiForEJBNonMessageBinding est une option de la commande update
      "Increment EJB module" Increment Increment.jar,META-INF/ejb-jar.xml Inc est la valeur de l'option BindJndiForEJBNonMessageBinding. La valeur de cette option est définie dans votre configuration d'applications. Pour déterminer la valeur de cette option, utilisez la commande Jython ou Jacl suivante :
      Avec Jython :
      AdminApp.view('myAppName')
      Avec Jacl :
      $AdminApp view myAppName
      bindJndiForEJBValue est une variable Jython contenant la valeur de l'option BindJndiForEJBNonMessageBinding
  3. Sauvegardez les modifications de configuration.
    Entrez l'exemple de commande suivante pour sauvegarder les modifications de configuration :
    AdminConfig.save()
  4. Dans un environnement de déploiement en réseau uniquement, synchronisez le noeud.
    Utilisez les scripts syncActiveNode ou syncNode de la bibliothèque de scripts AdminNodeManagement pour propager les modifications de configuration sur un ou plusieurs noeudsµµ.
    • Utilisez le script syncActiveNodes pour propager les modifications sur chacun des noeuds dans la cellule, comme dans l'exemple suivant :
      AdminNodeManagement.syncActiveNodes()
    • Utilisez le script syncNode pour propager les modifications sur un noeud spécifique, comme dans l'exemple suivant :
      AdminNodeManagement.syncNode("myNode")

Que faire ensuite

Un message de réussite est renvoyé si le système met correctement à jour l'application. Toutefois, les étapes peuvent aboutir avant que le système n'extraie chaque fichier binaire. Dans un environnement de déploiement réseau, par exemple, des fichiers binaires sont extraits après la fin de la synchronisation du nœud. Vous ne pouvez pas démarrer l'application tant que le système n'a pas extrait tous les fichiers binaires. Utilisez les commandes isAppReady et getDeployStatus de l'objet AdminApp pour vérifier que le système a extrait les fichiers avant de démarrer l'application.

La commande isAppReady renvoie la valeur true si le système est prêt à démarrer l'application, sinon elle renvoie la valeur false. Si l'application ne peut pas être démarrée, le système peut développer les fichiers binaires d'applications. Un script qui met à jour une application puis la démarre crée en général une boucle autour d'un appel à isAppReady jusqu'à recevoir une valeur true avant de tenter de lancer l'application, comme le montre l'exemple suivant :

Avec Jython :
import time
result = AdminApp.isAppReady('application1')
while (result == "false"):
   ### Attendre 5 secondes avant de revérifier
   time.sleep(5)
   result = AdminApp.isAppReady('application1')
print("Starting application...")
A l'aide de Jacl :
set result [$AdminApp isAppReady application1]
while {$result == "false"} {
   ### Attendre 5 secondes avant de revérifier
   after 5000
   set result [$AdminApp isAppReady application1]
}
puts "Démarrage de l'application..."
La commande getDeployStatus permet d'afficher des informations supplémentaires sur l'état du développement des fichiers binaires, comme dans l'exemple suivant :
AdminApp.getDeployStatus('app1')

L'exécution de la commande getDeployStatus, où app1 correspond à DefaultApplication, permet d'afficher des informations d'état sur DefaultApplication, qui se présentent comme suit :

ADMA5071I : La vérification de l'état de la distribution a commencé pour l'application DefaultApplication.
WebSphere:cell=myCell01,node=myNode01,distribution=unknown,expansion=unknown
ADMA5011I : Le nettoyage du répertoire temp pour l'application DefaultApplication est terminé.
ADMA5072I : Vérification de l'état de la distribution terminée pour l'application DefaultApplication.
WebSphere:cell=myCell01,node=myNode01,distribution=unknown,expansion=unknown

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_updatingapp
Nom du fichier : txml_updatingapp.html