mx4j

Class AbstractDynamicMBean

Implemented Interfaces:
javax.management.DynamicMBean

public abstract class AbstractDynamicMBean
extends java.lang.Object
implements javax.management.DynamicMBean

Utility class that allow the user to easily write DynamicMBeans.
By extending this class, the developer does not have to implement the methods of the DynamicMBean interface, but has instead to provide only the metadata (by overriding few methods) and the implementation (by implementing the methods) of the MBean itself.
The methods to override that provides metadata information are usually the following: For example, the following MBean only has one manageable attribute:
 public class SimpleDynamic extends AbstractDynamicMBean
 {
    protected MBeanAttributeInfo[] createMBeanAttributeInfo()
    {
       return new MBeanAttributeInfo[]
       {
          new MBeanAttributeInfo("Name", String.class.getName(), "The name", true, true, false)
       };
    }
 

protected String getMBeanDescription() { return "A simple DynamicMBean"; }

public String getName() { ... }

public void setName(String name) { ... } }

It is responsibility of the developer to specify the metadata and implement the methods specified by the metadata, that will be invoked via reflection by the AbstractDynamicMBean class. For this reason, the methods belonging to the MBean implementation (in the case above getName() and setName(...)) must be public.
Version:
$Revision: 1.7 $

Constructor Summary

AbstractDynamicMBean()
Only subclasses can create a new instance of an AbstractDynamicMBean.

Method Summary

protected javax.management.MBeanAttributeInfo[]
createMBeanAttributeInfo()
To be overridden to return metadata information about manageable attributes.
protected javax.management.MBeanConstructorInfo[]
createMBeanConstructorInfo()
To be overridden to return metadata information about manageable constructors.
protected javax.management.MBeanInfo
createMBeanInfo()
Creates the MBeanInfo for this instance, calling in succession factory methods that the user can override.
protected javax.management.MBeanNotificationInfo[]
createMBeanNotificationInfo()
To be overridden to return metadata information about manageable notifications.
protected javax.management.MBeanOperationInfo[]
createMBeanOperationInfo()
To be overridden to return metadata information about manageable operations.
protected Method
findMethod(Class cls, String name, Class[] params)
Returns the (public) method with the given name and signature on the given class.
Object
getAttribute(String attribute)
Returns the value of the manageable attribute, as specified by the DynamicMBean interface.
javax.management.AttributeList
getAttributes(String[] attributes)
Returns the manageable attributes, as specified by the DynamicMBean interface.
protected String
getMBeanClassName()
To be overridden to return metadata information about the class name of this MBean; by default returns this class' name.
protected String
getMBeanDescription()
To be overridden to return metadata information about the description of this MBean.
javax.management.MBeanInfo
getMBeanInfo()
Returns the MBeaInfo, as specified by the DynamicMBean interface; the default implementation caches the value returned by createMBeanInfo() (that is thus called only once).
protected Object
getResource()
Returns the resource object on which invoke attribute's getters, attribute's setters and operation's methods
protected Object
invoke(Object resource, String name, Class[] params, Object[] args)
Looks up the method to call on given resource and invokes it.
protected Object
invoke(String name, Class[] params, Object[] args)
Deprecated. Replaced by invoke(Object,String,Class[],Object[]).
Object
invoke(String method, Object[] arguments, String[] params)
Returns the value of the manageable operation as specified by the DynamicMBean interface
protected Object
invokeMethod(Method method, Object resource, Object[] args)
Invokes the given method on the given resource object with the given arguments.
void
setAttribute(javax.management.Attribute attribute)
Sets the value of the manageable attribute, as specified by the DynamicMBean interface.
javax.management.AttributeList
setAttributes(javax.management.AttributeList attributes)
Sets the manageable attributes, as specified by the DynamicMBean interface.
protected void
setMBeanInfo(javax.management.MBeanInfo info)
Sets the MBeanInfo object cached by this instance.
void
setResource(Object resource)
Specifies the resource object on which invoke attribute's getters, attribute's setters and operation's methods.

Constructor Details

AbstractDynamicMBean

protected AbstractDynamicMBean()
Only subclasses can create a new instance of an AbstractDynamicMBean.

Method Details

createMBeanAttributeInfo

protected javax.management.MBeanAttributeInfo[] createMBeanAttributeInfo()
To be overridden to return metadata information about manageable attributes.

createMBeanConstructorInfo

protected javax.management.MBeanConstructorInfo[] createMBeanConstructorInfo()
To be overridden to return metadata information about manageable constructors.

createMBeanInfo

protected javax.management.MBeanInfo createMBeanInfo()

createMBeanNotificationInfo

protected javax.management.MBeanNotificationInfo[] createMBeanNotificationInfo()
To be overridden to return metadata information about manageable notifications.

createMBeanOperationInfo

protected javax.management.MBeanOperationInfo[] createMBeanOperationInfo()
To be overridden to return metadata information about manageable operations.

findMethod

protected Method findMethod(Class cls,
                            String name,
                            Class[] params)
            throws NoSuchMethodException
Returns the (public) method with the given name and signature on the given class.
Override to return non-public methods, or to map methods to other classes, or to map methods with different signatures

getAttribute

public Object getAttribute(String attribute)
            throws javax.management.AttributeNotFoundException,
                   javax.management.MBeanException,
                   javax.management.ReflectionException
Returns the value of the manageable attribute, as specified by the DynamicMBean interface.
Specified by:
getAttribute in interface javax.management.DynamicMBean

getAttributes

public javax.management.AttributeList getAttributes(String[] attributes)
Returns the manageable attributes, as specified by the DynamicMBean interface.
Specified by:
getAttributes in interface javax.management.DynamicMBean

getMBeanClassName

protected String getMBeanClassName()
To be overridden to return metadata information about the class name of this MBean; by default returns this class' name.

getMBeanDescription

protected String getMBeanDescription()
To be overridden to return metadata information about the description of this MBean.

getMBeanInfo

public javax.management.MBeanInfo getMBeanInfo()
Specified by:
getMBeanInfo in interface javax.management.DynamicMBean

getResource

protected Object getResource()
Returns the resource object on which invoke attribute's getters, attribute's setters and operation's methods

invoke

protected Object invoke(Object resource,
                        String name,
                        Class[] params,
                        Object[] args)
            throws javax.management.InvalidAttributeValueException,
                   javax.management.MBeanException,
                   javax.management.ReflectionException
Looks up the method to call on given resource and invokes it. The default implementation requires that the methods that implement attribute and operation behavior on the resource object are public, but it is possible to override this behavior, and call also private methods.

invoke

protected Object invoke(String name,
                        Class[] params,
                        Object[] args)
            throws javax.management.InvalidAttributeValueException,
                   javax.management.MBeanException,
                   javax.management.ReflectionException

Deprecated. Replaced by invoke(Object,String,Class[],Object[]).
The resource passed is the resource as set by setResource(Object) or - if it is null - 'this' instance.
This method is deprecated because it is not thread safe.


invoke

public Object invoke(String method,
                     Object[] arguments,
                     String[] params)
            throws javax.management.MBeanException,
                   javax.management.ReflectionException
Returns the value of the manageable operation as specified by the DynamicMBean interface
Specified by:
invoke in interface javax.management.DynamicMBean

invokeMethod

protected Object invokeMethod(Method method,
                              Object resource,
                              Object[] args)
            throws IllegalAccessException,
                   IllegalArgumentException,
                   InvocationTargetException
Invokes the given method on the given resource object with the given arguments.
Override to map methods to other objects, or to map methods with different arguments

setAttribute

public void setAttribute(javax.management.Attribute attribute)
            throws javax.management.AttributeNotFoundException,
                   javax.management.InvalidAttributeValueException,
                   javax.management.MBeanException,
                   javax.management.ReflectionException
Sets the value of the manageable attribute, as specified by the DynamicMBean interface.
Specified by:
setAttribute in interface javax.management.DynamicMBean

setAttributes

public javax.management.AttributeList setAttributes(javax.management.AttributeList attributes)
Sets the manageable attributes, as specified by the DynamicMBean interface.
Specified by:
setAttributes in interface javax.management.DynamicMBean

setMBeanInfo

protected void setMBeanInfo(javax.management.MBeanInfo info)
Sets the MBeanInfo object cached by this instance.
The given MBeanInfo is not cloned.

setResource

public void setResource(Object resource)
Specifies the resource object on which invoke attribute's getters, attribute's setters and operation's methods.

Copyright © 2001-2005 The MX4J Contributors. All Rights Reserved.