Creación y registro de MBeans estándar, dinámicos y personalizados abiertos

Puede crear MBeans estándar, dinámicos y personalizados abiertos y registrarlos con el servicio administrativo del producto.

Antes de empezar

En esta tarea se da por supuesto que se tienen conocimientos básicos de la programación de MBean. Si desea información sobre la programación de MBean, consulte la documentación de la interfaz de programación de aplicaciones (API) Java™ de MBean. En este Information Center, pulse Reference (Referencia) > Mbean interfaces (Interfaces de Mbean).

No defina nuevas clases como parámetros para los MBeans. Puede que las clases no estén disponibles en todos los procesos. Si debe definir una nueva clase, asegúrese de que la clase está disponible en todos los procesos, incluido el gestor de despliegue, los agentes de nodo y los servidores de aplicaciones. Si la clase no está disponible para un proceso, se produce la excepción ClassNotFoundException para la nueva clase cuando intenta acceder a ésta.

Acerca de esta tarea

Lleve a cabo las tareas siguientes para crear y registrar un MBean estándar, dinámico o personalizado abierto.

Procedimiento

  1. Cree la clase o las clases de MBean concretas.
  2. Escriba un descriptor de MBean en el lenguaje XML del MBean.
  3. Registre el MBean; para ello, inserte el código que utilice la clase colaboradora com.ibm.websphere.management.UserMBeanCollaborator de ejecución de WebSphere Application Server en el código de aplicación.
  4. Empaquete los archivos de clase de la interfaz y la implementación de MBean, el archivo XML de descriptor y el archivo archivador Java (JAR) de la aplicación.

Resultados

Después de llevar a cabo satisfactoriamente estos pasos, tendrá un MBean estándar, dinámico o personalizado abierto registrado y activado con el servicio administrativo del producto.

Ejemplo

En el ejemplo siguiente se muestra cómo crear y registrar un MBean estándar con el servicio administrativo:

SnoopMBean.java:

/**
 * Utilizar el MBean SnoopMBean, que tiene una interfaz de MBean estándar.
 */ 
public interface SnoopMBean {
    public String getIdentification();
    public void snoopy(String parm1);
}

SnoopMBeanImpl.java:

/**
 * SnoopMBeanImpl - Implementación de SnoopMBean
 */ 
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...");
    }
}

Defina el siguiente descriptor de MBean para el MBean en un archivo .xml. El método getIdentification se establece para ejecutarse con la opción unicall y el método snoopy se establece para utilizar la opción multicall. Estas opciones se utilizan sólo para aplicaciones de la plataforma z/OS. Las opciones de WebSphere Application Server para z/OS no son aplicables a las plataformas distribuidas, pero no es necesario suprimirlas. Las opciones se ignoran en las plataformas distribuidas. . Algunas sentencias están partidas en varias líneas para fines de impresión.

Avoid trouble Avoid trouble: Si la ejecución se realiza en un entorno de varias JVM, debe incluir la propiedad de tipo en el descriptor de MBean.gotcha
SnoopMBean.xml:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd">
<MBean type="SnoopMBean"
 version="5.0"
 platform="dynamicproxy"
 description="Sample SnoopMBean to be initialized inside an EJB.">


 <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>
Suponga que el MBean se utiliza como enterprise bean. Registre el MBean en el método ejbCreate de enterprise bean y anule su registro en el método ejbRemove.
//El método MBeanFactory.activateMBean() exige cuatro parámetros:
//Tipo de serie: valor de tipo que se incluye en el descriptor de este MBean. Para este ejemplo 
//el tipo de serie es SnoopMBean.
//RuntimeCollaborator co: instancia colaboradora de MBean de usuario UserMBeanCollaborator 
//que se crea
//ID de serie: nombre exclusivo que se selecciona
//Descriptor de serie: la vía de acceso completa al archivo descriptor de MBean


import com.ibm.websphere.management.UserMBeanCollaborator;
//Importar otras clases aquí.
.
.
.
static private ObjectName snoopyON = null;
static private Object lockObj = "this is a lock";
.
.
.
/**
 * método ejbCreate: registrar el 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();
        }
    }
}
.
.
.
/**
 * método ejbRemove: anular el registro del 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();
        }
    }
}

Qué hacer a continuación

Compile los archivos Java de MBean y empaquete los archivos de clase resultantes con el archivo .xml del descriptor en el archivo JAR del enterprise bean.

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjmx_standard_dynamic_mbean
File name: tjmx_standard_dynamic_mbean.html