Angepasstes Java-Verwaltungsclientprogramm mit mehreren Java EE-Servern von unterschiedlichen Anbietern implementieren und verwalten

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 Referenz > Mbean-Schnittstellen.

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

  1. 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.
  2. 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.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjmx_multappsrv_conn
Dateiname:tjmx_multappsrv_conn.html