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