Création et enregistrement de MBeans standard, dynamiques et ouverts personnalisés

Vous pouvez créer des MBeans standard, dynamiques et ouverts personnalisés, puis les enregistrer avec le service d'administration de produit.

Avant de commencer

Cette tâche suppose une connaissance de base de la programmation MBean. Pour plus d'informations sur la programmation MBean, voir la documentation sur l'API (Application Programming Interface) Java™ MBean. Dans le centre de documentation, cliquez sur Référence > Interface Mbean.

Ne définissez pas de nouvelles classes comme paramètres pour vos MBeans. Les classes risquent de ne pas être disponibles dans tous les processus. Si vous devez définir une nouvelle classe, vérifiez qu'elle est disponible sur tous les processus, y compris le gestionnaire de déploiement, les agents de noeud et les serveurs d'applications. Si elle n'est pas disponible pour un processus, l'exception ClassNotFoundException a lieu pour la nouvelle classe lorsque vous tentez d'y accéder.

Pourquoi et quand exécuter cette tâche

Procédez comme suit pour créer et enregistrer un MBean standard, dynamique ou ouvert personnalisé.

Procédure

  1. Créez une ou plusieurs classes MBean.
  2. Ecrivez un descripteur MBean en XML pour votre MBean.
  3. Enregistrez le MBean en insérant du code utilisant la classe de collaborateur com.ibm.websphere.management.UserMBeanCollaborator du contexte d'exécution de WebSphere Application Server dans le code de l'application.
  4. Placez dans un package les fichiers classe pour l'interface et l'implémentation MBean, le fichier XML du descripteur et le fichier JAR (Java Archive).

Résultats

Au terme de cette procédure, vous obtenez un MBean standard, dynamique ou ouvert personnalisé qui est enregistré et activé avec le service d'administration du produit.

Exemple

L'exemple suivant montre comment créer et enregistrer un MBean standard avec le service d'administration :

SnoopMBean.java:

/**
 * Use the SnoopMBean MBean, which has a standard mbean interface.
 */ 
public interface SnoopMBean {
    public String getIdentification();
    public void snoopy(String parm1);
}

SnoopMBeanImpl.java:

/**
 * SnoopMBeanImpl - SnoopMBean implementation
 */ 
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...");
    }
}

Définissez le descripteur MBean suivant pour votre MBean dans un fichier .xml. La méthode getIdentification est définie avec l'option d'appel unique, la méthode snoopy pour utiliser l'option d'appels multiples. Ces options ne sont valables que pour les applications de la plateforme z/OS. Les options de WebSphere Application Server for z/OS ne s'appliquent pas aux plateformes distribuées; il est toutefois inutile de les supprimer. Elles sont simplement ignorées sur les plateformes distribuées . Certaines instructions sont présentées sur plusieurs lignes à des fins d'affichage.

Eviter les incidents Eviter les incidents: Si vous vous exécutez dans un environnement JVM multiple, vous devez inclure la propriété type dans le descripteur 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>
Imaginez que votre MBean est utilisé dans un bean enterprise. Enregistrez-le dans la méthode ejbCreate du bean enterprise et supprimez son enregistrement dans la méthode ejbRemove.
//The method MBeanFactory.activateMBean() requires four parameters:
//String type: The type value that you put in this MBean's descriptor. For this example 
//the string type is SnoopMBean.
//RuntimeCollaborator co: The UserMBeanCollaborator user MBean collaborator instance 
//that you create
//String id: Unique name that you pick
//String descriptor: The full path to the MBean descriptor file


import com.ibm.websphere.management.UserMBeanCollaborator;
//Import other classes here.
.
.
.
static private ObjectName snoopyON = null;
static private Object lockObj = "this is a lock";
.
.
.
/**
 * ejbCreate method: Register your 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();
        }
    }
}
.
.
.
/**
 * ejbRemove method: Unregister your 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();
        }
    }
}

Que faire ensuite

Compilez les fichiers Java du MBean et placez dans un package les fichiers classe obtenus avec le fichier .xml du descripteur, dans le fichier JAR du bean enterprise.

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjmx_standard_dynamic_mbean
Nom du fichier : tjmx_standard_dynamic_mbean.html