所有类


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,则此方法抛出包装了 IllegalStateExceptionRuntimeOperationsException

如果给定的 inModelMBeanInfo 不包含任何 GENERICATTRIBUTE_CHANGE 通知的 ModelMBeanNotificationInfo,则 RequiredModelMBean 将为这些缺少的通知提供其自己的默认 ModelMBeanNotificationInfo

指定者:
接口 ModelMBean 中的 setModelMBeanInfo
参数:
mbi - ModelMBean 要使用的 ModelMBeanInfo 对象。
抛出:
MBeanException - 包装了一个分布式通信异常。
RuntimeOperationsException -

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 之前。

如果此类的实例不支持持久存储,则抛出包装了 ServiceNotFoundExceptionMBeanException

指定者:
接口 PersistentMBean 中的 load
抛出:
MBeanException - 包装了另一个异常,或者如果不支持持久存储
RuntimeOperationsException - 包装了来自持久机制的异常
InstanceNotFoundException - 不能从持久存储找到或加载此 MBean

store

public void store()
           throws MBeanException,
                  RuntimeOperationsException,
                  InstanceNotFoundException

捕获此 MBean 实例的当前状态,并将它写出到持久存储中。所存储的状态可以包括属性和操作值。

如果此类的实例不支持持久存储,则抛出包装了 ServiceNotFoundExceptionMBeanException

来自 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 之一:
ReflectionException - 包装一个试图调用该方法时所抛出的 Exception
RuntimeOperationsException - 包装了一个 IllegalArgumentException。方法名称为 null。

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部