Dieser Abschnitt beschreibt, wie Sie eine Verbindung
zu einem Java™ EE-Server
(Java Platform, Enterprise Edition) herstellen und Server verschiedener Anbieter verwalten.
Vorbereitende Schritte
Das Produkt implementiert die Spezifikation Java EE Management, auch
JSR-77 (Java Specification Requests 77) genannt. Die Java EE-Spezifikation und die Implementierung der Spezifikation
in
WebSphere Application Server unterscheiden sich jedoch in gewissen Details, die Sie
unbedingt berücksichtigen müssen, wenn Sie ein Java-Verwaltungsclientprogramm entwickeln, um mehrere
Server von unterschiedlichen Anbietern zu verwalten.
Weitere Informationen finden Sie in der
Spezifikation Java Platform, Enterprise
Edition (Java EE) Management und in der Dokumentation der MBean-Java-APIs (Application
Programming Interface).
Klicken Sie im Information Center auf
.
Informationen zu diesem Vorgang
Wenn Ihr Verwaltungsclientprogramm ausschließlich auf
WebSphere Application Server zugreift,
können Sie die Java-APIs und die in WebSphere Application Server definierten
MBeans für die Verwaltung verwenden.
Falls Ihr Programm auf WebSphere Application Server und andere Java EE-Server zugreifen muss, verwenden Sie die in der Spezifikation "Java EE Management"
definierte API.
Vorgehensweise
- Eine Verbindung zu einem Java EE-Server herstellen.
Stellen
Sie eine Verbindung zu einem Server her, indem Sie die Verwaltungs-EJB in JNDI (Java
Naming and Directory Interface) lokalisieren. Die Verwaltungs-EJB stellt eine
ferne Schnittstelle zum MBean-Server bereit, der im Anwendungsserver ausgeführt wird. Die
Verwaltungs-EJB funktioniert fast genauso wie der Verwaltungsclient von
WebSphere Application Server, allerdings mit
dem Unterschied, dass sie keine spezifischen Funktionen von
WebSphere Application Server bereitstellt. Das folgende
Beispiel veranschaulicht, wie Sie die Verwaltungs-EJB (Management) suchen.
import javax.management.j2ee.ManagementHome;
import javax.management.j2ee.Management;
Properties props = new Properties();
props.setProperty(Context.PROVIDER_URL, "iiop://meinHost:2809");
Context ic = new InitialContext(props);
Object obj = ic.lookup("ejb/mgmt/MEJB");
ManagementHome mejbHome = (ManagementHome)
PortableRemoteObject.narrow(obj, ManagementHome.class);
Management mejb = mejbHome.create();
Im Beispiel wird ein Ausgangskontext für einen Anwendungsserver abgerufen,
indem der Host und der Port des RMI-Connector weitergegeben wird. Sie müssen den
RMI-Port explizit codieren, in diesem Fall lautet die Angabe 2809. Die Lookup-Methode sucht den Pfad
ejb/mgmt/MEJB, alsodass Home-Verzeichnis der Verwaltungs-EJB.
Anschließend wird die Stateless-Session-Bean "mejb" erstellt, die im nächsten Schritt verwendet wird.
- Anwendungsserver mehrerer Anbieter verwalten.
Wenn
Sie die Stateless-Session-Bean "mejb" erstellt haben, können Sie sie zum Verwalten der
Anwendungsserver verwenden. Komponenten der Anwendungsserver erscheinen als MBeans, die
von der Spezifikation definiert werden. Diese MBeans besitzen alle die Eigenschaft
"j2eeType".
Diese Eigenschaft ist eines aus einer Gruppe von Typen, die in der Spezifikation definiert werden.
Alle diese Typen diese Typen besitzen eine Gruppe von Attributen, die
bereitgestellt werden.
Das folgende Beispiel ist ein Leitfaden für die Verwaltung
von mehreren Anwendungsservern anderer Anbieter.
Im Beispiel wird die JVM-Bean verwendet, um die aktuelle Größe des
Heapspeichers für den Anwendungsserver zu ermitteln.
ObjectName jvmQuery = new ObjectName("*:j2eeType=JVM,*");
Set s = mejb.queryNames(jvmQuery, null);
ObjectName jvmMBean = (ObjectName) s.iterator().next();
boolean hasStats = ((Boolean) mejb.getAttribute(jvmMBean,
"statisticsProvider")).booleanValue();
if (hasStats) {
JVMStats stats = (JVMStats) mejb.getAttribute(jvmMBean,
"stats");
String[] statisticNames = stats.getStatisticNames();
if (Arrays.asList(statisticNames).contains("heapSize")) {
System.out.println("Heap size: " + stats.getHeapSize());
}
}
Die Methode "queryNames()" ruft zunächst die JVM-MBean ab. Anschließend
ruft die Methode "getAttribute"
das Attribut "statisticsProvider" ab, um zu bestimmen, ob diese MBean Statistiken bereitstellt.
Ist das der Fall, greift das Beispiel auf das Attribut "stats" zu und ruft die
Methode "getHeapSize()" auf, um die Größe des Heapspeichers abzurufen.
Ergebnisse
Der Vorteil dieses Beispiels liegt darin, dass es im Anwendungsserver jedes
Anbieters ausgeführt werden kann. Es veranschaulicht, dass eine MBean definierte Schnittstellen, in
diesem Fall die Schnittstelle "StatisticsProvider", implementieren kann. Wenn eine MBean
die Schnittstelle "StatisticsProvider" implementiert, können Sie überprüfen, ob ein
Anwendungsserver eine bestimmte Statistik, in diesem Fall die Größe des Heapspeichers,
unterstützt. Die Spezifikation definiert die Größe des Heapspeichers. Dieser Wert ist jedoch optional.
Wenn der Anwendungsserver die Größe des Heapspeichers unterstützt, können Sie die Größe des
Heapspeichers für die JVM anzeigen.