|
Sonic Management API | |||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjavax.management.StandardMBean
public class StandardMBean
An MBean whose management interface is determined by reflection on a Java interface.
This class brings more flexibility to the notion of Management Interface in the use of Standard MBeans. Straightforward use of the patterns for Standard MBeans described in the JMX Specification means that there is a fixed relationship between the implementation class of an MBean and its management interface (i.e., if the implementation class is Thing, the management interface must be ThingMBean). This class makes it possible to keep the convenience of specifying the management interface with a Java interface, without requiring that there be any naming relationship between the implementation and interface classes.
By making a DynamicMBean out of an MBean, this class makes it possible to select any interface implemented by the MBean as its management interface, provided that it complies with JMX patterns (i.e., attributes defined by getter/setter etc...).
This class also provides hooks that make it possible to supply
custom descriptions and names for the MBeanInfo
returned by
the DynamicMBean interface.
Using this class, an MBean can be created with any implementation class name Impl and with a management interface defined (as for current Standard MBeans) by any interface Intf, in one of two general ways:
StandardMBean(impl,interface)
:
MBeanServer mbs; ... Impl impl = new Impl(...); StandardMBean mbean = new StandardMBean(impl, Intf.class); mbs.registerMBean(mbean, objectName);
public class Impl extends StandardMBean implements Intf { public Impl() { super(Intf.class); } // implement methods of Intf } [...] MBeanServer mbs; .... Impl impl = new Impl(); mbs.registerMBean(impl, objectName);
In either case, the class Impl must implement the interface Intf.
Standard MBeans based on the naming relationship between implementation and interface classes are of course still available.
Constructor Summary | |
---|---|
StandardMBean(java.lang.Object implementation,
java.lang.Class mbeanInterface)
Make a DynamicMBean out of the object implementation, using the specified mbeanInterface class. |
Method Summary | |
---|---|
java.lang.Object |
getAttribute(java.lang.String attribute)
Obtain the value of a specific attribute of the Dynamic MBean. |
AttributeList |
getAttributes(java.lang.String[] attributes)
Get the values of several attributes of the Dynamic MBean. |
java.lang.Object |
getImplementation()
Get the implementation of this MBean. |
java.lang.Class |
getImplementationClass()
Get the class of the implementation of this MBean. |
MBeanInfo |
getMBeanInfo()
Get the MBeanInfo for this MBean. |
java.lang.Class |
getMBeanInterface()
Get the Management Interface of this MBean. |
java.lang.Object |
invoke(java.lang.String actionName,
java.lang.Object[] params,
java.lang.String[] signature)
Allows an action to be invoked on the Dynamic MBean. |
void |
setAttribute(Attribute attribute)
Set the value of a specific attribute of the Dynamic MBean. |
AttributeList |
setAttributes(AttributeList attributes)
Sets the values of several attributes of the Dynamic MBean. |
void |
setImplementation(java.lang.Object implementation)
Replace the implementation object wrapped in this object. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public StandardMBean(java.lang.Object implementation, java.lang.Class mbeanInterface) throws NotCompliantMBeanException
Make a DynamicMBean out of the object implementation, using the specified mbeanInterface class.
implementation
- The implementation of this MBean.mbeanInterface
- The Management Interface exported by this
MBean's implementation. If null
, then this
object will use standard JMX design pattern to determine
the management interface associated with the given
implementation.
java.lang.IllegalArgumentException
- if the given
implementation is null.
NotCompliantMBeanException
- if the mbeanInterface
does not follow JMX design patterns for Management Interfaces, or
if the given implementation does not implement the
specified interface.Method Detail |
---|
public java.lang.Object getAttribute(java.lang.String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException
DynamicMBean
getAttribute
in interface DynamicMBean
attribute
- The name of the attribute to be retrieved
AttributeNotFoundException
MBeanException
- Wraps a java.lang.Exception
thrown by the MBean's getter.
ReflectionException
- Wraps a java.lang.Exception
thrown while trying to invoke the getter.DynamicMBean.setAttribute(javax.management.Attribute)
public AttributeList getAttributes(java.lang.String[] attributes)
DynamicMBean
getAttributes
in interface DynamicMBean
attributes
- A list of the attributes to be retrieved.
DynamicMBean.setAttributes(javax.management.AttributeList)
public java.lang.Object getImplementation()
setImplementation(java.lang.Object)
public java.lang.Class getImplementationClass()
public MBeanInfo getMBeanInfo()
MBeanInfo
for this MBean.
This method implements
DynamicMBean.getMBeanInfo()
.
This method first calls getCachedMBeanInfo()
in order to
retrieve the cached MBeanInfo for this MBean, if any. If the
MBeanInfo returned by getCachedMBeanInfo()
is not null,
then it is returned.
Otherwise, this method builds a default MBeanInfo for this MBean,
using the Management Interface specified for this MBean.
While building the MBeanInfo, this method calls the customization
hooks that make it possible for subclasses to supply their custom
descriptions, parameter names, etc...
Finally, it calls cacheMBeanInfo()
in order to cache the new MBeanInfo.
getMBeanInfo
in interface DynamicMBean
public final java.lang.Class getMBeanInterface()
public java.lang.Object invoke(java.lang.String actionName, java.lang.Object[] params, java.lang.String[] signature) throws MBeanException, ReflectionException
DynamicMBean
invoke
in interface DynamicMBean
actionName
- The name of the action to be invoked.params
- An array containing the parameters to be set when the action is
invoked.signature
- An array containing the signature of the action. The class objects will
be loaded through the same class loader as the one used for loading the
MBean on which the action is invoked.
MBeanException
- Wraps a java.lang.Exception
thrown by the MBean's invoked method.
ReflectionException
- Wraps a java.lang.Exception
thrown while trying to invoke the methodpublic void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException
DynamicMBean
setAttribute
in interface DynamicMBean
attribute
- The identification of the attribute to
be set and the value it is to be set to.
AttributeNotFoundException
InvalidAttributeValueException
MBeanException
- Wraps a java.lang.Exception
thrown by the MBean's setter.
ReflectionException
- Wraps a java.lang.Exception
thrown while trying to invoke the MBean's setter.DynamicMBean.getAttribute(java.lang.String)
public AttributeList setAttributes(AttributeList attributes)
DynamicMBean
setAttributes
in interface DynamicMBean
attributes
- A list of attributes: The identification of the
attributes to be set and the values they are to be set to.
DynamicMBean.getAttributes(java.lang.String[])
public void setImplementation(java.lang.Object implementation) throws NotCompliantMBeanException
Replace the implementation object wrapped in this object.
implementation
- The new implementation of this MBean.
The implementation
object must implement the MBean
interface that was supplied when this
StandardMBean
was constructed.
java.lang.IllegalArgumentException
- if the given
implementation is null.
NotCompliantMBeanException
- if the given
implementation does not implement the MBean
interface that was supplied at construction.getImplementation()
|
Sonic Management API | |||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |