javax.management
Class StandardMBean
- DynamicMBean
Provides a dynamic management bean by using reflection on an
interface and an implementing class. By default, a bean instance
is paired up with its interface based on specific naming
conventions (if the implementation is called X, the interface must
be XMBean). Using this class removes the need to use a specific
naming system to match up the two. Instead, an instance of this
bean is created either via explicit construction or subclassing,
and this provides access to the attributes, constructors and
operations of the implementation via reflection. Various hooks are
provided in order to allow customization of this process.
protected void | cacheMBeanInfo(MBeanInfo info) - Caches the
MBeanInfo instance for this object.
|
Object | getAttribute(String name) - Obtains the value of the specified attribute of the
management bean.
|
AttributeList | getAttributes(String[] names) - Obtains the values of each of the specified attributes
of the management bean.
|
protected MBeanInfo | getCachedMBeanInfo() - Returns the cached
MBeanInfo instance for this object.
|
protected String | getClassName(MBeanInfo info) - Returns the class name that will be used in the
MBeanInfo
instance.
|
protected MBeanConstructorInfo[] | getConstructors(MBeanConstructorInfo[] constructors, Object impl) - Returns information on the constructors that will be used in
the
MBeanInfo instance.
|
protected String | getDescription(MBeanAttributeInfo info) - Returns the description of the attribute that will be used in
the supplied
MBeanAttributeInfo instance.
|
protected String | getDescription(MBeanConstructorInfo info) - Returns the description of the constructor that will be used in
the supplied
MBeanConstructorInfo instance.
|
protected String | getDescription(MBeanConstructorInfo info, MBeanParameterInfo param, int n) - Returns the description of the nth parameter of the constructor
that will be used in the supplied
MBeanParameterInfo
instance.
|
protected String | getDescription(MBeanFeatureInfo info) - Returns the description of the supplied feature that
will be used in the supplied
MBeanFeatureInfo
instance.
|
protected String | getDescription(MBeanInfo info) - Returns the description of the bean that will be used in the
supplied
MBeanInfo instance.
|
protected String | getDescription(MBeanOperationInfo info) - Returns the description of the operation that will be used in
the supplied
MBeanOperationInfo instance.
|
protected String | getDescription(MBeanOperationInfo info, MBeanParameterInfo param, int n) - Returns the description of the nth parameter of the operation
that will be used in the supplied
MBeanParameterInfo
instance.
|
protected int | getImpact(MBeanOperationInfo info) - Returns the impact of the operation that will be used in the
supplied
MBeanOperationInfo instance.
|
Object | getImplementation() - Returns the instance that implements this bean.
|
Class> | getImplementationClass() - Returns the class of the instance that implements this bean.
|
MBeanInfo | getMBeanInfo() -
Returns an information object which lists the attributes
and actions associated with the management bean.
|
Class> | getMBeanInterface() - Returns the interface for this management bean.
|
protected String | getParameterName(MBeanConstructorInfo info, MBeanParameterInfo param, int n) - Returns the name of the nth parameter of the constructor
that will be used in the supplied
MBeanParameterInfo
instance.
|
protected String | getParameterName(MBeanOperationInfo info, MBeanParameterInfo param, int n) - Returns the name of the nth parameter of the operation
that will be used in the supplied
MBeanParameterInfo
instance.
|
Object | invoke(String name, Object[] params, String[] signature) - Invokes the specified action on the management bean using
the supplied parameters.
|
void | setAttribute(Attribute attribute) - Sets the value of the specified attribute of the
management bean.
|
AttributeList | setAttributes(AttributeList attributes) - Sets the value of each of the specified attributes
to that supplied by the
Attribute object.
|
void | setImplementation(Object impl) - Replaces the implementation of the interface used by this
instance with the one specified.
|
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
StandardMBean
public StandardMBean(T impl,
Class iface)
throws NotCompliantMBeanException
Constructs a new
StandardMBean
using the specified
interface and the supplied instance as the implementation.
impl
- the implementation.iface
- the interface the bean implements, or null
if the interface should be determined using the naming
convention (class X has interface XMBean).
StandardMBean
protected StandardMBean(Class> iface)
throws NotCompliantMBeanException
Constructs a new
StandardMBean
using the specified
interface and
this
as the instance. This should
be used to create an instance via subclassing.
iface
- the interface this bean implements, or null
if the interface should be determined using the naming
convention (class X has interface XMBean).
NotCompliantMBeanException
- if this class doesn't implement
the interface or a method appears
in the interface that doesn't comply
with the naming conventions.
cacheMBeanInfo
protected void cacheMBeanInfo(MBeanInfo info)
Caches the
MBeanInfo
instance for this object. This is a
customization hook, so that subclasses can choose the caching policy
used. The default implementation caches the value in the instance
itself. Subclasses may override this so as to not cache the data
at all, or so as to use a cache shared between multiple beans.
info
- the MBeanInfo
instance to cache, or null
if there is no new value to cache. When the value is not
null
, the cache should replace the current value
with the value supplied here.
getAttribute
public Object getAttribute(String name)
throws AttributeNotFoundException,
MBeanException,
ReflectionException
Obtains the value of the specified attribute of the
management bean. The management bean should perform
a lookup for the named attribute, and return its value
by calling the appropriate getter method, if possible.
- getAttribute in interface DynamicMBean
name
- the name of the attribute to retrieve.
- the value of the specified attribute.
AttributeNotFoundException
- if the name does not
correspond to an attribute
of the bean.MBeanException
- if retrieving the attribute causes
the bean to throw an exception (which
becomes the cause of this exception).ReflectionException
- if an exception occurred in trying
to use the reflection interface
to lookup the attribute. The
thrown exception is the cause of
this exception.
getAttributes
public AttributeList getAttributes(String[] names)
Obtains the values of each of the specified attributes
of the management bean. The returned list includes
those attributes that were retrieved and their
corresponding values.
- getAttributes in interface DynamicMBean
names
- the names of the attributes to retrieve.
- a list of the retrieved attributes.
getCachedMBeanInfo
protected MBeanInfo getCachedMBeanInfo()
Returns the cached
MBeanInfo
instance for this object. This is a
customization hook, so that subclasses can choose the caching policy
used. The default implementation caches the value in the instance
itself, and returns this value on calls to this method.
- the cached
MBeanInfo
instance, or null
if no value is cached.
getClassName
protected String getClassName(MBeanInfo info)
Returns the class name that will be used in the
MBeanInfo
instance. This is a customization hook, so that subclasses can
provide a custom class name. By default, this returns the class
name from the supplied
MBeanInfo
instance.
info
- the MBeanInfo
instance constructed via
reflection.
- the class name to use in the instance.
getConstructors
protected MBeanConstructorInfo[] getConstructors(MBeanConstructorInfo[] constructors,
Object impl)
Returns information on the constructors that will be used in
the
MBeanInfo
instance. This is a customization hook,
so that subclasses can provide their own information on the
bean's constructors, if necessary. By default, this method
returns
null
unless the implementation supplied
is either
null
or
this
. This default
implementation prevents the use of
MBeanServer.createMBean
in cases where the bean is
not created as a subclass of
StandardMBean
.
constructors
- the constructor information created via
reflection.impl
- the implementation, or null
if this
should be ignored.
- the constructor information to use.
getDescription
protected String getDescription(MBeanConstructorInfo info,
MBeanParameterInfo param,
int n)
Returns the description of the nth parameter of the constructor
that will be used in the supplied
MBeanParameterInfo
instance. This is a customization hook, so that subclasses
can provide a custom description. By default, this calls
param.getDescription()
.
info
- the MBeanConstructorInfo
instance constructed
via reflection.param
- the MBeanParameterInfo
instance constructed
via reflection.n
- the number of the parameter, in order to link it to the
information on the constructor.
- the description to use in the instance.
getDescription
protected String getDescription(MBeanFeatureInfo info)
Returns the description of the supplied feature that
will be used in the supplied
MBeanFeatureInfo
instance. This is a customization hook, so that subclasses
can provide a custom description. By default, this calls
info.getDescription()
. This method is also called
by default for the more specific description methods for attributes,
constructors and operations.
- the description to use in the instance.
getDescription
protected String getDescription(MBeanInfo info)
Returns the description of the bean that will be used in the
supplied
MBeanInfo
instance. This is a customization
hook, so that subclasses can provide a custom description. By
default, this calls
info.getDescription()
.
info
- the MBeanInfo
instance constructed
via reflection.
- the description to use in the instance.
getDescription
protected String getDescription(MBeanOperationInfo info,
MBeanParameterInfo param,
int n)
Returns the description of the nth parameter of the operation
that will be used in the supplied
MBeanParameterInfo
instance. This is a customization hook, so that subclasses
can provide a custom description. By default, this calls
param.getDescription()
.
info
- the MBeanOperationInfo
instance constructed
via reflection.param
- the MBeanParameterInfo
instance constructed
via reflection.n
- the number of the parameter, in order to link it to the
information on the operation.
- the description to use in the instance.
getImpact
protected int getImpact(MBeanOperationInfo info)
Returns the impact of the operation that will be used in the
supplied
MBeanOperationInfo
instance. This is a
customization hook, so that subclasses can provide a custom
impact flag. By default, this returns
info.getImpact()
.
- the impact flag to use in the instance.
getImplementationClass
public Class> getImplementationClass()
Returns the class of the instance that implements this bean.
- the implementation class.
getMBeanInfo
public MBeanInfo getMBeanInfo()
Returns an information object which lists the attributes
and actions associated with the management bean. This
implementation proceeds as follows:
getCachedMBeanInfo()
is called to obtain
the cached instance. If this returns a non-null value,
this value is returned.- If there is no cached value, then the method proceeds
to create one. During this process, the customization hooks
detailed in this class are called to allow the values used
to be overrided:
- For each attribute,
getDescription(MBeanAttributeInfo)
is called. - For each constructor,
getDescription(MBeanConstructorInfo)
is called,
along with getDescription(MBeanConstructorInfo,MBeanParameterInfo,int)
and
getParameterName(MBeanConstructorInfo,MBeanParameterInfo,int)
for each parameter. - The constructors may be replaced as a whole by
a call to
getConstructors(MBeanConstructorInfo[],Object)
. - For each operation,
getDescription(MBeanOperationInfo)
and
getImpact(MBeanOperationInfo)
are called,
along with getDescription(MBeanOperationInfo,MBeanParameterInfo,int)
and
getParameterName(MBeanOperationInfo,MBeanParameterInfo,int)
for each parameter. getClassName(MBeanInfo)
and
getDescription(MBeanInfo)
are called to customise
the basic information about the class.- Finally,
cacheMBeanInfo(MBeanInfo)
is called
with the created instance before it is returned.
- getMBeanInfo in interface DynamicMBean
- a description of the management bean, including
all exposed attributes and actions.
getMBeanInterface
public final Class> getMBeanInterface()
Returns the interface for this management bean.
- the management interface.
getParameterName
protected String getParameterName(MBeanConstructorInfo info,
MBeanParameterInfo param,
int n)
Returns the name of the nth parameter of the constructor
that will be used in the supplied
MBeanParameterInfo
instance. This is a customization hook, so that subclasses
can provide a custom name. By default, this calls
param.getName()
.
info
- the MBeanConstructorInfo
instance constructed
via reflection.param
- the MBeanParameterInfo
instance constructed
via reflection.n
- the number of the parameter, in order to link it to the
information on the constructor.
- the name to use in the instance.
getParameterName
protected String getParameterName(MBeanOperationInfo info,
MBeanParameterInfo param,
int n)
Returns the name of the nth parameter of the operation
that will be used in the supplied
MBeanParameterInfo
instance. This is a customization hook, so that subclasses
can provide a custom name. By default, this calls
param.getName()
.
info
- the MBeanOperationInfo
instance constructed
via reflection.param
- the MBeanParameterInfo
instance constructed
via reflection.n
- the number of the parameter, in order to link it to the
information on the operation.
- the name to use in the instance.
invoke
public Object invoke(String name,
Object[] params,
String[] signature)
throws MBeanException,
ReflectionException
Invokes the specified action on the management bean using
the supplied parameters. The signature of the action is
specified by a
String
array, which lists the classes
corresponding to each parameter. The class loader used to
load these classes is the same as that used for loading the
management bean itself.
- invoke in interface DynamicMBean
name
- the name of the action to invoke.params
- the parameters used to call the action.signature
- the signature of the action.
- the return value of the action.
MBeanException
- if the action throws an exception. The
thrown exception is the cause of this
exception.ReflectionException
- if an exception occurred in trying
to use the reflection interface
to invoke the action. The
thrown exception is the cause of
this exception.
setAttributes
public AttributeList setAttributes(AttributeList attributes)
Sets the value of each of the specified attributes
to that supplied by the
Attribute
object.
The returned list contains the attributes that were
set and their new values.
- setAttributes in interface DynamicMBean
attributes
- the attributes to set.
- a list of the changed attributes.
getAttributes(AttributeList)
setImplementation
public void setImplementation(Object impl)
throws NotCompliantMBeanException
Replaces the implementation of the interface used by this
instance with the one specified. The new implementation
must be non-null and implement the interface specified on
construction of this instance.
StandardMBean.java -- A standard reflection-based management bean.
Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.