java.lang.Object javax.management.StandardMBean
public class StandardMBean
一个管理接口由 Java 接口上的反射确定的 MBean。
在 Standard MBean 的使用中,此类为“管理接口”这一概念提供了更多灵活性。直接使用 JMX 规范中介绍的 Standard MBean 模式意味着在 MBean 的实现类与其管理接口之间存在着固定的关系(即如果实现类是 Thing,则管理接口必须是 ThingMBean)。此类能够保留指定带有 Java 接口的管理接口这一便捷性,同时无需在实现与接口类之间存在任何命名关系。
通过从 MBean 中生成 DynamicMBean,此类能够选择任何由 MBean 实现的接口作为其管理接口,但前提是它必须遵守 JMX 模式(即由获取方法/设置方法等定义的属性)。
此类还提供了一些钩子,从而能够为由 DynamicMBean 接口返回的 MBeanInfo
提供自定义描述和名称。
通过使用此类,可以使用以下两种常规方法之一创建 MBean,使用任何实现类名 Impl、由任何接口 Intf 定义的管理接口(就当前 Standard MBean 而言)作为参数:
StandardMBean(impl、interface)
: MBeanServer mbs; ... Impl impl = new Impl(...); StandardMBean mbean = new StandardMBean(impl, Intf.class, false); mbs.registerMBean(mbean, objectName);
public class Impl extends StandardMBean implements Intf { public Impl() { super(Intf.class, false); } // implement methods of Intf } [...] MBeanServer mbs; .... Impl impl = new Impl(); mbs.registerMBean(impl, objectName);
在任何一种情况下,类 Impl 都必须实现接口 Intf。
当然,基于实现和接口类之间的命名关系的 Standard MBean 仍然可用。
此类也可以用来构造 MXBean。用法与构造 Standard MBean 完全相同,唯一的不同之处在于,上例中的构造方法或 super(...)
调用使用的是 false
参数,而不是 true
参数。
构造方法摘要 | |
---|---|
protected |
StandardMBean(Class<?> mbeanInterface) 使用指定的 mbeanInterface 类从 this 中生成 DynamicMBean。 |
protected |
StandardMBean(Class<?> mbeanInterface, boolean isMXBean) 使用指定的 mbeanInterface 类从 this 中生成 DynamicMBean。 |
|
StandardMBean(T implementation, Class<T> mbeanInterface) 使用指定的 mbeanInterface 类从对象 implementation 中生成 DynamicMBean。 |
|
StandardMBean(T implementation, Class<T> mbeanInterface, boolean isMXBean) 使用指定的 mbeanInterface 类从对象 implementation 中生成 DynamicMBean。 |
方法摘要 | |
---|---|
protected void |
cacheMBeanInfo(MBeanInfo info) 自定义钩子:缓存为此对象构建的 MBeanInfo。 |
Object |
getAttribute(String attribute) 获得 Dynamic MBean 的特定属性的值。 |
AttributeList |
getAttributes(String[] attributes) 获得 Dynamic MBean 多个属性的值。 |
protected MBeanInfo |
getCachedMBeanInfo() 自定义钩子:返回为此对象缓存的 MBeanInfo。 |
protected String |
getClassName(MBeanInfo info) 自定义钩子:获取将在由此 MBean 返回的 MBeanInfo 中使用的 className。 |
protected MBeanConstructorInfo[] |
getConstructors(MBeanConstructorInfo[] ctors, Object impl) 自定义钩子:获取将在由此 MBean 返回的 MBeanInfo 中使用的 MBeanConstructorInfo[]。 |
protected String |
getDescription(MBeanAttributeInfo info) 自定义钩子:获取将在由此 MBean 返回的 MBeanAttributeInfo 中使用的描述。 |
protected String |
getDescription(MBeanConstructorInfo info) 自定义钩子:获取将在由此 MBean 返回的 MBeanConstructorInfo 中使用的描述。 |
protected String |
getDescription(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence) 自定义钩子:获取将用于由此 MBean 返回的 MBeanConstructorInfo 的第 sequence 个 BeanParameterInfo 的描述。 |
protected String |
getDescription(MBeanFeatureInfo info) 自定义钩子:获取将在由此 MBean 返回的 MBeanFeatureInfo 中使用的描述。 |
protected String |
getDescription(MBeanInfo info) 自定义钩子:获取将在由此 MBean 返回的 MBeanInfo 中使用的描述。 |
protected String |
getDescription(MBeanOperationInfo info) 自定义钩子:获取将在由此 MBean 返回的 MBeanOperationInfo 中使用的描述。 |
protected String |
getDescription(MBeanOperationInfo op, MBeanParameterInfo param, int sequence) 自定义钩子:获取将用于由此 MBean 返回的 MBeanOperationInfo 的第 sequence 个 MBeanParameterInfo 的描述。 |
protected int |
getImpact(MBeanOperationInfo info) 自定义钩子:获取将在由此 MBean 返回的 MBeanOperationInfo 中使用的操作的 impact 标志。 |
Object |
getImplementation() 获取此 Standard MBean(或 MXBean)的实现。 |
Class<?> |
getImplementationClass() 获取此 Standard MBean(或 MXBean)的实现类。 |
MBeanInfo |
getMBeanInfo() 获取此 MBean 的 MBeanInfo 。 |
Class<?> |
getMBeanInterface() 获取此 Standard MBean(或 MXBean)的管理接口。 |
protected String |
getParameterName(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence) 自定义钩子:获取将用于由此 MBean 返回的 MBeanConstructorInfo 的第 sequence 个 BeanParameterInfo 的名称。 |
protected String |
getParameterName(MBeanOperationInfo op, MBeanParameterInfo param, int sequence) 自定义钩子:获取将用于由此 MBean 返回的 MBeanOperationInfo 的第 sequence 个 MBeanParameterInfo 的名称。 |
Object |
invoke(String actionName, Object[] params, String[] signature) 允许在 Dynamic MBean 上调用某个操作。 |
void |
postDeregister() 允许 MBean 在 MBean 服务器中取消注册后执行任何它所需要的操作。 |
void |
postRegister(Boolean registrationDone) 允许 MBean 在已注册到 MBean 服务器之后或注册已失败之后执行任何它所需要的操作。 |
void |
preDeregister() 允许 MBean 由 MBean 服务器取消注册前执行任何它所需要的操作。 |
ObjectName |
preRegister(MBeanServer server, ObjectName name) 允许 MBean 在 MBean 服务器中注册之前执行任何它所需要的操作。 |
void |
setAttribute(Attribute attribute) 设置 Dynamic MBean 的特定属性的值。 |
AttributeList |
setAttributes(AttributeList attributes) 设置 Dynamic MBean 多个属性的值。 |
void |
setImplementation(Object implementation) 替换包装在此对象中的实现对象。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public StandardMBean(T implementation, Class<T> mbeanInterface) throws NotCompliantMBeanException
使用指定的 mbeanInterface 类从对象 implementation 中生成 DynamicMBean。
T
- 允许编译器检查
implementation
是否确实实现了
mbeanInterface
描述的类。编译器只在
mbeanInterface
是
MyMBean.class
之类的类字面值时才能进行检查。
implementation
- 此 MBean 的实现。
mbeanInterface
- 由此 MBean 实现导出的管理接口。如果为
null
,则此对象将使用标准 JMX 设计模式来确定与指定实现关联的管理接口。
IllegalArgumentException
- 如果给定的
implementation 为 null
NotCompliantMBeanException
- 如果
mbeanInterface 不遵守管理接口的 JMX 设计模式,或者给定的
implementation 没有实现指定的接口。
protected StandardMBean(Class<?> mbeanInterface) throws NotCompliantMBeanException
使用指定的 mbeanInterface 类从 this 中生成 DynamicMBean。
调用 this(this、mbeanInterface)
。此构造方法是为子类保留的。
mbeanInterface
- 由此 MBean 导出的管理接口。
NotCompliantMBeanException
- 如果
mbeanInterface 不遵从管理接口的 JMX 设计模式,或者
this 没有实现指定的接口。
public StandardMBean(T implementation, Class<T> mbeanInterface, boolean isMXBean)
使用指定的 mbeanInterface 类从对象 implementation 中生成 DynamicMBean。此构造方法可以用来生成 Standard MBean 或 MXBean。与构造方法 StandardMBean(Object, Class)
不同,它不抛出 NotCompliantMBeanException。
T
- 允许编译器查看
implementation
是否确实实现了
mbeanInterface
描述的类。编译器只在
mbeanInterface
是
MyMBean.class
之类的类字面值时才能进行检查。
implementation
- 此 MBean 的实现。
mbeanInterface
- 由此 MBean 实现导出的管理接口。如果为
null
,则此对象将使用标准 JMX 设计模式来确定与指定实现关联的管理接口。
isMXBean
- 如果为 true,则
mbeanInterface
参数表示 MXBean 接口,得到的 MBean 是一个 MXBean。
IllegalArgumentException
- 如果给定的
implementation 为 null;或者
mbeanInterface 不遵守管理接口的 JMX 设计模式;或者给定的
implementation 没有实现指定的接口。
protected StandardMBean(Class<?> mbeanInterface, boolean isMXBean)
使用指定的 mbeanInterface 类从 this 中生成 DynamicMBean。此构造方法可以用来生成 Standard MBean 或 MXBean。与构造方法 StandardMBean(Object, Class)
不同,它不抛出 NotCompliantMBeanException。
调用 this(this, mbeanInterface, isMXBean)
。此构造方法是为子类保留的。
mbeanInterface
- 由此 MBean 导出的管理接口。
isMXBean
- 如果为 true,则
mbeanInterface
参数表示 MXBean 接口,得到的 MBean 是一个 MXBean。
IllegalArgumentException
- 如果
mbeanInterface 不遵从管理接口的 JMX 设计模式,或者
this 没有实现指定的接口。
方法详细信息 |
---|
public void setImplementation(Object implementation) throws NotCompliantMBeanException
替换包装在此对象中的实现对象。
implementation
- 此 Standard MBean(或 MXBean)的新实现。
implementation
对象必须实现构造此
StandardMBean
时提供的 Standard MBean(或 MXBean)接口。
IllegalArgumentException
- 如果给定的
implementation 为 null
NotCompliantMBeanException
- 如果给定的
implementation 没有实现构造时提供的 Standard MBean(或 MXBean)接口。
getImplementation()
public Object getImplementation()
setImplementation(java.lang.Object)
public final Class<?> getMBeanInterface()
public Class<?> getImplementationClass()
public Object getAttribute(String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException
DynamicMBean
复制的描述
DynamicMBean
中的
getAttribute
attribute
- 要检索的属性名
AttributeNotFoundException
MBeanException
- 包装由 MBean 的获取方法所抛出的
java.lang.Exception
。
ReflectionException
- 包装试图调用获取方法时所抛出的
java.lang.Exception
。
DynamicMBean.setAttribute(javax.management.Attribute)
public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException
DynamicMBean
复制的描述
DynamicMBean
中的
setAttribute
attribute
- 要设置的属性的标识及其要设置成的值。
AttributeNotFoundException
InvalidAttributeValueException
MBeanException
- 包装由 MBean 的设置方法所抛出的
java.lang.Exception
。
ReflectionException
- 包装试图调用设置方法时所抛出的
java.lang.Exception
。
DynamicMBean.getAttribute(java.lang.String)
public AttributeList getAttributes(String[] attributes)
DynamicMBean
复制的描述
DynamicMBean
中的
getAttributes
attributes
- 要检索的属性列表。
DynamicMBean.setAttributes(javax.management.AttributeList)
public AttributeList setAttributes(AttributeList attributes)
DynamicMBean
复制的描述
DynamicMBean
中的
setAttributes
attributes
- 属性列表:要设置的属性的标识及其要设置成的值。
DynamicMBean.getAttributes(java.lang.String[])
public Object invoke(String actionName, Object[] params, String[] signature) throws MBeanException, ReflectionException
DynamicMBean
复制的描述
DynamicMBean
中的
invoke
actionName
- 要调用的操作的名称。
params
- 一个数组,包含调用该操作时所要设置的参数。
signature
- 包含操作签名的数组。加载类对象时,使用的类加载器与加载在其上调用操作的 MBean 所用的类加载器相同。
MBeanException
- 包装由 MBean 上所调用的方法抛出的
java.lang.Exception
。
ReflectionException
- 包装试图调用该方法时所抛出的
java.lang.Exception
。
public MBeanInfo getMBeanInfo()
MBeanInfo
。
此方法实现了 DynamicMBean.getMBeanInfo()
。
此方法首先调用 getCachedMBeanInfo()
,以便检索此 MBean 的缓存 MBeanInfo(如果有)。如果由 getCachedMBeanInfo()
返回的 MBeanInfo 不为 null,则将其返回。
否则,此方法将使用为此 MBean 指定的管理接口构建此 MBean 的默认 MBeanInfo。
在构建 MBeanInfo 时,此方法将调用一些自定义钩子,这些钩子使子类能够提供其自定义描述、参数名称等。
最后,它将调用 cacheMBeanInfo()
,以便缓存新的 MBeanInfo。
DynamicMBean
中的
getMBeanInfo
protected String getClassName(MBeanInfo info)
info.getClassName()
。
info
- 通过反射派生的默认 MBeanInfo。
protected String getDescription(MBeanInfo info)
info.getDescription()
。
info
- 通过反射派生的默认 MBeanInfo。
protected String getDescription(MBeanFeatureInfo info)
自定义钩子:获取将在由此 MBean 返回的 MBeanFeatureInfo 中使用的描述。
子类可以重定义此方法来提供其自定义描述。默认实现返回 info.getDescription()
。
此方法将由 getDescription(MBeanAttributeInfo)
、getDescription(MBeanOperationInfo)
、getDescription(MBeanConstructorInfo)
调用。
info
- 通过反射派生的默认 MBeanFeatureInfo。
protected String getDescription(MBeanAttributeInfo info)
子类可以重定义此方法来提供其自定义描述。默认实现返回 getDescription((MBeanFeatureInfo) info)
。
info
- 通过反射派生的默认 MBeanAttributeInfo。
protected String getDescription(MBeanConstructorInfo info)
getDescription((MBeanFeatureInfo) info)
。
info
- 通过反射派生的默认 MBeanConstructorInfo。
protected String getDescription(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence)
param.getDescription()
。
ctor
- 通过反射派生的默认 MBeanConstructorInfo。
param
- 通过反射派生的默认 MBeanParameterInfo。
sequence
- 要考虑的参数序列号("0" 是第一个参数,"1" 是第二个参数,依此类推)。
protected String getParameterName(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence)
param.getName()
。
ctor
- 通过反射派生的默认 MBeanConstructorInfo。
param
- 通过反射派生的默认 MBeanParameterInfo。
sequence
- 要考虑的参数序列号("0" 是第一个参数,"1" 是第二个参数,依此类推)。
protected String getDescription(MBeanOperationInfo info)
getDescription((MBeanFeatureInfo) info)
。
info
- 通过反射派生的默认 MBeanOperationInfo。
protected int getImpact(MBeanOperationInfo info)
info.getImpact()
。
info
- 通过反射派生的默认 MBeanOperationInfo。
protected String getParameterName(MBeanOperationInfo op, MBeanParameterInfo param, int sequence)
param.getName()
。
op
- 通过反射派生的默认 MBeanOperationInfo。
param
- 通过反射派生的默认 MBeanParameterInfo。
sequence
- 要考虑的参数序列号("0" 是第一个参数,"1" 是第二个参数,依此类推)。
protected String getDescription(MBeanOperationInfo op, MBeanParameterInfo param, int sequence)
param.getDescription()
。
op
- 通过反射派生的默认 MBeanOperationInfo。
param
- 通过反射派生的默认 MBeanParameterInfo。
sequence
- 要考虑的参数序列号("0" 是第一个参数,"1" 是第二个参数,依此类推)。
protected