Eine Anwendung durch Programmierung deinstallieren
Sie können eine Anwendung mit der Administrationskonsole, dem Tool "wsadmin" oder durch Programmierung deinstallieren. Dieses Beispiel veranschaulicht die Deinstallation 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 .
Damit Sie eine Anwendung in WebSphere Application Server deinstallieren können, muss sie installiert sein.
Informationen zu diesem Vorgang
Führen Sie die folgenden Tasks aus, um eine Anwendung durch Programmierung zu deinstallieren.
Vorgehensweise
- Fordern Sie eine Verbindung zu WebSphere Application Server an.
- Fordern Sie den Proxy-Server für die Anwendungsverwaltung an.
- Erstellen Sie den Benachrichtigungsfilter für den Empfang von Deinstallationsereignissen.
- Fügen Sie den Listener hinzu.
- Deinstallieren Sie die 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.
- Nach Abschluss der Deinstallation entfernen Sie den Listener und beenden Sie das Programm.
Ergebnisse
Wenn der Code fehlerfrei ausgeführt wird, wurde die Anwendung deinstalliert.
Beispiel
Das folgende Beispiel zeigt, wie Sie basierend auf den zuvor beschriebenen Schritten eine Anwendung deinstallieren. 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 Uninstall {
public static void main(String[] args) {
try {
// Verbindung zum Server 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-Server für Anwendungsverwaltung anfordern
AppManagement proxy = AppManagementProxy. getJMXProxyForClient (_soapClient);
String appName = "MyApp";
Hashtable options = new Hashtable();
options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault());
// Benachrichtigungsfilter erstellen.
NotificationFilterSupport myFilter = new NotificationFilterSupport();
myFilter.enableType (AppConstants.NotificationType);
//Listener hinzufügen
NotificationListener listener = new AListener(_soapClient, myFilter, "Install: " + appName, AppNotification.UNINSTALL);
// Anwendung deinstallieren
proxy.uninstallApplication (appName, options, null);
System.out.println ("After uninstall 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 Deinstallation 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);
}
}
}