Anwendung durch Programmierung installieren

Sie können eine Anwendung mit der Administrationskonsole, dem Tool "wsadmin" oder durch Programmierung installieren. Dieses Beispiel veranschaulicht die Installation einer Anwendung durch Programmierung.

Vorbereitende Schritte

Für diese Task werden Grundkenntnisse in der Programmierung von MBeans vorausgesetzt. Weitere Informationen zur MBean-Programmierung finden Sie in der Dokumentation zu den MBean-Java™-APIs. Klicken Sie in diesem Information Center auf Referenz > MBean-Schnittstellen.

Bevor Sie eine Anwendung in WebSphere Application Server installieren können, müssen Sie die Anwendung installieren.

Informationen zu diesem Vorgang

Die AppDeploymentController-Instanz enthält Metadaten, die in XML-basierten Implementierungsdeskriptoren definiert sind, sowie Annotationen, die in Java-Klassen in der EAR-Dateingabedatei definiert sind.

Führen Sie die folgenden Tasks aus, um eine Anwendung durch Programmierung zu installieren.

Vorgehensweise

  1. Fügen Sie spezifische Bindungsinformationen für WebSphere Application Server in die EAR-Datei ein.
    1. Erstellen Sie den Controller, und füllen Sie die EAR-Datei mit den gewünschten Optionen.
    2. Führen Sie (optional) den Generator für Standardbindungen aus.
    3. Speichern und schließen Sie die EAR-Datei.
    4. Rufen Sie die Tabelle mit den gespeicherten Optionen ab, die an die MBean-API "installApplication" übergeben wird.
  2. Stellen Sie eine Verbindung zu WebSphere Application Server her.
  3. Erstellen Sie einen Proxy-Server für die Anwendungsverwaltung.
  4. Wenn Sie die Vorbereitungsphase (Füllen der EAR-Datei) überspringen, führen Sie die folgenden Aktionen aus:
    1. Erstellen Sie eine Optionstabelle, die an die MBean-API installApplication übergeben werden soll.
    2. Erstellen Sie eine Tabelle für die Modul/Server-Beziehungen, und fügen Sie die Tabelle der Optionstabelle hinzu.

      Lesen Sie die Informationen zur Klasse "com.ibm.websphere.management.application.AppManagement" in der Dokumentation zu den Anwendungsprogrammierschnittstellen, um sich mit den verschiedenen Optionen vertraut zu machen, die an die MBean-API "installApplication" übergeben werden können.

  5. Erstellen Sie den Benachrichtigungsfilter für den Empfang von Installationsereignissen.
  6. Fügen Sie den Listener hinzu.
  7. Installieren Sie die Anwendung.
  8. Warten Sie ein Zeitlimit ab, damit das Programm nicht beendet wird.
  9. Warten Sie auf JMX-Benachrichtigungen (Java Management Extensions), um sich vom Abschluss der Operation zu überzeugen.
  10. Entfernen Sie nach Abschluss der Installation den Listener, und beenden Sie das Programm.

Ergebnisse

Wenn der Code fehlerfrei ausgeführt wird, wurde die Anwendung installiert.

Beispiel

Das folgende Beispiel zeigt, wie Sie basierend auf den zuvor beschriebenen Schritten eine Anwendung installieren. Einige Anweisungen sind zur besseren Lesbarkeit auf mehrere Zeilen verteilt.

import java.lang.*;
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
import com.ibm.websphere.management.application.*;
import com.ibm.websphere.management.application.client.*;
import com.ibm.websphere.management.*;

import javax.management.*;

public class Install {

    public static void main(String[] args) {

        try {
  String earFile = "C:/test/test.ear";
  String appName = "MyApp";
             
// Vorbereitungsphase: Anfang
// In der Vorbereitungsphase der EAR-Datei die produktspezifischen
// Bindungsinformationen hinzufügen. Sie können beispielsweise
// JNDI-Namen für Enterprise-Beans oder virtuelle Hosts für Webmodule usw. angeben.

// Zuerst den Controller erstellen und dann der EAR-Datei die entsprechenden
// Optionen hinzufügen.
  Hashtable prefs = new Hashtable();
  prefs.put(AppConstants.APPDEPL_LOCALE, Locale.getDefault());

// Optional kann der Generator für Standardbindungen mit den folgenden
// Optionen ausgeführt werden.
// Die verfügbaren Optionen sind in der Java-Dokumentation zur Klasse AppDeploymentController
// beschrieben.
  Properties defaultBnd = new Properties();
  prefs.put (AppConstants.APPDEPL_DFLTBNDG, defaultBnd);
  defaultBnd.put (AppConstants.APPDEPL_DFLTBNDG_VHOST, "default_host");
  
// Controller erstellen.
  AppDeploymentController controller = AppDeploymentController
    .readArchive(earFile, prefs);
  AppDeploymentTask task = controller.getFirstTask();
  while (task != null)
  {
// Taskdaten hinzufügen.
   String[][] data = task.getTaskData();
// Taskdaten bearbeiten
   task.setTaskData (data);
   task = controller.getNextTask();
  }
  controller.saveAndClose();
  
  Hashtable options = controller.getAppDeploymentSavedResults();
// Die vorherige Optionstabelle enthält die Modul/Server-Beziehung, wenn diese
// mit Tasks definiert wurde.
// Ende der Vorbereitungsphase.

// Verbindung zum Produkt anfordern.
  String host = "localhost";
  String port = "8880";
  String target = "WebSphere:cell=cellName,node=nodeName,server=server1";

              Properties config = new Properties();
  config.put (AdminClient.CONNECTOR_HOST,  host);
  config.put (AdminClient.CONNECTOR_PORT,  port);
  config.put (AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
  System.out.println ("Config: " + config);
     AdminClient _soapClient = AdminClientFactory.createAdminClient(config);

// Proxy für die Anwendungsverwaltung (AppManagement) erstellen.
  AppManagement proxy = AppManagementProxy. getJMXProxyForClient (_soapClient);

// Wenn der Code für die Vorbereitungsphase ausgeführt wurde, ist die Optionstabelle bereits vorhanden.
// Andernfalls eine neue Tabelle erstellen und die Modul/Serverbeziehung hinzufügen, indem
// Sie das Kommentarzeichen in der folgenden Zeile entfernen.
//Hashtable options = new Hashtable();
  options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault());

// Kommentarzeichen aus den folgenden Zeilen entfernen, um die Tabelle
// für die Modul/Server-Beziehung hinzuzufügen, sofern diese in der
// Vorbereitungsphase nicht erfasst wurde.
//Hashtable module2server = new Hashtable();
//module2server.put ("*", target);
//options.put (AppConstants.APPDEPL_MODULE_TO_SERVER, module2server);

// Benachrichtigungsfilter für den Empfang von Installationsereignissen erstellen.
  NotificationFilterSupport myFilter = new NotificationFilterSupport();
  myFilter.enableType (AppConstants.NotificationType);


//Listener hinzufügen
  NotificationListener listener = new AListener(_soapClient, myFilter, "Install: " + appName, AppNotification.INSTALL);

// Anwendung installieren.
  proxy.installApplication (earFile, appName, options, null);
  System.out.println ("After install App is called..");

// Zeitlimit abwarten. Die Installations-API ist
// asynchron und gibt sofort ein Ergebnis zurück.
// Falls das Programm an dieser Stelle nicht wartet, wird das Programm beendet.
  Thread.sleep(300000); // Warten, damit das Programm nicht beendet wird

        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

// JMX-Listener für Benachrichtigungen für JMX-Ereignisse angeben.
class AListener implements NotificationListener
{
    AdminClient _soapClient;
    NotificationFilterSupport  myFilter;
    Object handback;
    ObjectName on;
    String eventTypeToCheck;

    public AListener(AdminClient cl, NotificationFilterSupport fl, 
Object h, String eType) throws Exception
    {
        _soapClient = cl;
        myFilter = fl;
        handback = h;
        eventTypeToCheck = eType;

        Iterator iter = _soapClient.queryNames (new ObjectName(
"WebSphere:type=AppManagement,*"), null).iterator();
        on = (ObjectName)iter.next();
        System.out.println ("ObjectName: " + on);
        _soapClient.addNotificationListener (on, this, myFilter, handback);
    }

    public void handleNotification (Notification notf, Object handback)
    {
            AppNotification ev = (AppNotification) notf.getUserData();
            System.out.println ("!! JMX event Recd: (handback obj= " + handback+ "): " + ev);


            //Nach Abschluss der Installation Listener entfernen und Programm beenden.

            if (ev.taskName.equals (eventTypeToCheck) &&
                (ev.taskStatus.equals (AppNotification.STATUS_COMPLETED) ||
                 ev.taskStatus.equals (AppNotification.STATUS_FAILED)))
            {
                    try
                    {
                            _soapClient.removeNotificationListener (on, this);
                    }
            catch (Throwable th)
                    {
                        System.out.println ("Error removing listener: " + th);
                    }
                    System.exit (0);
        }
    }
}

Nächste Schritte

Nachdem Sie die Anwendung installiert haben, müssen Sie die Anwendung explizit starten oder den Server stoppen und anschließend erneut starten.


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=tjmx_install_app
Dateiname:tjmx_install_app.html