- java.lang.Object
-
- javax.management.StandardMBean
-
- 实现的所有接口
-
DynamicMBean
,MBeanRegistration
- 已知直接子类:
-
StandardEmitterMBean
public class StandardMBean extends Object implements DynamicMBean, MBeanRegistration
一个MBean,其管理接口由Java接口上的反射决定。
在使用标准MBean时,此类为管理接口的概念带来了更大的灵活性。 直接使用JMX规范中描述的标准MBean模式意味着MBean的实现类与其管理接口之间存在固定关系(即,如果实现类是Thing,则管理接口必须是ThingMBean)。 该类使得可以保持使用Java接口指定管理接口的便利性,而不需要在实现和接口类之间存在任何命名关系。
通过从MBean中创建DynamicMBean,此类可以选择MBean实现的任何接口作为其管理接口,前提是它符合JMX模式(即getter / setter等定义的属性...)。
该类还提供了钩子,可以为DynamicMBean接口返回的
MBeanInfo
提供自定义描述和名称。使用此类,可以使用任何实现类名称Impl创建MBean,并使用任何接口Intf定义管理接口(对于当前的标准MBean),采用以下两种方式之一:
- 使用公共构造函数
StandardMBean(impl,interface)
:MBeanServer mbs; ... Impl impl = new Impl(...); StandardMBean mbean = new StandardMBean(impl, Intf.class, false); mbs.registerMBean(mbean, objectName);
- 子类化StandardMBean:
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 。
基于实现和接口类之间的命名关系的标准MBean当然仍然可用。
该类也可用于构造MXBeans。 用法与标准MBean完全相同,除了在上面的示例中,构造函数的
false
参数或super(...)
调用是true
。- 从以下版本开始:
- 1.5
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
StandardMBean(类<?> mbeanInterface)
做一个DynamicMBean的出 这一点 ,使用指定的 mbeanInterface类。protected
StandardMBean(类<?> mbeanInterface, boolean isMXBean)
做一个DynamicMBean的出 这一点 ,使用指定的 mbeanInterface类,并选择所产生的MBean是一个MXBean。StandardMBean(T implementation, 类<T> mbeanInterface)
使用指定的 mbeanInterface类从对象 实现中创建DynamicMBean。StandardMBean(T implementation, 类<T> mbeanInterface, boolean isMXBean)
使用指定的 mbeanInterface类从对象 实现中创建DynamicMBean,并选择生成的MBean是否为MXBean。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 protected void
cacheMBeanInfo(MBeanInfo info)
自定义钩子:缓存为此对象构建的MBeanInfo。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的 序列 MBeanParameterInfo的描述。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的 序列 MBeanParameterInfo的描述。protected int
getImpact(MBeanOperationInfo info)
定制钩子:获取将在此MBean返回的MBeanOperationInfo中使用的操作的 影响标志。Object
getImplementation()
获取此标准MBean(或MXBean)的实现。类<?>
getImplementationClass()
获取此Standard MBean(或MXBean)的实现类。MBeanInfo
getMBeanInfo()
获取此MBean的MBeanInfo
。类<?>
getMBeanInterface()
获取此标准MBean(或MXBean)的管理界面。protected String
getParameterName(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence)
定制钩子:获取将用于此MBean返回的MBeanConstructorInfo的 序列 MBeanParameterInfo的名称。protected String
getParameterName(MBeanOperationInfo op, MBeanParameterInfo param, int sequence)
定制钩子:获取将用于此MBean返回的MBeanOperationInfo的 序列 MBeanParameterInfo的名称。void
postDeregister()
允许MBean在MBean服务器中取消注册后执行所需的任何操作。void
postRegister(Boolean registrationDone)
允许MBean在MBean服务器中注册后或注册失败后执行所需的任何操作。void
preDeregister()
允许MBean在MBean服务器取消注册之前执行所需的任何操作。ObjectName
preRegister(MBeanServer server, ObjectName name)
允许MBean在MBean服务器中注册之前执行所需的任何操作。void
setImplementation(Object implementation)
替换此对象中包含的实现对象。-
声明方法的类 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
声明方法的接口 javax.management.DynamicMBean
getAttribute, getAttributes, invoke, setAttribute, setAttributes
-
-
-
-
构造方法详细信息
-
StandardMBean
public StandardMBean(T implementation, 类<T> mbeanInterface) throws NotCompliantMBeanException
使用指定的mbeanInterface类从对象实现中创建DynamicMBean。
- 参数类型
-
T
- 允许编译器检查implementation
是否确实实现了mbeanInterface
描述的类。 编译器只能检查这一点,如果mbeanInterface
是一类文本如MyMBean.class
。 - 参数
-
implementation
- 此MBean的实现。 -
mbeanInterface
- 此MBean实现导出的管理接口。 如果是null
,则此对象将使用标准JMX设计模式来确定与给定实现关联的管理接口。 - 异常
-
IllegalArgumentException
- 如果给定的 实现为null。 -
NotCompliantMBeanException
- 如果 mbeanInterface不遵循管理接口的JMX设计模式,或者给定的 实现未实现指定的接口。
-
StandardMBean
protected StandardMBean(类<?> mbeanInterface) throws NotCompliantMBeanException
做一个DynamicMBean的出这一点 ,使用指定的mbeanInterface类。
致电
this(this,mbeanInterface)
。 此构造函数保留给子类。- 参数
-
mbeanInterface
- 此MBean导出的管理接口。 - 异常
-
NotCompliantMBeanException
- 如果 mbeanInterface不遵循管理接口的JMX设计模式,或者 此操作未实现指定的接口。
-
StandardMBean
public StandardMBean(T implementation, 类<T> mbeanInterface, boolean isMXBean)
使用指定的mbeanInterface类从对象实现中创建DynamicMBean,并选择生成的MBean是否为MXBean。 此构造函数可用于制作标准MBean或MXBeans。 与构造函数
StandardMBean(Object, Class)
不同,它不会抛出NotCompliantMBeanException。- 参数类型
-
T
- 允许编译器检查implementation
确实实现了mbeanInterface
描述的类。 编译器只能检查这一点,如果mbeanInterface
是一类文本如MyMBean.class
。 - 参数
-
implementation
- 此MBean的实现。 -
mbeanInterface
- 此MBean实现导出的管理接口。 如果为null
,则此对象将使用标准JMX设计模式来确定与给定实现关联的管理接口。 -
isMXBean
- 如果为true,则mbeanInterface
参数命名为MXBean接口,结果MBean为MXBean。 - 异常
-
IllegalArgumentException
- 如果给定的 实现为null,或者 mbeanInterface不遵循管理接口的JMX设计模式,或者给定的 实现未实现指定的接口。 - 从以下版本开始:
- 1.6
-
StandardMBean
protected StandardMBean(类<?> mbeanInterface, boolean isMXBean)
做一个DynamicMBean的出这一点 ,使用指定的mbeanInterface类,并选择所产生的MBean是一个MXBean。 此构造函数可用于制作标准MBean或MXBeans。 与构造函数
StandardMBean(Object, Class)
不同,它不会抛出NotCompliantMBeanException。致电
this(this, mbeanInterface, isMXBean)
。 此构造函数保留给子类。- 参数
-
mbeanInterface
- 此MBean导出的管理接口。 -
isMXBean
- 如果为true,则mbeanInterface
参数命名MXBean接口,结果MBean为MXBean。 - 异常
-
IllegalArgumentException
- 如果 mbeanInterface不遵循管理接口的JMX设计模式,或者 此操作未实现指定的接口。 - 从以下版本开始:
- 1.6
-
-
方法详细信息
-
setImplementation
public void setImplementation(Object implementation) throws NotCompliantMBeanException
替换此对象中包含的实现对象。
- 参数
-
implementation
- 此标准MBean(或MXBean)的新实现。implementation
对象必须实现构造此StandardMBean
时提供的标准MBean(或MXBean)接口。 - 异常
-
IllegalArgumentException
- 如果给定的 实现为null。 -
NotCompliantMBeanException
- 如果给定的 实现未实现构造时提供的Standard MBean(或MXBean)接口。 - 另请参见:
-
getImplementation()
-
getImplementation
public Object getImplementation()
获取此标准MBean(或MXBean)的实现。- 结果
- 此标准MBean(或MXBean)的实现。
- 另请参见:
-
setImplementation(java.lang.Object)
-
getMBeanInterface
public final 类<?> getMBeanInterface()
获取此标准MBean(或MXBean)的管理界面。- 结果
- 此Standard MBean(或MXBean)的管理接口。
-
getImplementationClass
public 类<?> getImplementationClass()
获取此Standard MBean(或MXBean)的实现类。- 结果
- 此Standard MBean(或MXBean)的实现类。
-
getMBeanInfo
public MBeanInfo getMBeanInfo()
获取此MBean的MBeanInfo
。此方法实现
DynamicMBean.getMBeanInfo()
。此方法首先调用
getCachedMBeanInfo()
,以便检索此MBean的缓存MBeanInfo(如果有)。 如果getCachedMBeanInfo()
返回的MBeanInfo不为null,则返回它。
否则,此方法使用为此MBean指定的管理接口为此MBean构建缺省MBeanInfo。在构建MBeanInfo时,此方法调用自定义挂钩,使子类可以提供自定义描述,参数名称等...
最后,它调用cacheMBeanInfo()
以缓存新的MBeanInfo。- Specified by:
-
getMBeanInfo
接口DynamicMBean
- 结果
- 该MBean的缓存MBeanInfo(如果不为null)或新建MBeanInfo(如果没有缓存)。
-
getClassName
protected String getClassName(MBeanInfo info)
- 参数
-
info
- 由反射派生的默认MBeanInfo。 - 结果
- 新MBeanInfo的类名。
-
getDescription
protected String getDescription(MBeanInfo info)
- 参数
-
info
- 由反射派生的默认MBeanInfo。 - 结果
- 新MBeanInfo的描述。
-
getDescription
protected String getDescription(MBeanFeatureInfo info)
定制钩子:获取将在此MBean返回的MBeanFeatureInfo中使用的描述。
子类可以重新定义此方法以提供其自定义描述。 默认实现返回
info.getDescription()
。此方法称为
getDescription(MBeanAttributeInfo)
,getDescription(MBeanOperationInfo)
,getDescription(MBeanConstructorInfo)
。- 参数
-
info
- 由反射派生的默认MBeanFeatureInfo。 - 结果
- 给定MBeanFeatureInfo的描述。
-
getDescription
protected String getDescription(MBeanAttributeInfo info)
定制钩子:获取将在此MBean返回的MBeanAttributeInfo中使用的描述。子类可以重新定义此方法以提供其自定义描述。 默认实现返回
getDescription((MBeanFeatureInfo) info)
。- 参数
-
info
- 由反射派生的默认MBeanAttributeInfo。 - 结果
- 给定MBeanAttributeInfo的描述。
-
getDescription
protected String getDescription(MBeanConstructorInfo info)
自定义挂钩:获取将在此MBean返回的MBeanConstructorInfo中使用的描述。
子类可以重新定义此方法以提供其自定义描述。 默认实现返回getDescription((MBeanFeatureInfo) info)
。- 参数
-
info
- 由反射派生的默认MBeanConstructorInfo。 - 结果
- 给定MBeanConstructorInfo的描述。
-
getDescription
protected String getDescription(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence)
定制钩子:获取将用于此MBean返回的MBeanConstructorInfo的序列 MBeanParameterInfo的描述。
子类可以重新定义此方法以提供其自定义描述。 默认实现返回param.getDescription()
。- 参数
-
ctor
- 由反射派生的默认MBeanConstructorInfo。 -
param
- 由反射派生的默认MBeanParameterInfo。 -
sequence
- 考虑的参数的序列号(第一个参数为“0”,第二个参数为“1”,等等)。 - 结果
- 给定MBeanParameterInfo的描述。
-
getParameterName
protected String getParameterName(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence)
定制钩子:获取将用于此MBean返回的MBeanConstructorInfo的序列 MBeanParameterInfo的名称。
子类可以重新定义此方法以提供其自定义参数名称。 默认实现返回param.getName()
。- 参数
-
ctor
- 由反射派生的默认MBeanConstructorInfo。 -
param
- 由反射派生的默认MBeanParameterInfo。 -
sequence
- 所考虑参数的序列号(第一个参数为“0”,第二个参数为“1”,等等)。 - 结果
- 给定MBeanParameterInfo的名称。
-
getDescription
protected String getDescription(MBeanOperationInfo info)
自定义挂钩:获取将在此MBean返回的MBeanOperationInfo中使用的描述。
子类可以重新定义此方法以提供其自定义描述。 默认实现返回getDescription((MBeanFeatureInfo) info)
。- 参数
-
info
- 由反射派生的默认MBeanOperationInfo。 - 结果
- 给定MBeanOperationInfo的描述。
-
getImpact
protected int getImpact(MBeanOperationInfo info)
- 参数
-
info
- 由反射派生的默认MBeanOperationInfo。 - 结果
- 给定MBeanOperationInfo的影响标志。
-
getParameterName
protected String getParameterName(MBeanOperationInfo op, MBeanParameterInfo param, int sequence)
定制钩子:获取将用于此MBean返回的MBeanOperationInfo的序列 MBeanParameterInfo的名称。
子类可以重新定义此方法以提供其自定义参数名称。 默认实现返回param.getName()
。- 参数
-
op
- 由反射派生的默认MBeanOperationInfo。 -
param
- 由反射派生的默认MBeanParameterInfo。 -
sequence
- 考虑的参数的序列号(第一个参数为“0”,第二个参数为“1”,等等)。 - 结果
- 用于给定MBeanParameterInfo的名称。
-
getDescription
protected String getDescription(MBeanOperationInfo op, MBeanParameterInfo param, int sequence)
定制钩子:获取将用于此MBean返回的MBeanOperationInfo的序列 MBeanParameterInfo的描述。
子类可以重新定义此方法以提供其自定义描述。 默认实现返回param.getDescription()
。- 参数
-
op
- 由反射派生的默认MBeanOperationInfo。 -
param
- 由反射派生的默认MBeanParameterInfo。 -
sequence
- 考虑的参数的序列号(第一个参数为“0”,第二个参数为“1”,等等)。 - 结果
- 给定MBeanParameterInfo的描述。
-
getConstructors
protected MBeanConstructorInfo[] getConstructors(MBeanConstructorInfo[] ctors, Object impl)
定制钩子:获取将在此MBean返回的MBeanInfo中使用的MBeanConstructorInfo []。
默认情况下,如果包装的实现不是这个 ,则此方法返回null
。 实际上,如果包装实现本身不是此对象,则无法通过MBeanServer.createMBean(...)
调用实现构造函数来重新创建包装实现。
否则,如果包装的实现是这样 ,则返回ctors 。
如果需要,子类可以重新定义此方法以修改此行为。- 参数
-
ctors
- 由反射派生的默认MBeanConstructorInfo []。 -
impl
- 包装的实现。 如果null
传递,包装实现将被忽略,并返回构建函数 。 - 结果
- 新MBeanInfo的MBeanConstructorInfo []。
-
getCachedMBeanInfo
protected MBeanInfo getCachedMBeanInfo()
自定义挂钩:返回为此对象缓存的MBeanInfo。子类可以重新定义此方法以实现自己的缓存策略。 默认实现为每个实例存储一个
MBeanInfo
对象。- 结果
- 缓存的MBeanInfo,如果没有缓存MBeanInfo,则返回null。
- 另请参见:
-
cacheMBeanInfo(MBeanInfo)
-
cacheMBeanInfo
protected void cacheMBeanInfo(MBeanInfo info)
自定义钩子:缓存为此对象构建的MBeanInfo。子类可以重新定义此方法以实现自己的缓存策略。 默认实现在此实例中存储
info
。 子类可以定义其他政策,比如不节能info
(所以它被重建每次getMBeanInfo()
称)或共享的独特MBeanInfo
对象时,几个StandardMBean
实例具有相等MBeanInfo
个值。- 参数
-
info
- 新增MBeanInfo
缓存。 任何先前缓存的值都将被丢弃。 此参数可以为null,在这种情况下,没有新的缓存值。
-
preRegister
public ObjectName preRegister(MBeanServer server, ObjectName name) throws 异常
允许MBean在MBean服务器中注册之前执行所需的任何操作。 如果未指定MBean的名称,则MBean可以为其注册提供名称。 如果引发任何异常,MBean将不会在MBean服务器中注册。
此方法的默认实现返回
name
参数。 它对标准MBean没有任何其他作用。 对于MBeanServer
,它记录MBeanServer
和ObjectName
参数,以便它们可用于转换MXBean间引用。对于重写此方法的子类来说,通过
super.preRegister(...)
调用重写方法是一种很好的做法。 如果此对象是由其他MXBeans中的属性或操作引用的MXBean,则必须执行此操作。- Specified by:
-
preRegister
接口MBeanRegistration
- 参数
-
server
- 将在其中注册MBean的MBean服务器。 -
name
- MBean的对象名称。 如果MBeanServer
接口中createMBean
或registerMBean
方法之一的name参数为null,则此名称为null。 在这种情况下,此方法必须为新MBean返回非null ObjectName。 - 结果
-
要注册MBean的名称。
此值不得为null。
如果
name
参数不为null,则通常但不一定是返回值。 - 异常
-
IllegalArgumentException
- 如果这是MXBean且name
为null。 -
InstanceAlreadyExistsException
- 如果这是一个MXBean,并且已经在另一个名称下注册(在此MBean Server或其他名称中)。 -
异常
- 此方法不会抛出其他已检查的异常,但声明了异常
,以便子类可以覆盖该方法并抛出它们自己的异常。 - 从以下版本开始:
- 1.6
-
postRegister
public void postRegister(Boolean registrationDone)
允许MBean在MBean服务器中注册后或注册失败后执行所需的任何操作。
此方法的默认实现不会对标准MBean执行任何操作。 对于MXBeans,如果注册失败,它将撤消
preRegister
所做的任何工作。对于重写此方法的子类来说,通过
super.postRegister(...)
调用重写方法是一种很好的做法。 如果此对象是由其他MXBeans中的属性或操作引用的MXBean,则必须执行此操作。- Specified by:
-
postRegister
接口MBeanRegistration
- 参数
-
registrationDone
- 指示MBean是否已在MBean服务器中成功注册。 值false表示注册阶段已失败。 - 从以下版本开始:
- 1.6
-
preDeregister
public void preDeregister() throws 异常
允许MBean在MBean服务器取消注册之前执行所需的任何操作。
此方法的默认实现不执行任何操作。
对于重写此方法的子类来说,通过
super.preDeregister(...)
调用重写方法是一种很好的做法。- Specified by:
-
preDeregister
在界面MBeanRegistration
- 异常
-
异常
- 此方法未抛出任何已检查的异常,但声明了异常
,以便子类可以覆盖此方法并抛出它们自己的异常。 - 从以下版本开始:
- 1.6
-
postDeregister
public void postDeregister()
允许MBean在MBean服务器中取消注册后执行所需的任何操作。
此方法的默认实现不会对标准MBean执行任何操作。 对于MXBeans,它会删除
preRegister
方法记录的所有信息。对于重写此方法的子类来说,通过
super.postRegister(...)
调用重写方法是一种很好的做法。 如果此对象是由其他MXBeans中的属性或操作引用的MXBean,则必须执行此操作。- Specified by:
-
postDeregister
在界面MBeanRegistration
- 从以下版本开始:
- 1.6
-
-