Ejemplos de registro de MBeans
Una aplicación puede registrar sus propias instancias de MBean en el perfil 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 denominada 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 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. En el ejemplo siguiente se supone que la variable mbs es una instancia de MBeanServer o MBeanServerConnection. Consulte
Cómo trabajar con los MBeans JMX en el perfil 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 el perfil Liberty. La documentación de la API Java para cada API de perfil Liberty se detalla en la sección Interfaces de programación (API) del Information Center, y también está disponible como un archivo .zip aparte en uno de los subdirectorios javadoc del directorio ${wlp.install.dir}/dev.