Installierte Anwendungen mit dem Scripting-Tool "wsadmin" aktualisieren

Mit dem Tool wsadmin und Scripting können Sie installierte Anwendungen in einem Anwendungsserver aktualisieren.

Informationen zu diesem Vorgang

Der Befehl update und der Befehl updateinteractive unterstützen jeweils eine Gruppe von Optionen. Sie können eine Liste mit unterstützten Optionen für eine EAR-Datei (Enterprise Archive) auch mit dem Befehl options abrufen. Beispiel:

Mit Jacl:
$AdminApp options
Mit Jython:
print AdminApp.options()

Sie können einen Konfigurationswert mit Optionen im Stapelbetrieb definieren oder aktualisieren. Anhand von Werten schreibgeschützter Felder wird festgestellt, welches Konfigurationsobjekt definiert oder aktualisiert werden soll. Alle Werte schreibgeschützter Felder müssen mit einem vorhandenen Konfigurationsobjekt übereinstimmen, da sonst der Befehl fehlschlägt.

Achtung: Wenn eine Anwendung aktiv ist, bewirkt die Änderung einer Anwendungseinstellung einen Neustart der Anwendung. In eigenständigen Servern wird die Anwendung nach dem Speichern der Änderung erneut gestartet. In Mehrserverprodukten wird die Anwendung erneut gestartet, wenn Sie die Änderung speichern und die Dateien auf dem Knoten, auf dem die Anwendung installiert ist, synchronisieren. Um zu steuern, wann die Synchronisation in Mehrserverprodukten stattfindet, wählen Sie auf der Seite mit den Konsoleneinstellungen die Option Änderungen mit Knoten synchronisieren ab.

Führen Sie die folgenden Schritte aus, um die Anwendung zu aktualisieren:

Vorgehensweise

  1. Starten Sie das wsadmin-Scripting-Tool.
  2. Aktualisieren Sie die installierte Anwendung mit einer der folgenden Optionen.
    • Mit dem folgenden Befehl wird eine einzelne Datei in einer implementierten Anwendung aktualisiert:
      • Mit 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}
      • Mit Jython (String):

        [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]')
      • Mit Jython (List):

        [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'])
      Tabelle 1. Elemente des Befehls "update file". Führen Sie den Befehl "update" aus, um eine installierte Anwendungsdatei zu ändern.
      Element Definition
      $ Ein Jacl-Operator, der einen Variablennamen durch den Wert der Variablen ersetzt.
      AdminApp Ein Objekt, das die Verwaltung von Anwendungsobjekten unterstützt
      update AdminApp-Befehl
      app1 Name der zu aktualisierenden Anwendung
      file Wert des Objekttyps
      operation Option des Befehls update
      update Wert der Option operation
      contents Option des Befehls update
      /apps/app1/my.xml Wert der Option contents
      contenturi Option des Befehls update
      app1.jar/my.xml Wert der Option contenturi
    • Mit dem folgenden Befehl wird ein Modul zur implementierten Anwendung hinzugefügt, wenn das Modul nicht vorhanden ist. Andernfalls wird das vorhandene Modul aktualisiert.
      • Mit 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}}}
      • Mit Jython (String):

        [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]]]')
      • Mit Jython (List):

        [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])
      Tabelle 2. Elemente des Befehls "update modulefile". Führen Sie den Befehl "update" aus, um ein installierte Moduldatei zu ändern.
      Element Definition
      $ Ein Jacl-Operator, der einen Variablennamen durch den Wert der Variablen ersetzt.
      AdminApp Ein Objekt, das die Verwaltung von Anwendungsobjekten unterstützt
      update AdminApp-Befehl
      app1 Name der zu aktualisierenden Anwendung
      modulefile Wert des Objekttyps
      operation Option des Befehls update
      addupdate Wert der Option operation
      contents Option des Befehls update
      /apps/app1/Increment.jar Wert der Option contents
      contenturi Option des Befehls update
      Increment.jar Wert der Option contenturi
      nodeployejb Option des Befehls update
      BindJndiForEJBNonMessageBinding Option des Befehls update
      "Increment EJB module" Increment Increment.jar,META-INF/ejb-jar.xml Inc Der Wert der Option "BindJndiForEJBNonMessageBinding". Der Wert dieser Option ist in Ihrer Anwendungskonfiguration definiert. Verwenden Sie den folgenden Jython- bzw. Jacl-Befehl, um den Wert dieser Option zu bestimmen:
      Mit Jython:
      AdminApp.view('myAppName')
      Mit Jacl:
      $AdminApp view myAppName
      bindJndiForEJBValue Jython-Variable, die den Wert der Option BindJndiForEJBNonMessageBinding enthält
    • Der folgende Befehl verwendet einen Teil einer Anwendung, um eine implementierte Anwendung zu aktualisieren:
      • Mit 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}
      • Mit Jython (String):

        [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]')
      • Mit Jython (List):

        [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'])
      Tabelle 3. Elemente des Befehls "update partialapp". Führen Sie den Befehl "update" aus, um einen Teil einer installierten Anwendung zu ändern.
      Element Definition
      $ Ein Jacl-Operator, der einen Variablennamen durch den Wert der Variablen ersetzt.
      AdminApp Ein Objekt, das die Verwaltung von Anwendungsobjekten unterstützt
      update AdminApp-Befehl
      app1 Name der zu aktualisierenden Anwendung
      partialapp Wert des Objekttyps
      contents Option des Befehls update
      /apps/app1/app1Partial.zip Wert der Option contents
    • Aktualisieren Sie die gesamte implementierte Anwendung.

      Wenn Sie den vorhandenen Listener-Port verwenden möchten, anstatt eine Aktivierungsspezifikation zu verwenden oder eine neue zu erstellen, müssen Sie feststellen, ob die EJB-JAR-Version älter ist als Version 2.1. Das System erstellt und verwendet automatisch eine Aktivierungsspezifikation, wenn Sie die Option "-usedefaultbindings" zum Implementieren einer Anwendung angeben. Wenn eine Aktivierungsspezifikation vorhanden ist, ignoriert das System den Listener-Port und verwendet stattdessen die Aktivierungsspezifikation. Wenn Sie eine Anwendung mit einer EJB-JAR-Version größer-gleich 2.1 über die definierten Listener-Ports und nicht über eine neue Aktivierungsspezifikation implementieren möchten, müssen Sie die Systemeigenschaft "com.ibm.websphere.management.application.dfltbndng.mdb.preferexisting" in der Datei wsadmin.properties im Verzeichnis "properties" des gewünschten Profils auf true setzen.

      • Mit 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}}}
      • Mit Jython (String):

        [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]]]')
      • Mit Jython (List):

        [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]) 
      Tabelle 4. Elemente des Befehls "update app". Führen Sie den Befehl "update" aus, um eine installierte Anwendung zu ändern.
      Element Definition
      $ Ein Jacl-Operator, der einen Variablennamen durch den Wert der Variablen ersetzt.
      AdminApp Ein Objekt, das die Verwaltung von Anwendungsobjekten unterstützt
      update AdminApp-Befehl
      app1 Name der zu aktualisierenden Anwendung
      app Wert des Objekttyps
      operation Option des Befehls update
      update Wert der Option operation
      contents Option des Befehls update
      /apps/app1/newApp1.ear Wert der Option contents
      usedefaultbindings Option des Befehls update
      nodeployejb Option des Befehls update
      BindJndiForEJBNonMessageBinding Option des Befehls update
      "Increment EJB module" Increment Increment.jar,META-INF/ejb-jar.xml Inc Der Wert der Option "BindJndiForEJBNonMessageBinding". Der Wert dieser Option ist in Ihrer Anwendungskonfiguration definiert. Verwenden Sie den folgenden Jython- bzw. Jacl-Befehl, um den Wert dieser Option zu bestimmen:
      Mit Jython:
      AdminApp.view('myAppName')
      Mit Jacl:
      $AdminApp view myAppName
      bindJndiForEJBValue Jython-Variable, die den Wert der Option BindJndiForEJBNonMessageBinding enthält
  3. Speichern Sie die Konfigurationsänderungen.
    Verwenden Sie den folgenden Beispielbefehl, um Ihre Konfigurationsänderungen zu speichern:
    AdminConfig.save()
  4. Synchronisieren Sie den Knoten nur in einer Network Deployment-Umgebung.
    Verwenden Sie das Script "syncActiveNode" oder "syncNode" aus der Scriptbibliothek "AdminNodeManagement", um die Konfigurationsänderungen an Knoten weiterzugeben.
    • Verwenden Sie das Script "syncActiveNodes", wie im folgenden Beispiel gezeigt, um die Änderungen an jeden Knoten in der Zelle weiterzugeben:
      AdminNodeManagement.syncActiveNodes()
    • Verwenden Sie das Script "syncNode", wie im folgenden Beispiel gezeigt, um die Änderungen an einen bestimmten Knoten weiterzugeben:
      AdminNodeManagement.syncNode("myNode")

Nächste Schritte

Nach der Ausführung der in dieser Task beschriebenen Schritte wird eine Erfolgsnachricht zurückgegeben, wenn das System die Anwendung erfolgreich aktualisiert hat. Die Schritte können jedoch auch erfolgreich ausgeführt werden, bevor das System jede Binärdatei extrahiert. In einer Network Deployment-Umgebung werden Binärdateien beispielsweise erst nach Abschluss der Knotensynchronisation extrahiert. Sie können die Anwendung erst starten, nachdem das System alle Binärdateien extrahiert hat. Verwenden Sie vor dem Starten der Anwendung die Befehle isAppReady und getDeployStatus für das Objekt "AdminApp", um zu prüfen, ob das System die Binärdateien extrahiert hat.

Der Befehl isAppReady gibt den Wert true zurück, wenn das System für das Starten der Anwendung bereit ist, und den Wert false. wenn das System noch nicht bereit ist, die Anwendung zu starten. Wenn das System nicht zum Starten der Anwendung bereit ist, dekomprimiert das System die Anwendungsbinärdateien möglicherweise noch. Ein Script, das eine Anwendung aktualisiert und dann startet, wiederholt einen Aufruf von "isAppReady" normalerweise so lange, bis der Wert "true" zurückgegeben wird, bevor es versucht, die Anwendung zu starten. Dies wird im folgenden Beispiel veranschaulicht:

Mit Jython:
import time
result = AdminApp.isAppReady('application1')
while (result == "false"):
   ### 5 Minuten bis zur nächsten Überprüfung warten
   time.sleep(5)
   result = AdminApp.isAppReady('application1')
print("Starting application...")
Mit Jacl:
set result [$AdminApp isAppReady application1]
while {$result == "false"} {
   ### 5 Minuten bis zur nächsten Überprüfung warten
   after 5000
   set result [$AdminApp isAppReady application1]
}
puts "Starting application..."
Verwenden Sie den Befehl getDeployStatus, wie im folgenden Beispiel gezeigt, um weitere Informationen zum Dekomprimierungsstatus der Binärdateien anzuzeigen:
AdminApp.getDeployStatus('app1')

Wenn Sie den Befehl getDeployStatus ausführen und app1 gleich DefaultApplication ist, werden Statusinformationen ähnlich den folgenden zu DefaultApplication angezeigt:

ADMA5071I: Die Überprüfung des Verteilungsstatus für die Anwendung DefaultApplication wurde gestartet.
WebSphere:cell=myCell01,node=myNode01,distribution=unknown,expansion=unknown
ADMA5011I: Die Bereinigung des temporären Verzeichnisses für die Anwendung DefaultApplication ist abgeschlossen.
ADMA5072I: Die Überprüfung des Verteilungsstatus für die Anwendung DefaultApplication.
WebSphere:cell=myCell01,node=myNode01,distribution=unknown,expansion=unknown

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_updatingapp
Dateiname:txml_updatingapp.html