Package javax.management.monitor
提供监视器类的定义。 监视器是一个MBean,它定期地观察一个或多个其他MBean中属性的值。 如果属性满足某一条件,则监视器发出MonitorNotification
。 当监视器MBean周期性地调用getAttribute
以检索被监视的属性的值时,它将在Monitor.start()
调用者的访问控制上下文中执行。
被监视的值可以是复杂类型中包含的简单值。 例如, MemoryMXBean
中定义java.lang.management
具有属性HeapMemoryUsage
类型的MemoryUsage
。 为了监测所使用的内存量,所描述的used
的财产MemoryUsage
,您可以监控“ HeapMemoryUsage.used
”。 那个字符串将是setObservedAttribute
的参数。
用于解释ObservedAttribute
的规则如"HeapMemoryUsage.used"
如下。 假设字符串为Ae (所以A为"HeapMemoryUsage"
, e "used"
中的"used"
)。
首先得到属性A的值。 叫它v 。 从v中提取值x ,如下所示:
- 如果v是
CompositeData
,如果v 。get
( e )返回一个值,然后x是该值。 - 如果v是数组, e是字符串
"length"
则x是数组的长度。 - 如果上述规则不产生一个值,并且如果自省,仿佛通过调用
Introspector.getBeanInfo
,为类诉 ( 诉getClass()
)识别与该名字的属性,则x是读取属性值的结果。
第三条规则是指例如如果属性HeapMemoryUsage
是MemoryUsage
,则监视"HeapMemoryUsage.used"
将通过调用MemoryUsage.getUsed()
获得观测值。
如果ObservedAttribute
包含多个周期,例如"ConnectionPool.connectionStats.length"
,则上述规则被迭代地应用。 这里, v最初将是属性ConnectionPool
的值,并且x将通过应用e等于"connectionStats"
的上述规则来"connectionStats"
。 那么v将被设置为这个x,并且通过再次应用规则得到新的x , e等于"length"
。
虽然建议属性名称是有效的Java标识符,但属性可能被称为HeapMemoryUsage.used
。 这意味着ObservedAttribute
是HeapMemoryUsage.used
可能意味着要观察的值是该名称的属性,或属性名称为used
的属性HeapMemoryUsage
。 所以出于兼容性原因,当ObservedAttribute
包含一个句点( .
)时,监视器将检查一个属性是否存在,其名称是完整的ObservedAttribute
字符串( HeapMemoryUsage.used
中为HeapMemoryUsage.used
)。 它通过调用getMBeanInfo
为观察到的MBean,并寻找一个包含MBeanAttributeInfo
与给定的名称。 如果找到了,那就是被监控的。 如果观察到一个以上的MBean,如果其中一些具有HeapMemoryUsage.used
属性,而其他的则没有被指定,则该行为是未指定的。 因此,在这种情况下,一个实现可能getMBeanInfo
在一个MBean中调用getMBeanInfo
。 如果在显示器处于活动状态时检查结果发生变化,那么该行为也是未指定的。
监视器的确切行为详见JMX Specification 。 以下是一个总结。
有三种显示器:
A
CounterMonitor
观察整数类型的属性。 假设属性是非负的,并且除了在指定模数下可能的滚转之外,单调增加。 每个观察属性都具有关联的阈值。 当属性超过其阈值时,发送通知。可以指定偏移值。 当观测值超过其阈值时,阈值将增加偏移量,或增加足以使阈值大于新观测值的偏移量的倍数。
A
CounterMonitor
可以在差模式下工作 。 在这种模式下,与阈值比较的值是属性的两次连续观察结果之间的差异。A
GaugeMonitor
观察数值类型的属性。 每个观察属性具有相关联的高阈值和低阈值 。当观察到的属性越过高阈值时,如果通知高标志为真,则发送通知。 在阈值变得小于或等于低阈值之前,高阈值的后续交叉将不会触发进一步通知。
当观察到的属性越过低阈值时,如果通知低标志为真,则发送通知。 在阈值变得大于或等于高阈值之前,低阈值的后续交叉将不会触发进一步通知。
通常,只有一个通知高和通知低标志被设置。 另一个阈值用于提供滞后机制,以避免当属性围绕阈值产生小的振荡时重复触发通知。
A
GaugeMonitor
可以在差模式下工作 。 在这种模式下,与高和低阈值比较的值是属性的两个连续观察值之间的差异。A
StringMonitor
观察类型为String
属性。 当观察到的属性变得相等和/或不等于给定的字符串时,发送通知。
- 从以下版本开始:
- 1.5
- 另请参见:
- Java Platform documentation on JMX technology, in particular the JMX Specification, version 1.4(pdf).
-
接口摘要 接口 描述 CounterMonitorMBean 暴露计数器监视器MBean的远程管理界面。GaugeMonitorMBean 暴露量规监视器MBean的远程管理界面。MonitorMBean 暴露监视器MBean的远程管理界面。StringMonitorMBean 暴露字符串监视器MBean的远程管理界面。 -
类摘要 Class 描述 CounterMonitor 定义监视器MBean,用于观察计数器属性的值。GaugeMonitor 定义一个监视器MBean,用于观察仪表属性的值。Monitor 定义所有监视器MBean的通用部分。MonitorNotification 提供监视器MBean发送的通知的定义。StringMonitor 定义一个监视器MBean,用于观察字符串属性的值。 -
异常摘要 异常 描述 MonitorSettingException 监视器设置在监视器运行时无效时由监视器抛出异常。