Eine Datei durch Programmierung löschen
Sie können eine Datei aus einer vorhandenen Anwendung mit der Administrationskonsole, mit dem Tool "wsadmin" oder durch Programmierung löschen. Das folgende Beispiel veranschaulicht das Löschen einer Datei durch Programmierung.
Vorbereitende Schritte
Bevor Sie eine Datei aus einer Anwendung in WebSphere Application Server löschen 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 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ür den Empfang von Ereignissen.
- Fügen Sie den Listener hinzu.
- Löschen Sie die Datei aus der 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.
- Nachdem die Datei aus der Anwendung gelöscht wurde, entfernen Sie den Listener und beenden das Programm.
Ergebnisse
Beispiel
Das folgende Beispiel zeigt, wie Sie basierend auf den zuvor beschriebenen Schritten eine Datei löschen. Einige Anweisungen sind zur besseren Lesbarkeit auf mehrere Zeilen verteilt.
//Eingabe:
//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.
//appName gibt den Namen der Anwendung an.
String fileURI = "Increment.jar/com/acme/Foo.class";
String appName = "MyApp";
//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);
//Die vorhandene Anwendung MyApp durch Löschen der Datei aktualisieren
Hashtable options = new Hashtable();
options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault());
options.put (AppConstants.APPUPDATE_CONTENTTYPE, AppConstants.APPUPDATE_CONTENT_FILE);
proxy.updateApplication ( appName,
fileURI,
null,
AppConstants.APPUPDATE_DELETE,
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 den Listener entfernen und 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);
}
}
}