|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.management.modelmbean
类 RequiredModelMBean
java.lang.Object javax.management.modelmbean.RequiredModelMBean
- 所有已实现的接口:
- DynamicMBean, MBeanRegistration, ModelMBean, ModelMBeanNotificationBroadcaster, NotificationBroadcaster, NotificationEmitter, PersistentMBean
-
public class RequiredModelMBean
- extends Object
- implements ModelMBean, MBeanRegistration, NotificationEmitter
此类是 ModelMBean 的实现。每个发行的 JMX Agent 必须带有 ModelMBean 的适当实现,且该类必须是指定的 RequiredModelMBean。
Java 资源使用 MBeanServer 的 createMBean 方法来实例化 RequiredModelMBean,以便具有可管理性。然后该资源设置 RequiredModelMBean 实例的 MBeanInfo 和 Descriptor。通过 ModelMBean 的 ModelMBeanInfo 公开的属性和操作像其他 MBean 一样可以从 MBean、连接器/适配器进行访问。通过 Descriptor,可以定义托管应用程序中的值和方法,并可以将它们映射到 ModelMBean 的属性和操作。此映射可以在 XML 格式的文件中定义,也可以以编程方式在运行时动态定义。
MBeanServer 中实例化的每个 RequiredModelMBean 都成为可管理的:
通过连接到该 MBeanServer 的连接器/适配器可以远程访问其属性和操作。
Java 对象不能在 MBeanServer 中进行注册,除非它是 JMX 兼容的 MBean。通过实例化 RequiredModelMBean,资源可保证 MBean 有效。 每个公共方法必须抛出 MBeanException 和 RuntimeOperationsException。这允许包装来自分布式通信(RMI、EJB 等)的异常。
- 从以下版本开始:
- 1.5
构造方法摘要 | |
---|---|
RequiredModelMBean() 构造带有空 ModelMBeanInfo 的 RequiredModelMBean 。 |
|
RequiredModelMBean(ModelMBeanInfo mbi) 使用传入的 ModelMBeanInfo 构造 RequiredModelMBean 对象。 |
方法摘要 | |
---|---|
void |
addAttributeChangeNotificationListener(NotificationListener inlistener, String inAttributeName, Object inhandback) 注册一个将 NotificationListener 接口实现为侦听器的对象。 |
void |
addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) 注册一个将 NotificationListener 接口实现为侦听器的对象。 |
Object |
getAttribute(String attrName) 返回为此 ModelMBean 定义的指定属性的值。 |
AttributeList |
getAttributes(String[] attrNames) 返回 ModelMBean 中几个属性的值。 |
protected ClassLoaderRepository |
getClassLoaderRepository() 返回用于执行类加载的 Class Loader Repository。 |
MBeanInfo |
getMBeanInfo() 返回此 RequiredModelMBean 为管理公开的属性、操作、构造方法和通知。 |
MBeanNotificationInfo[] |
getNotificationInfo() 返回总是由 RequiredModelMBean 生成的 Notification 数组。 |
Object |
invoke(String opName, Object[] opArgs, String[] sig) 调用 RequiredModelMBean 上的(或通过它调用)某个方法,并返回方法执行的结果。 |
void |
load() 使用在持久存储中所找到的 MBean 的数据实例化此 MBean。 |
void |
postDeregister() 允许 MBean 在已从 MBean 服务器注销之后执行任何所需要的操作。 |
void |
postRegister(Boolean registrationDone) 允许 MBean 在已被注册到 MBean 服务器之后或注册已失败之后执行任何所需要的操作。 |
void |
preDeregister() 允许 MBean 在被 MBean 服务器注销之前执行任何所需要的操作。 |
ObjectName |
preRegister(MBeanServer server, ObjectName name) 允许 MBean 在被注册到 MBean 服务器之前执行任何所需要的操作。 |
void |
removeAttributeChangeNotificationListener(NotificationListener inlistener, String inAttributeName) 从 RequiredModelMBean 移除一个 attributeChangeNotifications 的侦听器。 |
void |
removeNotificationListener(NotificationListener listener) 从 RequiredModelMBean 移除一个 Notification 的侦听器。 |
void |
removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) 从此 MBean 中移除一个侦听器。 |
void |
sendAttributeChangeNotification(Attribute inOldVal, Attribute inNewVal) 将包含属性的原有值和新值的 attributeChangeNotification 发送到 ModelMBean 上已注册的 AttributeChangeNotification 侦听器。 |
void |
sendAttributeChangeNotification(AttributeChangeNotification ntfyObj) 将传入的 attributeChangeNotification 发送到 ModelMBean 上已注册的 attributeChangeNotification 侦听器。 |
void |
sendNotification(Notification ntfyObj) 以 jmx.modelmbean.generic 通知形式将传入的 Notification 发送到 ModelMBean 上已注册的 Notification 侦听器。 |
void |
sendNotification(String ntfyText) 将包含传入文本字符串的 Notification 发送到 ModelMBean 上已注册的 Notification 侦听器。 |
void |
setAttribute(Attribute attribute) 设置指定的 ModelMBean 的指定属性的值。 |
AttributeList |
setAttributes(AttributeList attributes) 设置此 ModelMBean 的属性数组的值。 |
void |
setManagedResource(Object mr, String mr_type) 设置对象的实例句柄,我们将根据此句柄执行此 ModelMBean 管理接口(MBeanInfo 和 Descripto)中的所有方法。 |
void |
setModelMBeanInfo(ModelMBeanInfo mbi) 使用传入的 ModelMBeanInfo 实例化 ModelMBean 对象。 |
void |
store() 捕获此 MBean 实例的当前状态,并将它写出到持久存储中。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
RequiredModelMBean
public RequiredModelMBean() throws MBeanException, RuntimeOperationsException
-
构造带有空 ModelMBeanInfo 的
RequiredModelMBean
。可以使用
setModelMBeanInfo(javax.management.modelmbean.ModelMBeanInfo)
方法来自定义 RequiredModelMBean 的 MBeanInfo 和 Descriptor。自定义 RequiredModelMBean 的 MBeanInfo 和 Descriptor 之后,可以向 MBeanServer 注册 RequiredModelMBean。- 抛出:
-
MBeanException
- 包装了一个分布式通信异常。 -
RuntimeOperationsException
- 在对象的构造期间包装了一个RuntimeException
。
RequiredModelMBean
public RequiredModelMBean(ModelMBeanInfo mbi) throws MBeanException, RuntimeOperationsException
-
使用传入的 ModelMBeanInfo 构造 RequiredModelMBean 对象。只要尚未向 MBeanServer 注册 RequiredModelMBean,就可以使用
setModelMBeanInfo(javax.management.modelmbean.ModelMBeanInfo)
方法自定义 RequiredModelMBean 的 MBeanInfo 和 Descriptor。自定义 RequiredModelMBean 的 MBeanInfo 和 Descriptor 之后,可以向 MBeanServer 注册 RequiredModelMBean。- 参数:
-
mbi
- RequiredModelMBean 要使用的 ModelMBeanInfo 对象。给定的 ModelMBeanInfo 根据setModelMBeanInfo(javax.management.modelmbean.ModelMBeanInfo)
所指定的方式进行克隆和修改 - 抛出:
-
MBeanException
- 包装了一个分布式通信异常。 -
RuntimeOperationsException
- 包装了一个 {link java.lang.IllegalArgumentException}:传入参数中的 MBeanInfo 为 null。
方法详细信息 |
---|
setModelMBeanInfo
public void setModelMBeanInfo(ModelMBeanInfo mbi) throws MBeanException, RuntimeOperationsException
-
使用传入的 ModelMBeanInfo 实例化 ModelMBean 对象。此方法能够设置 ModelMBean 上的自定义 ModelMBeanInfo(只要它尚未向 MBeanServer 注册)。
一旦自定义并在 ModelMBean 上设置 ModelMBean 的 ModelMBeanInfo(带有 Descriptor)之后,就可以向 MBeanServer 注册 ModelMBean。如果当前注册 ModelMBean,则此方法抛出包装了
IllegalStateException
的RuntimeOperationsException
如果给定的 inModelMBeanInfo 不包含任何
GENERIC
或ATTRIBUTE_CHANGE
通知的ModelMBeanNotificationInfo
,则 RequiredModelMBean 将为这些缺少的通知提供其自己的默认ModelMBeanNotificationInfo
。 -
- 指定者:
-
接口
ModelMBean
中的setModelMBeanInfo
-
- 参数:
-
mbi
- ModelMBean 要使用的 ModelMBeanInfo 对象。 - 抛出:
-
MBeanException
- 包装了一个分布式通信异常。 -
RuntimeOperationsException
-- 如果传入参数的 MBeanInfo 为 null,则包装一个
IllegalArgumentException
。 - 如果当前在 MBeanServer 中注册 ModelMBean,则包装一个
IllegalStateException
。
- 如果传入参数的 MBeanInfo 为 null,则包装一个
setManagedResource
public void setManagedResource(Object mr, String mr_type) throws MBeanException, RuntimeOperationsException, InstanceNotFoundException, InvalidTargetObjectTypeException
- 设置对象的实例句柄,我们将根据此句柄执行此 ModelMBean 管理接口(MBeanInfo 和 Descripto)中的所有方法。
-
- 指定者:
-
接口
ModelMBean
中的setManagedResource
-
- 参数:
-
mr
- 作为托管资源的对象 -
mr_type
- 托管资源的引用类型。
可以为:"ObjectReference"、"Handle"、"IOR"、"EJBHandle" 或 "RMIReference"。
在此实现中仅支持 "ObjectReference"。 - 抛出:
-
MBeanException
- 如果对象初始化程序已抛出异常。 -
InstanceNotFoundException
- 如果找不到托管资源对象 -
InvalidTargetObjectTypeException
- 托管资源对象应为 "ObjectReference"。 -
RuntimeOperationsException
- 如果设置资源时包装一个RuntimeException
。
load
public void load() throws MBeanException, RuntimeOperationsException, InstanceNotFoundException
-
使用在持久存储中所找到的 MBean 的数据实例化此 MBean。所加载的数据可以包括属性和操作值。
此方法的调用应在此实例的构造或实例化期间,且在向 MBeanServer 注册该 MBean 之前。
如果此类的实例不支持持久存储,则抛出包装了
ServiceNotFoundException
的MBeanException
。 -
- 指定者:
-
接口
PersistentMBean
中的load
-
- 抛出:
-
MBeanException
- 包装了另一个异常,或者如果不支持持久存储 -
RuntimeOperationsException
- 包装了来自持久机制的异常 -
InstanceNotFoundException
- 不能从持久存储找到或加载此 MBean
store
public void store() throws MBeanException, RuntimeOperationsException, InstanceNotFoundException
-
捕获此 MBean 实例的当前状态,并将它写出到持久存储中。所存储的状态可以包括属性和操作值。
如果此类的实例不支持持久存储,则抛出包装了
ServiceNotFoundException
的MBeanException
。来自 MBean 和属性描述符的持久策略用于指导此方法的执行。如果 'persistPolicy' 为以下值,则应存储 MBean:
!= "never" = "always" = "onTimer" and now > 'lastPersistTime' + 'persistPeriod' = "NoMoreOftenThan" and now > 'lastPersistTime' + 'persistPeriod'
如果 'persistPolicy' 字段为以下值,则不存储 MBean:
= "never" = "onUpdate" = "onTimer" && now < 'lastPersistTime' + 'persistPeriod'
-
- 指定者:
-
接口
PersistentMBean
中的store
-
- 抛出:
-
MBeanException
- 包装了另一个异常,或者如果不支持持久存储 -
RuntimeOperationsException
- 包装了来自持久机制的异常 -
InstanceNotFoundException
- 不能找到/访问持久存储
getMBeanInfo
public MBeanInfo getMBeanInfo()
- 返回此 RequiredModelMBean 为管理公开的属性、操作、构造方法和通知。
-
- 指定者:
-
接口
DynamicMBean
中的getMBeanInfo
-
- 返回:
- 允许检索此 MBean 的所有属性、操作和 Notification 的 ModelMBeanInfo 的实例。
invoke
public Object invoke(String opName, Object[] opArgs, String[] sig) throws MBeanException, ReflectionException
-
调用 RequiredModelMBean 上的(或通过它调用)某个方法,并返回方法执行的结果。
如果要调用的给定方法连同所提供的签名与 RequiredModelMbean 可访问方法中的某个方法匹配,则将调用此匹配的方法。否则将在托管资源上尝试调用给定的方法。
操作所返回的最后一个值可以在 ModelMBeanOperationInfo 的描述符中的该操作的描述符中进行缓存。有效值将位于 'value' 字段中(如果有)。如果描述符中的 'currencyTimeLimit' 字段为:
- <0 则不缓存该值,且该值永远无效。调用 operation 方法。清除 'value' 和 'lastUpdatedTimeStamp' 字段。
- =0 则总是缓存该值,且该值总有效。返回 'value' 字段。如果没有 'value' 字段,则调用属性的 operation 方法。将 'lastUpdatedTimeStamp' 字段和 `value' 字段设置为该操作所返回的值和当前时间戳。
- >0 表示 'value' 字段有效的秒数。当 'lastUpdatedTimeStamp' + 'currencyTimeLimit' > Now 时,'value' 字段不再有效。
- 当 'value' 有效时,返回 'value'。
- 当 'value' 不再有效时,调用 operation 方法。更新 'lastUpdatedTimeStamp' 字段和 `value' 字段。
注:由于与此规范以前版本不一致,因此对于
currencyTimeLimit
,推荐不使用负值或零。要指示某个缓存的值永远无效,请忽略currencyTimeLimit
字段。要指示它总是有效,请为此字段使用一个非常大的值。 -
- 指定者:
-
接口
DynamicMBean
中的invoke
-
- 参数:
-
opName
- 要调用的方法名称。此名称可以是包括类名称的完全限定方法名称,如果类名称是在操作描述符的 'class' 字段中定义的,则此名称也可以仅为方法名称。 -
opArgs
- 包含当调用操作时要设置的参数的数组 -
sig
- 包含操作签名的数组。用于加载类对象的类加载器与用于加载 MBean(要在其上调用操作)的类加载器相同。 - 返回:
- 方法所返回的对象,它表示在指定托管资源上调用方法的结果。
- 抛出:
-
MBeanException
- 包装了以下 Exceptions 之一:- 由托管对象所调用的方法抛出的 Exception。
ServiceNotFoundException
: 为指定的操作或托管资源定义的 ModelMBeanOperationInfo 或 descriptor 均不为 null。InvalidTargetObjectTypeException
: 'targetType' 字段值不为 'objectReference'。
-
ReflectionException
- 包装一个试图调用该方法时所抛出的Exception
。 -
RuntimeOperationsException
- 包装了一个IllegalArgumentException
。方法名称为 null。