Teile einer Anwendung durch Programmierung hinzufügen, aktualisieren und löschen
Mit der Administrationskonsole, dem Tool "wsadmin" oder durch Programmierung können Sie einer vorhandenen Anwendung Teile hinzufügen oder Teile in einer vorhandenen Anwendung aktualisieren oder löschen. Dieses Beispiel veranschaulicht die Änderung eines Anwendungsteils durch Programmierung. Sie können dieses Beispiel zugrunde legen, wenn Sie einen Anwendungsteil hinzufügen, aktualisieren oder löschen möchten. Mehrere Änderungen an einer Anwendung können in einer einzigen zip-Datei zusammengefasst werden.
Vorbereitende Schritte
Hilfreiche Informationen zur Struktur der Datei mit der Erweiterung .zip finden Sie im Artikel zum Aktualisieren von Anwendungen über die Administrationskonsole, das als PDF-Datei verfügbar ist. 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 .
Bevor Sie einen Teil einer Anwendung in WebSphere Application Server hinzufügen, aktualisieren oder löschen können, müssen Sie die Anwendung installieren.
Informationen zu diesem Vorgang
Führen Sie die folgenden Tasks aus, um durch Programmierung Anwendungsteile hinzuzufügen, zu aktualisieren oder zu löschen.
Vorgehensweise
- Stellen Sie eine Verbindung zu WebSphere Application Server her.
- Erstellen Sie einen Proxy-Server für die Anwendungsverwaltung.
- Erstellen Sie den Benachrichtigungsfilter.
- Fügen Sie den Listener hinzu.
- Ändern Sie den gewünschten Teil der vorhandenen Anwendung.
- Warten Sie ein Zeitlimit ab, damit das Programm nicht beendet wird.
- Warten Sie auf JMX-Benachrichtigungen (Java Management Extensions), um sich vom Abschluss der Operation zu überzeugen.
Ergebnisse
Wenn der Code fehlerfrei ausgeführt wird, wurde die Änderung in der Anwendung vorgenommen.
Beispiel
Das folgende Beispiel zeigt, wie Sie basierend auf den zuvor beschriebenen Schritten Anwendungsteile hinzufügen, aktualisieren und löschen können. Einige Anweisungen sind zur besseren Lesbarkeit auf mehrere Zeilen verteilt.
//Eingabe:
//partialApp gibt die Position des Anwendungsteils an.
//appName gibt den Namen der Anwendung an.
![[Windows]](../images/windows.gif)
String partialApp = "C:\apps\partial.zip";
![[Linux]](../images/linux.gif)
![[HP-UX]](../images/hpux.gif)
![[Solaris]](../images/solaris.gif)
![[AIX]](../images/aixlogo.gif)
![[z/OS]](../images/ngzos.gif)
![[IBM i]](../images/iseries.gif)
String partialApp = "/apps/partial.zip";
String appName = "MyApp";
//Verwaltungsclient für den Verbindungsaufbau zum Produkt 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);
//Vorhandene Anwendung MyApp teilweise ändern.
Hashtable options = new Hashtable();
options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault());
options.put (AppConstants.APPUPDATE_CONTENTTYPE, AppConstants.APPUPDATE_CONTENT_PARTIALAPP);
proxy.updateApplication ( appName,
null,
partialApp,
null,
options,
null);
// 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 aktualisiert haben, entfernen Sie den Listener und beenden das Programm.