User: ejort   
  Date: 02/04/14 08:28:07

  Modified:    src/main/org/jboss/mx/server/registry
                        BasicMBeanRegistry.java MBeanRegistry.java
  Added:       src/main/org/jboss/mx/server/registry
                        ManagedMBeanRegistry.java
  Removed:     src/main/org/jboss/mx/server/registry
                        BasicMBeanRegistryMBean.java
  Log:
  POJO Registry and correct Notification source from the MBeanServer
  
  Revision  Changes    Path
  1.14      +8 -41     
jmx/src/main/org/jboss/mx/server/registry/BasicMBeanRegistry.java
  
  Index: BasicMBeanRegistry.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jmx/src/main/org/jboss/mx/server/registry/BasicMBeanRegistry.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- BasicMBeanRegistry.java   9 Apr 2002 00:07:09 -0000       1.13
  +++ BasicMBeanRegistry.java   14 Apr 2002 15:28:07 -0000      1.14
  @@ -42,24 +42,18 @@
    * The implementation of this class affects the invocation speed
    * directly, please check any changes for performance.
    *
  - * info@todo Shouldn't be a standard mbean
  - * info@todo Don't expose all methods for management
  - * info@todo Create a BasicMBeanRegistrySupport
  - * info@todo JMI_DOMAIN isn't very protected
  - * info@todo check garbage collection MBeanServer <--> Registry
  - * info@todo make register/unregister into interceptors for custom
  - *           processing add different stages of the process
  - * info@todo check race conditions for MT (un)registerMBean (uses long types)
  + * @todo JMI_DOMAIN isn't very protected
  + * @todo check race conditions for MT (un)registerMBean (uses long types)
    *
    * @see org.jboss.mx.server.registry.MBeanRegistry
    *
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Juha Lindfors</a>.
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Trevor Squires</a>.
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Adrian Brock</a>.
  - * @version $Revision: 1.13 $
  + * @version $Revision: 1.14 $
    */
   public class BasicMBeanRegistry
  -   implements MBeanRegistry, BasicMBeanRegistryMBean
  +   implements MBeanRegistry
   {
      // Attributes ----------------------------------------------------
   
  @@ -86,11 +80,6 @@
      private MBeanServerDelegate delegate = null;
   
      /**
  -    * The MBean server delegate's object name.
  -    */
  -   private ObjectName delegateName = null;
  -
  -   /**
       * The loader repository for loading classes
       */
      private LoaderRepository loaderRepository  = 
LoaderRepository.getDefaultLoaderRepository();
  @@ -130,8 +119,8 @@
         try
         {
            this.delegate = new MBeanServerDelegate();
  -         this.delegateName = new ObjectName(MBEAN_SERVER_DELEGATE);
  -         registerMBean(delegate, delegateName, null, JMI_DOMAIN);
  +         registerMBean(delegate, new ObjectName(MBEAN_SERVER_DELEGATE), 
  +                       null, JMI_DOMAIN);
         }
         catch (MalformedObjectNameException e)
         {
  @@ -149,28 +138,6 @@
         {
            throw new Error("MBean Server Delegate is not a compliant MBean");
         }
  -
  -      // Register ourselves
  -      try
  -      {
  -         registerMBean(this, new ObjectName(MBEAN_REGISTRY), null, JMI_DOMAIN);
  -      }
  -      catch (MalformedObjectNameException e)
  -      {
  -         throw new Error("Cannot create MBean Registry.");
  -      }
  -      catch (InstanceAlreadyExistsException e)
  -      {
  -         throw new Error("Cannot register the MBean Registry.");
  -      }
  -      catch (MBeanRegistrationException e)
  -      {
  -         throw new Error("Exception registering the the Registry: " + 
e.getTargetException().toString());
  -      }
  -      catch (NotCompliantMBeanException e)
  -      {
  -         throw new Error("MBean Registry is not a compliant MBean");
  -      }
      }
   
      // Public --------------------------------------------------------
  @@ -266,7 +233,7 @@
                     delegate.sendNotification(
                        new MBeanServerNotification(
                           MBeanServerNotification.REGISTRATION_NOTIFICATION,
  -                        delegateName, registrationNotificationSequence++, regName));
  +                        delegate, registrationNotificationSequence++, regName));
   
                     return new ServerObjectInstance(regName, 
entry.getResourceClassName(),
                                                     delegate.getMBeanServerId());
  @@ -388,7 +355,7 @@
         delegate.sendNotification(
            new MBeanServerNotification(
               MBeanServerNotification.UNREGISTRATION_NOTIFICATION,
  -            delegateName,
  +            delegate,
               unregistrationNotificationSequence++,
               name
            )
  
  
  
  1.4       +5 -3      jmx/src/main/org/jboss/mx/server/registry/MBeanRegistry.java
  
  Index: MBeanRegistry.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jmx/src/main/org/jboss/mx/server/registry/MBeanRegistry.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MBeanRegistry.java        1 Mar 2002 19:25:58 -0000       1.3
  +++ MBeanRegistry.java        14 Apr 2002 15:28:07 -0000      1.4
  @@ -21,13 +21,15 @@
    * Implementations of this interface can be plugged into the MBeanServer,
    * to control the registration and deregistration of MBeans<p>
    * 
  - * The implementation should be an MBean and register itself in the
  - * JMImplementation domain during construction.
  + * The registry can expose itself for management under the object name
  + * defined the name defined in {@link ServerConstants}
  + * When this is the case, the MBeanServer will perform the
  + * register/unregister operations dynamically.
    * 
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Juha Lindfors</a>.
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Trevor Squires</a>.
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Adrian Brock</a>.
  - * @version $Revision: 1.3 $
  + * @version $Revision: 1.4 $
    *
    * @see MBeanEntry
    */
  
  
  
  1.1                  
jmx/src/main/org/jboss/mx/server/registry/ManagedMBeanRegistry.java
  
  Index: ManagedMBeanRegistry.java
  ===================================================================
  /*
   * JBoss, the OpenSource J2EE webOS
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  package org.jboss.mx.server.registry;
  
  import javax.management.InstanceAlreadyExistsException;
  import javax.management.InstanceNotFoundException;
  import javax.management.MalformedObjectNameException;
  import javax.management.MBeanParameterInfo;
  import javax.management.MBeanException;
  import javax.management.MBeanServer;
  import javax.management.MBeanRegistrationException;
  import javax.management.NotCompliantMBeanException;
  import javax.management.ObjectInstance;
  import javax.management.ObjectName;
  import javax.management.modelmbean.DescriptorSupport;
  import javax.management.modelmbean.InvalidTargetObjectTypeException;
  import javax.management.modelmbean.ModelMBeanAttributeInfo;
  import javax.management.modelmbean.ModelMBeanConstructorInfo;
  import javax.management.modelmbean.ModelMBeanInfoSupport;
  import javax.management.modelmbean.ModelMBeanNotificationInfo;
  import javax.management.modelmbean.ModelMBeanOperationInfo;
  import javax.management.modelmbean.RequiredModelMBean;
  
  /**
   * A managed version of the MBean registry. It registers itself as an
   * mbean, exposing methods and attributes for management.
   *
   * @author  <a href="mailto:[EMAIL PROTECTED]";>Adrian Brock</a>.
   * @version $Revision: 1.1 $
   */
  public class ManagedMBeanRegistry
     extends BasicMBeanRegistry
  {
     // Attributes ----------------------------------------------------
  
     // Static --------------------------------------------------------
  
     // Constructors --------------------------------------------------
  
     /**
      * Constructs a new BasicMBeanRegistry with itself already
      * registered.<p>
      *
      * @param the mbean server for which we are the registry
      * @param the default domain of this registry.
      */
     public ManagedMBeanRegistry(MBeanServer server, String defaultDomain)
     {
        super(server, defaultDomain);
  
        final boolean READABLE = true;
        final boolean WRITABLE = true;
        final boolean BOOLEAN = true;
  
        try
        {
           // Default Domain attribute
           DescriptorSupport descDefaultDomain = new DescriptorSupport();
           descDefaultDomain.setField("name", "DefaultDomain");
           descDefaultDomain.setField("descriptorType", "attribute");
           descDefaultDomain.setField("displayName", "Default Domain");
           descDefaultDomain.setField("default", defaultDomain);
           ModelMBeanAttributeInfo defaultDomainInfo = 
           new ModelMBeanAttributeInfo
           (
              "DefaultDomain", String.class.getName(),
              "The domain to use when an object name has no domain",
              READABLE, !WRITABLE, !BOOLEAN,
              descDefaultDomain
           );
  
           // Size attribute
           DescriptorSupport descSize = new DescriptorSupport();
           descSize.setField("name", "Size");
           descSize.setField("descriptorType", "attribute");
           descSize.setField("displayName", "Size");
           descSize.setField("getMethod", "getSize");
           ModelMBeanAttributeInfo sizeInfo = 
           new ModelMBeanAttributeInfo
           (
              "Size", Integer.TYPE.getName(),
              "The number of MBeans registered in the MBean Server",
              READABLE, !WRITABLE, !BOOLEAN,
              descSize
           );
  
           // registerMBean operation
           DescriptorSupport descRegisterMBean = new DescriptorSupport();
           descRegisterMBean.setField("name", "registerMBean");
           descRegisterMBean.setField("descriptorType", "operation");
           descRegisterMBean.setField("role", "operation");
           MBeanParameterInfo[] registerMBeanParms =
           new MBeanParameterInfo[]
           {
               new MBeanParameterInfo
               (
                  "Resource", 
                  Object.class.getName(),
                  "A compliant MBean to be registered in the MBean Server"
               ),
               new MBeanParameterInfo
               (
                  "ObjectName",
                  ObjectName.class.getName(),
                  "The object name of the MBean"
               ),
               new MBeanParameterInfo
               (
                  "ClassLoader",
                  ClassLoader.class.getName(),
                  "The context classloader for the MBean"
               ),
               new MBeanParameterInfo
               (
                  "Magic",
                  Object.class.getName(),
                  "A magic token used to register into the JMImplementation Domain"
               )
           };
           ModelMBeanOperationInfo registerMBeanInfo = 
           new ModelMBeanOperationInfo
           (
              "registerMBean",
              "Adds an MBean in the MBeanServer",
              registerMBeanParms,
              ObjectInstance.class.getName(),
              ModelMBeanOperationInfo.ACTION_INFO,
              descRegisterMBean
           );
  
           // unregisterMBean operation
           DescriptorSupport descUnregisterMBean = new DescriptorSupport();
           descUnregisterMBean.setField("name", "unregisterMBean");
           descUnregisterMBean.setField("descriptorType", "operation");
           descUnregisterMBean.setField("role", "operation");
           MBeanParameterInfo[] unregisterMBeanParms =
           new MBeanParameterInfo[]
           {
               new MBeanParameterInfo
               (
                  "ObjectName",
                  ObjectName.class.getName(),
                  "The object name of the MBean to remove"
               )
           };
           ModelMBeanOperationInfo unregisterMBeanInfo = 
           new ModelMBeanOperationInfo
           (
              "unregisterMBean",
              "Removes an MBean from the MBeanServer",
              unregisterMBeanParms,
              Void.TYPE.getName(),
              ModelMBeanOperationInfo.ACTION,
              descUnregisterMBean
           );
  
           // Construct the modelmbean
           DescriptorSupport descMBean = new DescriptorSupport();
           descMBean.setField("name", "MBeanRegistry");
           descMBean.setField("descriptorType", "MBean");
           ModelMBeanInfoSupport info = new ModelMBeanInfoSupport
           (
              RequiredModelMBean.class.getName(),
              "Managed Bean Registry",
              new ModelMBeanAttributeInfo[]
              {
                 defaultDomainInfo,
                 sizeInfo
              },
              (ModelMBeanConstructorInfo[]) null,
              new ModelMBeanOperationInfo[]
              {
                 registerMBeanInfo,
                 unregisterMBeanInfo
              },
              (ModelMBeanNotificationInfo[]) null,
              descMBean
           );
           RequiredModelMBean registry = new RequiredModelMBean();
           registry.setModelMBeanInfo(info);
           registry.setManagedResource(this, "ObjectReference");
  
           // Register it
           registerMBean(registry, new ObjectName(MBEAN_REGISTRY), null, 
                         JMI_DOMAIN);
        }
        catch (MalformedObjectNameException e)
        {
           throw new Error("Cannot create MBean Registry ObjectName.");
        }
        catch (InvalidTargetObjectTypeException e)
        {
           throw new Error("Registry cannot be managed: " + e.toString());
        }
        catch (InstanceAlreadyExistsException e)
        {
           throw new Error("Cannot register the MBean Registry.");
        }
        catch (InstanceNotFoundException e)
        {
           throw new Error("Registry cannot be managed: " + e.toString());
        }
        catch (MBeanException e)
        {
           throw new Error("Cannot create MBean Registry." + 
e.getTargetException().toString());
        }
        catch (NotCompliantMBeanException e)
        {
           throw new Error("MBean Registry is not a compliant MBean");
        }
     }
  
     // Public --------------------------------------------------------
  
     // X Implementation ----------------------------------------------
  
     // Y Overrides ---------------------------------------------------
  
     // Protected -----------------------------------------------------
  
     // Package -------------------------------------------------------
  
     // Private -------------------------------------------------------
  
     // Inner Classes -------------------------------------------------
  }
  
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to