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
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
- Erstellen Sie Ihre spezifischen MBean-Klassen.
- Schreiben Sie für Ihre MBean einen MBean-Deskriptor in XML.
- 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.
- 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
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.

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();
}
}
}