模块  java.management

Package javax.management.monitor

提供监视器类的定义。 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" )。

首先,获得属性A的值。 叫它v v中提取值x ,如下所示:

  • 如果vCompositeData并且如果v gete )返回一个值,然后x就是该值。
  • 如果v是数组而e是字符串"length"那么x是数组的长度。
  • 如果上述规则不产生一个值,并且如果自省,仿佛通过调用Introspector.getBeanInfo ,为类 getClass() )识别与该名字的属性,则x是读取属性值的结果。

第三规则意味着例如如果属性HeapMemoryUsageMemoryUsage ,则监视"HeapMemoryUsage.used"将通过调用MemoryUsage.getUsed()来获得观察值。

如果ObservedAttribute包含多个周期,例如"ConnectionPool.connectionStats.length" ,则迭代地应用上述规则。 这里, v最初将是属性ConnectionPool的值,并且x将通过应用上述规则而得到,其中e等于"connectionStats" 然后将v设置为此x,并通过再次应用规则得到的新x ,其中e等于"length"

虽然建议属性名称是有效的Java标识符,但可以调用属性HeapMemoryUsage.used 这意味着ObservedAttribute这是HeapMemoryUsage.used可能意味着观察值是该名称的属性,或者属性used称为属性内HeapMemoryUsage 因此,出于兼容性原因,当ObservedAttribute包含句点( . )时,监视器将检查是否存在名称为完整ObservedAttribute字符串的属性( HeapMemoryUsage.used中为HeapMemoryUsage.used )。 它通过为观察到的MBean调用getMBeanInfo并查找具有给定名称的包含MBeanAttributeInfo来完成此操作。 如果找到一个,那么这就是被监控的。 如果正在观察多个MBean,则如果某些MBean具有HeapMemoryUsage.used属性而其他MBean不具有该属性, HeapMemoryUsage.used指定该行为。 因此,在这种情况下,实现可以仅对其中一个MBean调用getMBeanInfo 如果在监视器处于活动状态时检查结果发生更改,则行为也未指定。

监视器的确切行为详见JMX Specification 以下是摘要。

有三种监视器:

  • A CounterMonitor观察整数类型的属性。 假设属性是非负的,并且除了在指定模数下可能的翻转之外单调增加。 每个观察到的属性都具有相关的值。 当属性超过其阈值时,将发送通知。

    可以指定偏移值。 当观测值超过其阈值时,阈值增加偏移量,或者增加偏移量的倍数以使阈值大于新的观测值。

    CounterMonitor可以以差分模式操作 在此模式中,与阈值进行比较的值是属性的两个连续观察值之间的差异。

  • GaugeMonitor观察数值类型的属性。 每个观察到的属性都具有相关的高阈值低阈值

    当观察到的属性超过高阈值时,如果通知高标志为真,则发送通知。 在测量值变得小于或等于低阈值之前,高阈值的后续交叉将不会触发进一步的通知。

    当观察到的属性超过低阈值时,如果notify low标志为真,则发送通知。 低阈值的后续交叉将不会触发进一步的通知,直到仪表值变得大于或等于高阈值。

    通常,只设置通知高和通知低标志中的一个。 另一个阈值用于提供滞后机制,以避免当属性在阈值附近产生小振荡时重复触发通知。

    GaugeMonitor可以以差分模式操作 在此模式中,与高阈值和低阈值进行比较的值是属性的两个连续观察值之间的差异。

  • A StringMonitor观察类型String属性。 当观察到的属性变得相等和/或不等于给定字符串时,发送通知。

从以下版本开始:
1.5
另请参见:
JMX Specification, version 1.4