Eine Datei durch Programmierung aktualisieren

Sie können eine Datei für eine vorhandene Anwendung mit der Administrationskonsole, mit dem Tool "wsadmin" oder durch Programmierung aktualisieren. Dieses Beispiel beschreibt, wie Sie eine Datei durch Programmierung aktualisieren.

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 Datei für eine Anwendung in WebSphere Application Server aktualisieren können, müssen Sie die Anwendung installieren.

Informationen zu diesem Vorgang

Führen Sie die folgenden Tasks aus, um eine Datei durch Programmierung zu aktualisieren.

Vorgehensweise

  1. Stellen Sie eine Verbindung zu WebSphere Application Server her.
  2. Erstellen Sie einen Proxy-Server für die Anwendungsverwaltung.
  3. Erstellen Sie den Benachrichtigungsfilter für den Empfang von Ereignissen.
  4. Fügen Sie den Listener hinzu.
  5. Aktualisieren Sie die Datei in der Anwendung.
  6. Warten Sie ein Zeitlimit ab, damit das Programm nicht beendet wird.
  7. Warten Sie auf JMX-Benachrichtigungen (Java Management Extensions), um sich vom Abschluss der Operation zu überzeugen.
  8. Nach Abschluss der Installation entfernen Sie den Listener und beenden Programm.

Ergebnisse

Nach erfolgreicher Ausführung des Codes wird die Datei in der Anwendung aktualisiert.

Beispiel

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

//Eingabe:
//fileContents gibt den Namen der Datei an, die der Anwendung hinzugefügt wird.
//appName gibt den Namen der Anwendung an.
//fileURI gibt den URI für die Zielposition der Datei an. Der URI gibt die
//Position der neuen Datei nach der Installation an. Der URI ist
//relativ zum Anwendungs-URL.
[Windows]
String fileContents = "C:\apps\test.jsp";
[Linux][HP-UX][Solaris][AIX][z/OS][IBM i]
String fileContents = "/apps/test.jsp";
String appName = "MyApp";
String fileURI = "SomeWebMod.war/com/foo/abc.jsp";

//Verwaltungsclient für den Verbindungsaufbau zu
//WebSphere Application Server abrufen.
AdminClient client = ...;

//Proxy-Server für Anwendungsverwaltung erstellen.
AppManagement proxy = AppManagementProxy.getJMXProxyForClient(client);

// Benachrichtigungsfilter erstellen.
  NotificationFilterSupport myFilter = new NotificationFilterSupport();
  myFilter.enableType (NotificationConstants.TYPE_APPMANAGEMENT);
  //Listener hinzufügen
  NotificationListener listener = new AListener(_soapClient, myFilter, 
"Install: " + appName, AppNotification.UPDATE);

Hashtable options = new Hashtable();
options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault());
options.put (AppConstants.APPUPDATE_CONTENTTYPE, AppConstants.APPUPDATE_CONTENT_FILE);

proxy.updateApplication (	appName, 
				fileURI,
				fileContents,
				AppConstants.APPUPDATE_UPDATE,
				options,
				null); 
// Warten. 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);
        }
    }
}

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_update_file
Dateiname:tjmx_update_file.html