Package javax.management.monitor
提供监视器类的定义。监视器是定期观察一个或多个其他MBean中属性的值的MBean。如果属性满足某个条件,监视器会发出一个MonitorNotification
。当监视器MBean定期调用getAttribute
来检索被监视属性的值时,它会在Monitor.start()
调用者的访问控制上下文中这样做。
被监视的值可以是包含在复杂类型中的简单值。例如,在java.lang.management
中定义的MemoryMXBean
具有类型为MemoryUsage
的属性HeapMemoryUsage
。要监视已使用内存的量,由MemoryUsage
的used
属性描述,您可以监视"HeapMemoryUsage.used
"。该字符串将作为setObservedAttribute
的参数。
用于解释ObservedAttribute
如"HeapMemoryUsage.used"
的规则如下。假设字符串是A.e(在示例中A将是"HeapMemoryUsage"
,e将是"used"
)。
首先获取属性A的值。将其称为v。从v中提取值x如下:
- 如果v是一个
CompositeData
,并且如果v.get
(e)返回一个值,则x就是该值。 - 如果v是一个数组,并且
"length"
是字符串e,则x是数组的长度。 - 如果上述规则未产生值,并且如果内省,就好像调用
Introspector.getBeanInfo
来识别v的类(v.getClass()
)的属性具有名称e,那么x是读取属性值的结果。
第三条规则意味着,例如,如果属性HeapMemoryUsage
是一个MemoryUsage
,监视"HeapMemoryUsage.used"
将通过调用MemoryUsage.getUsed()
获得观察到的值。
如果ObservedAttribute
包含多个句点,例如"ConnectionPool.connectionStats.length"
,则上述规则将被迭代应用。在这里,v最初将是属性ConnectionPool
的值,并且通过将e等于"connectionStats"
应用上述规则派生出x。然后将v设置为此x,并通过将e等于"length"
再次应用规则派生出新的x。
尽管建议属性名称为有效的Java标识符,但属性可能被称为HeapMemoryUsage.used
。这意味着ObservedAttribute
为HeapMemoryUsage.used
可能意味着要观察的值是该名称的属性,或者是称为HeapMemoryUsage
的属性内的used
属性。因此,出于兼容性原因,当ObservedAttribute
包含句点(.
)时,监视器将检查是否存在一个属性,其名称是完整的ObservedAttribute
字符串(在示例中为HeapMemoryUsage.used
)。它通过为被观察的MBean调用getMBeanInfo
并查找具有给定名称的包含的MBeanAttributeInfo
来执行此操作。如果找到,则进行监视。如果正在观察多个MBean,并且其中一些具有HeapMemoryUsage.used
属性而其他没有,则行为在这种情况下是未指定的。因此,在这种情况下,实现可能仅对其中一个MBean调用getMBeanInfo
。如果检查结果在监视器处于活动状态时发生更改,则行为也是未指定的。
监视器的确切行为在JMX规范中详细说明。以下是摘要。
有三种类型的监视器:
-
CounterMonitor
观察整数类型的属性。假定这些属性是非负的,并且除了指定的模数可能发生回绕外,单调递增的。每个被观察的属性都有一个关联的阈值值。当属性超过其阈值时,将发送通知。可以指定一个偏移值。当观察值超过其阈值时,阈值将增加偏移量,或者增加足够的偏移量使阈值大于新观察到的值。
CounterMonitor
可以在差值模式下运行。在此模式下,与阈值进行比较的值是属性的两次连续观察之间的差值。 -
GaugeMonitor
观察数字类型的属性。每个被观察的属性都有一个关联的高阈值和低阈值。当观察属性越过高阈值时,如果通知高标志为true,则发送通知。高阈值值的后续越过将不会触发进一步的通知,直到量规值小于或等于低阈值。
当观察属性越过低阈值时,如果通知低标志为true,则发送通知。低阈值值的后续越过将不会触发进一步的通知,直到量规值大于或等于高阈值。
通常,只设置通知高和通知低标志中的一个。另一个阈值用于提供迟滞机制,以避免在属性围绕阈值值小幅振荡时重复触发通知。
GaugeMonitor
可以在差值模式下运行。在此模式下,与高阈值和低阈值进行比较的值是属性的两次连续观察之间的差值。 -
StringMonitor
观察String
类型的属性。当观察属性变为等于和/或不等于给定字符串时,将发送通知。
- 自:
- 1.5
- 参见:
-
ClassDescription定义了设计用于观察计数属性值的监视器MBean。公开了计数监视器MBean的远程管理接口。定义了设计用于观察量规属性值的监视器MBean。公开了量规监视器MBean的远程管理接口。定义了所有监视器MBean共有的部分。公开了监视器MBean的远程管理接口。提供了监视器MBean发送的通知的定义。在监视器运行时监视器设置变为无效时抛出的异常。定义了设计用于观察字符串属性值的监视器MBean。公开了字符串监视器MBean的远程管理接口。