Liberty:Beispiele für die Registrierung von MBeans
Eine Anwendung kann ihre eigenen MBean-Instanzen in Liberty registrieren. Diese MBean-Instanzen können dann von anderen Anwendungen oder externen Administratoren verwendet werden.
Jede Anwendung kann eine MBean über eine MBeanServer-Instanz registrieren.
Angenommen, eine Anwendung enthält eine Klasse mit dem Namen org.example.Example, die die Schnittstelle
org.example.ExampleMBean implementiert, in der einige Attribute und Operationen definiert sind.
Wie im folgenden Beispiel kann die Anwendung die Klasse Example einfach instanziieren und dann
mit einem eindeutigen ObjectName registrieren. Wenn der ausgewählte ObjectName
bereits im Gebrauch ist, wird eine Ausnahme des Typs javax.management.InstanceAlreadyExistsException gemeldet.
import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.example.Example;
...
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
Object mbean = new Example();
ObjectName name = new ObjectName("org.example.MyApplication:name=Example");
mbs.registerMBean(mbean, name);
Außerdem kann eine Anwendung eine MBean registrieren, die
java.lang.ClassLoader erweitert und den Zugriff auf eine Reihe von MBean-Implementierungsklassen ermöglicht.
Anschließend können Sie einen beliebigen anderen
JMX-Client (lokal oder fern) verwenden, um MBeans zu erstellen und zu registrieren, die von der Anwendung
bereitgestellt werden.
Angenommen, die Anwendung hat eine MBean-Klasse org.example.ApplicationClassLoader, die:
- eine leere Schnittstelle org.example.ApplicationClassLoaderMBean implementiert,
- java.lang.Classloader erweitert und
- den Zugriff auf die Implementierungsklasse der MBean org.example.Example ermöglicht.
Die Anwendung kann eine Instanz von ApplicationClassLoader wie folgt registrieren,
um die MBean Example anderen JMX-Clients zur Verfügung zu stellen:
import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.example.ApplicationClassLoader;
...
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
Object classLoader = new ApplicationClassLoader();
ObjectName name = new ObjectName("org.example.MyApplication:name=ClassLoader");
mbs.registerMBean(classLoader, name);
Jeder JMX-Client kann eine Example-Instanz erstellen.
Im folgenden Beispiel wird angenommen, dass die Variable mbs eine Instanz von MBeanServer oder MBeanServerConnection ist.
Nähere Informationen hierzu finden Sie unter
Mit JMX-Beans in Liberty arbeiten.
import javax.management.ObjectName;
...
ObjectName loaderName = new ObjectName("org.example.MyApplication:name=ClassLoader");
ObjectName exampleName = new ObjectName("org.example.MyApplication:name=Example");
mbs.createMBean("org.example.Example", exampleName, loaderName);
Bei Bedarf können Sie andere Formen der Methode MBeanServer.createMBean verwenden, um die MBean mithilfe von Konstruktoren zu erstellen, die keine Standardkonstruktoren sind.
Weitere Informationen zur Managementschnittstelle finden Sie im Java-API-Dokument für Liberty. Die Java-API-Dokumentation für jede Liberty-API finden Sie in einer separaten .zip-Datei in einem der Javadoc-Unterverzeichnisse des Verzeichnisses ${wlp.install.dir}/dev.