Datei durch Programmierung hinzufügen
Sie können eine Datei mit der Administrationskonsole, mit dem Tool "wsadmin" oder durch Programmierung einer vorhandenen Anwendung hinzufügen. Dieses Beispiel beschreibt, wie Sie eine Datei durch Programmierung hinzufügen.
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 im Information Center auf .
Bevor Sie eine Datei einer Anwendung in WebSphere Application Server hinzufügen können, müssen Sie Ihre Anwendung installieren.
Informationen zu diesem Vorgang
Führen Sie die folgenden Tasks aus, um einer Anwendung durch Programmierung eine Datei hinzuzufügen.
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.
- Fügen Sie der Anwendung die Datei hinzu.
- 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.
- Entfernen Sie, nachdem Sie eine Datei hinzugefügt haben, den Listener, und beenden Sie das Programm.
Ergebnisse
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.
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 FileAdd {
public static void main(String[] args) {
try {
// Verbindung zu WebSphere Application Server abrufen
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);
String appName = "MyApp";
String fileURI = "test.war/com/acme/abc.jsp";
![[Windows]](../images/windows.gif)
String fileContents = "C:\temp\abc.jsp";
![[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 fileContents = "/temp/abc.jsp";
// 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);
// Anwendung aktualisieren
proxy.updateApplication ( appName,
fileURI,
fileContents,
AppConstants.APPUPDATE_ADD,
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(90000); // 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);
}
}
}