Ein Modul vorbereiten und durch Programmierung einer vorhandenen Anwendung hinzufügen
Sie können ein Modul mit der Administrationskonsole, mit dem Tool "wsadmin" oder durch Programmierung einer vorhandenen Anwendung hinzufügen. Das folgende Beispiel veranschaulicht das Hinzufügen eines Moduls 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 .
Bevor Sie ein Modul einer Anwendung in WebSphere Application Server hinzufügen können, müssen Ihre Anwendung installieren.
Informationen zu diesem Vorgang
Führen Sie die folgenden Tasks aus, um einer Anwendung durch Programmierung ein Modul hinzuzufügen.
Vorgehensweise
Ergebnisse
Nach erfolgreicher Ausführung des Codes wird das Modul der Anwendung hinzugefügt.
Beispiel
Das folgende Beispiel zeigt, wie Sie basierend auf den zuvor beschriebenen Schritten einer Anwendung ein Modul hinzufügen. Einige Anweisungen sind zur besseren Lesbarkeit auf mehrere Zeilen verteilt.
//Eingabe:
//moduleName gibt den Namen des Moduls an, das Sie der Anwendung hinzufügen.
//moduleURI gibt den URI für die Zielposition des Modularchivinhalts
// in einem Dateisystem an. Der URI gibt die Position des neuen Moduls
// nach der Installation an. Der URI ist relativ zum Anwendungs-URL.
// uniquemoduleURI gibt den URI für die Zielposition der Deployment-
// Deskriptordatei an. Der URI ist relativ zum Anwendungs-URL.
// target gibt Zelle, Knoten und Server für die Modulinstallation an.
![[Windows]](../images/windows.gif)
String moduleName = "C:\apps\foo.jar";
![[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 moduleName = "/apps/foo.jar";
String moduleURI = "Increment.jar";
String uniquemoduleURI = "Increment.jar+META-INF/ejb-jar.xml";
String target = "WebSphere:cell=cellname,node=nodename,server=servername";
// Controller-Instanz für die Anwendungsimplementierung erstellen,
// um die JAR-Datei mit Bindungsinformationen zu füllen.
// Die Bindungsinformationen sind Informationen, die spezielle für die implementierung von WebSphere Application Server gelten.
Hashtable preferences = new Hashtable();
preferences.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault());
preferences.put (AppConstants.APPUPDATE_CONTENTTYPE, AppConstants.APPUPDATE_CONTENT_MODULEFILE);
AppDeploymentController controller = AppManagementFactory.readArchiveForUpdate(
moduleName,
moduleURI,
AppConstants.APPUPDATE_ADD,
preferences,
null);
Wenn das Modul, das Sie hinzufügen möchten, keine Bindungen hat, fügen Sie Bindungen hinzu, damit das Modul hinzugefügt werden kann. Verwenden Sie zum Erfassen und Hinzufügen der Bindungen die öffentlichen APIs, die mit dem Produkt bereitgestellt werden. In der Java-Dokumentation zur com.ibm.websphere.management.application.client.AppDeploymentController-Instanz können Sie nachlesen, wie Tasks mit spezifischen Bindungsinformationen für WebSphere Application Server erfasst und eingetragen werden. Die AppDeploymentController-Instanz enthält Metadaten, die in XML-basierten Implementierungsdeskriptoren definiert sind, sowie Annotationen, die in Java-Klassen im Eingabemodul definiert sind.
//Nachdem Sie alle Bindungsinformationen erfasst haben, speichern Sie sie im Modul.
controller.saveAndClose();
//Installationsoptionen ermitteln.
Hashtable options = controller.getAppDeploymentSavedResults();
// Verbindung zwischen Verwaltungsclient, AdminClient und WebSphere Application Server herstellen.
AdminClient client = ...;
//Proxy-Server für Anwendungsverwaltung erstellen.
AppManagement proxy = AppManagementProxy.getJMXProxyForClient(client);
// Vorhandene Anwendung, MyApp, durch Hinzufügen des Moduls aktualisieren.
String appName = "MyApp";
options.put (AppConstants.APPUPDATE_CONTENTTYPE,
AppConstants. APPUPDATE_CONTENT_MODULEFILE);
// Benachrichtigungsfilter erstellen.
NotificationFilterSupport myFilter = new NotificationFilterSupport();
myFilter.enableType (NotificationConstants.TYPE_APPMANAGEMENT);
//Listener hinzufügen
NotificationListener listener = new AListener(_soapClient, myFilter,
"Install: " + appName, AppNotification.UPDATE);
// Ziel für das neue Modul angeben.
Hashtable mod2svr = new Hashtable();
options.put (AppConstants.APPDEPL_MODULE_TO_SERVER, mod2svr);
mod2svr.put (uniquemoduleURI, target);
proxy.updateApplication ( appName,
moduleURI,
moduleName,
AppConstants.APPUPDATE_ADD,
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 das Modul erfolgreich hinzugefügt haben, entfernen Sie den Listener und beenden das Programm.