|
||||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--mx4j.AbstractDynamicMBean
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:
createMBeanAttributeInfo
, if the MBeans has manageable attributes createMBeanOperationInfo
, if the MBeans has manageable operations createMBeanNotificationInfo
, if the MBeans has manageable notifications createMBeanConstructorInfo
, if the MBeans has manageable constructors getMBeanDescription
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.
Constructor Summary | |
---|---|
protected |
AbstractDynamicMBean()
Only subclasses can create a new instance of an AbstractDynamicMBean. |
Method Summary | |
---|---|
protected MBeanAttributeInfo[] |
createMBeanAttributeInfo()
To be overridden to return metadata information about manageable attributes. |
protected MBeanConstructorInfo[] |
createMBeanConstructorInfo()
To be overridden to return metadata information about manageable constructors. |
protected MBeanInfo |
createMBeanInfo()
Creates the MBeanInfo for this instance, calling in succession factory methods that the user can override. |
protected MBeanNotificationInfo[] |
createMBeanNotificationInfo()
To be overridden to return metadata information about manageable notifications. |
protected MBeanOperationInfo[] |
createMBeanOperationInfo()
To be overridden to return metadata information about manageable operations. |
protected java.lang.reflect.Method |
findMethod(java.lang.Class cls,
java.lang.String name,
java.lang.Class[] params)
Returns the (public) method with the given name and signature on the given class. |
java.lang.Object |
getAttribute(java.lang.String attribute)
Returns the value of the manageable attribute, as specified by the DynamicMBean interface. |
AttributeList |
getAttributes(java.lang.String[] attributes)
Returns the manageable attributes, as specified by the DynamicMBean interface. |
protected java.lang.String |
getMBeanClassName()
To be overridden to return metadata information about the class name of this MBean; by default returns this class' name. |
protected java.lang.String |
getMBeanDescription()
To be overridden to return metadata information about the description of this MBean. |
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 java.lang.Object |
getResource()
Returns the resource object on which invoke attribute's getters, attribute's setters and operation's methods |
protected java.lang.Object |
invoke(java.lang.String name,
java.lang.Class[] params,
java.lang.Object[] args)
Looks up the method to call on the object set as resource (see setResource(java.lang.Object) ) and invokes it. |
java.lang.Object |
invoke(java.lang.String method,
java.lang.Object[] arguments,
java.lang.String[] params)
Returns the value of the manageable operation as specified by the DynamicMBean interface |
protected java.lang.Object |
invokeMethod(java.lang.reflect.Method method,
java.lang.Object resource,
java.lang.Object[] args)
Invokes the given method on the given resource object with the given arguments. |
void |
setAttribute(Attribute attribute)
Sets the value of the manageable attribute, as specified by the DynamicMBean interface. |
AttributeList |
setAttributes(AttributeList attributes)
Sets the manageable attributes, as specified by the DynamicMBean interface. |
protected void |
setMBeanInfo(MBeanInfo info)
Sets the MBeanInfo object cached by this instance. |
void |
setResource(java.lang.Object resource)
Specifies the resource object on which invoke attribute's getters, attribute's setters and operation's methods. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
protected AbstractDynamicMBean()
createMBeanConstructorInfo()
Method Detail |
public java.lang.Object getAttribute(java.lang.String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException
getAttribute
in interface DynamicMBean
attribute
- The attribute name for the value being retrieved.
ReflectionException
- Wraps a java.lang.Exception while trying
to invoke the getter.
AttributeNotFoundException
- If the given attribute isn't found.
MBeanException
- Wraps a java.lang.ExceptioncreateMBeanAttributeInfo()
public AttributeList getAttributes(java.lang.String[] attributes)
getAttributes
in interface DynamicMBean
attributes
- The array of attributes being retrieved
Attribute
public MBeanInfo getMBeanInfo()
createMBeanInfo()
(that is thus called only once).
getMBeanInfo
in interface DynamicMBean
MBeanInfo
createMBeanInfo()
,
setMBeanInfo(javax.management.MBeanInfo)
public java.lang.Object invoke(java.lang.String method, java.lang.Object[] arguments, java.lang.String[] params) throws MBeanException, ReflectionException
invoke
in interface DynamicMBean
method
- The name of the method to be invoked.arguments
- The array of arguments to be set.params
- Contains the signature of the method to be invoked.
MBeanException
- Wraps a java.lang.Exception
ReflectionException
createMBeanOperationInfo()
public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException
setAttribute
in interface DynamicMBean
attribute
- The Attribute
being set.
MBeanException
- Wraps a java.lang.Exception which is thrown
by the setter.
AttributeNotFoundException
InvalidAttributeValueException
ReflectionException
createMBeanAttributeInfo()
public AttributeList setAttributes(AttributeList attributes)
setAttributes
in interface DynamicMBean
attributes
- The attribute being set.
Attribute
successfully set.protected java.lang.Object invoke(java.lang.String name, java.lang.Class[] params, java.lang.Object[] args) throws InvalidAttributeValueException, MBeanException, ReflectionException
setResource(java.lang.Object)
) and invokes it.
If the resource object is not specified, defaults to 'this'.
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.
InvalidAttributeValueException
MBeanException
ReflectionException
findMethod(java.lang.Class, java.lang.String, java.lang.Class[])
,
invokeMethod(java.lang.reflect.Method, java.lang.Object, java.lang.Object[])
protected java.lang.reflect.Method findMethod(java.lang.Class cls, java.lang.String name, java.lang.Class[] params) throws java.lang.NoSuchMethodException
java.lang.NoSuchMethodException
invoke(String, Class[], Object[])
,
invokeMethod(java.lang.reflect.Method, java.lang.Object, java.lang.Object[])
protected java.lang.Object invokeMethod(java.lang.reflect.Method method, java.lang.Object resource, java.lang.Object[] args) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException
java.lang.IllegalAccessException
java.lang.IllegalArgumentException
java.lang.reflect.InvocationTargetException
invoke(String, Class[], Object[])
,
findMethod(java.lang.Class, java.lang.String, java.lang.Class[])
protected java.lang.Object getResource()
setResource(java.lang.Object)
public void setResource(java.lang.Object resource)
getResource()
protected void setMBeanInfo(MBeanInfo info)
getMBeanInfo()
protected MBeanInfo createMBeanInfo()
createMBeanAttributeInfo()
createMBeanConstructorInfo()
createMBeanOperationInfo()
createMBeanNotificationInfo()
getMBeanClassName()
getMBeanDescription()
protected MBeanAttributeInfo[] createMBeanAttributeInfo()
protected MBeanConstructorInfo[] createMBeanConstructorInfo()
protected MBeanOperationInfo[] createMBeanOperationInfo()
protected MBeanNotificationInfo[] createMBeanNotificationInfo()
protected java.lang.String getMBeanClassName()
protected java.lang.String getMBeanDescription()
|
||||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |