Standard-MBeans, dynamische MBeans und offene angepasste MBeans entwickeln und registrieren

Sie können Standard-MBeans, dynamische MBeans und offene angepasste MBeans erstellen und beim Verwaltungsservice des Produkts registrieren.

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

Definieren Sie keine neuen Klassen als Parameter für Ihre MBeans. Die Klassen sind möglicherweise nicht in allen Prozessen verfügbar. Wenn Sie eine neue Klasse definieren müssen, stellen Sie sicher, dass die Klasse in allen Prozessen, einschließlich des Deployment Manager, der Node Agents und der Anwendungsserver, verfügbar ist. Wenn die Klasse für einen Prozess nicht verfügbar ist, wird eine Ausnahme des Typs "ClassNotFoundException" für die neue Klasse ausgelöst, wenn Sie versuchen, auf die Klasse zuzugreifen.

Informationen zu diesem Vorgang

Führen Sie die folgenden Schritte aus, um eine Standard-MBean, eine dynamische MBean oder eine offene angepasste MBean zu erstellen und zu registrieren.

Vorgehensweise

  1. Erstellen Sie Ihre spezifischen MBean-Klassen.
  2. Schreiben Sie für Ihre MBean einen MBean-Deskriptor in XML.
  3. Registrieren Sie Ihre MBean, indem Sie in Ihren Anwendungscode Code einfügen, der die Collaborator-Klasse "com.ibm.websphere.management.UserMBeanCollaborator" der Laufzeitumgebung von WebSphere Application Server verwendet.
  4. Erstellen Sie ein Paket mit den Klassendateien für Ihre MBean-Schnittstelle, der MBean-Implementierung, der Deskriptor-XML-Datei und Ihrer Anwendungs-JAR-Datei.

Ergebnisse

Nach Ausführung dieser Schritte ist Ihre Standard-MBean, dynamische MBean oder offene angepasste MBean beim Verwaltungsservice des Produkts registriert und aktiviert.

Beispiel

Das folgende Beispiel demonstriert das Erstellen einer Standard-MBean und das Registrieren dieser MBean beim Verwaltungsservice:

SnoopMBean.java:

/**
 * Verwendung der MBean SnoopMBean mit einer Standard-MBean-Schnittstelle
 */ 
public interface SnoopMBean {
    public String getIdentification();
    public void snoopy(String parm1);
}

SnoopMBeanImpl.java:

/**
 * SnoopMBeanImpl - SnoopMBean-Implementierung
 */ 
public class SnoopMBeanImpl implements SnoopMBean {
    public String getIdentification() {
        System.out.println(">>> getIdentification() called...");
        return "snoopy!";
    }
    
    public void snoopy(String parm1) {
        System.out.println(">>> snoopy(" + parm1 + ") called...");
    }
}

Definieren Sie den folgenden MBean-Deskriptor für Ihre MBean in einer XML-Datei. Die Methode getIdentification ist für die Ausführung mit der Option unicall definiert und die Methode snoopy mit der Option multicall. Diese Optionen werden nur für Anwendungen auf der z/OS-Plattform verwendet. Die Optionen von WebSphere Application Server for z/OS gelten nicht für die verteilten Plattformen, müssen jedoch nicht entfernt werden. Sie werden auf verteilten Plattformen ignoriert. . Einige Anweisungen sind zur besseren Lesbarkeit auf mehrere Zeilen verteilt.

Fehler vermeiden Fehler vermeiden: Wenn Sie in einer Umgebung mit mehreren JVMs arbeiten, müssen Sie die Eigenschaft "type" in den MBean-Deskriptor einschließen.gotcha
SnoopMBean.xml:


<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd">
<MBean type="SnoopMBean"
 version="5.0"
 platform="dynamicproxy"
 description="Beispiel-SnoopMBean, die in einer EJB initialisiert werden soll">


 <attribute name="identification" getMethod="getIdentification" 
type="java.lang.String" proxyInvokeType="unicall"/>

 <operation name="snoopy" role="operation"  type="void" targetObjectType="objectReference" 
   impact="ACTION" proxyInvokeType="multicall">
  <signature>
   <parameter name="parm1" description="test parameter" type="java.lang.String"/>
  </signature>
 </operation>
</MBean>
Wenn Ihre MBean in einer Enterprise-Bean verwendet werden soll, können Sie sie MBean mit der Methode ejbCreate in der Enterprise-Bean registrieren und die Registrierung mit der Methode ejbRemove zurücknehmen.
//Die Methode MBeanFactory.activateMBean() erfordert vier Parameter:
//Zeichenfolgentyp: Der Wert für type, den Sie im Deskriptor dieser MBean definiert haben. In diesem
//Beispiel ist der Zeichenfolgentyp SnoopMBean.
//Laufzeit-Collaborator: Die von Ihnen erstellte Instanz des User-MBean-Collaborators
// UserMBeanCollaborator
//Zeichenfolgen-ID: Ein eindeutiger Name Ihrer Wahl
//Zeichenfolgedeskriptor: Der vollständige Pfad der MBean-Deskriptordatei


import com.ibm.websphere.management.UserMBeanCollaborator;
//Importieren Sie hier weitere Klassen.
.
.
.
static private ObjectName snoopyON = null;
static private Object lockObj = "this is a lock";
.
.
.
/**
 * Methode ejbCreate zum Registrieren Ihrer MBean
 */
	public void ejbCreate() throws javax.ejb.CreateException {
    synchronized (lockObj) {
        System.out.println(">>> SnoopMBean activating for --|" + this + "|--");
        if (snoopyON != null) {
            return;
        }
        try {
            System.out.println(">>> SnoopMBean activating...");
            MBeanFactory mbfactory = AdminServiceFactory.getMBeanFactory();
            RuntimeCollaborator snoop = new UserMBeanCollaborator(new SnoopMBeanImpl());
            snoopyON = mbfactory.activateMBean("SnoopMBean", snoop, "snoopMBeanId", "SnoopMBean.xml");
            System.out.println(">>> SnoopMBean activation COMPLETED! --|" + snoopyON + "|--");
        } catch (Exception e)  {
            System.out.println(">>> SnoopMBean activation FAILED:");
            e.printStackTrace();
        }
    }
}
.
.
.
/**
 * Methode ejbRemove zum Widerrufen der Registrierung Ihrer MBean
 */
	public void ejbRemove() {
    synchronized (lockObj) {
        System.out.println(">>> SnoopMBean Deactivating for --|" + this + "|--");
        if (snoopyON == null) {
            return;
        }
        try {
            System.out.println(">>> SnoopMBean Deactivating ==|" + snoopyON + "|== for --|" 
+ this + "|--");
            MBeanFactory mbfactory = AdminServiceFactory.getMBeanFactory();
            mbfactory.deactivateMBean(snoopyON);
            System.out.println(">>> SnoopMBean Deactivation COMPLETED!");
        } catch (Exception e)  {
            System.out.println(">>> SnoopMBean Deactivation FAILED:");
            e.printStackTrace();
        }
    }
}

Nächste Schritte

Kompilieren Sie die MBean-Java-Dateien und packen Sie die so erstellten Klassendateien mit der Deskriptor-XML-Datei in die Enterprise-Bean-JAR-Datei.

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_standard_dynamic_mbean
Dateiname:tjmx_standard_dynamic_mbean.html