Ejemplos de registro de MBeans
Una aplicación puede registrar sus propias instancias de MBean en Liberty. Esa instancia de MBean la puedes utilizar otras aplicaciones o los administradores externos.
Cualquier aplicación puede registrar un MBean utilizando una instancia de MBeanServer.
Supongamos que una aplicación contiene una clase que se llama
org.example.Example que implementa la interfaz
org.example.ExampleMBean, que define algunos
atributos y operaciones. Como en el ejemplo siguiente, la aplicación puede simplemente crear una instancia de la clase Example y, a continuación, registrarla utilizando un ObjectName exclusivo. Si el ObjectName elegido ya se está utilizando, se notifica una javax.management.InstanceAlreadyExistsException.
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);
Asimismo, una aplicación puede registrar un MBean que amplía java.lang.ClassLoader y proporciona acceso a un número cualquiera de clases de implementación de MBean. A
continuación, puede utilizar cualquier otro cliente JMX, local o
remoto, para crear y registrar los MBeans proporcionados por la
aplicación. Por ejemplo, supongamos que la aplicación tiene una
clase de MBean org.example.ApplicationClassLoader
que realiza las tareas siguientes:
- Implementa un org.example.ApplicationClassLoaderMBean de interfaz vacía
- Amplía java.lang.Classloader y
- Proporciona acceso a la clase de implementación de MBean org.example.Example
La aplicación puede registrar una instancia de ApplicationClassLoader para que el MBean Example esté disponible para otros clientes JMX como se indica a continuación:
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);
Cualquier cliente JMX puede crear una instancia de Example.
El ejemplo siguiente asume que la variable mbs es
una instancia de MBeanServer o
MBeanServerConnection. Consulte
Cómo trabajar con los MBeans JMX en Liberty.
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);
Si es necesario, puede utilizar otros formatos del método MBeanServer.createMBean para crear el MBean utilizando constructores distintos de los predeterminados.
Para obtener más información sobre la interfaz de gestión, consulte el documento de la API Java para Liberty. La documentación de la API Java API para cada API Liberty se detalla en la sección Interfaces de programación (API) del IBM Knowledge Center en línea y, también, está disponible como un archivo .zip separado en uno de los subdirectorios javadoc del directorio ${wlp.install.dir}/dev.