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