Module java.management

Package javax.management.monitor


package javax.management.monitor

提供监视器类的定义。监视器是定期观察一个或多个其他MBean中属性的值的MBean。如果属性满足某个条件,监视器会发出一个MonitorNotification。当监视器MBean定期调用getAttribute来检索被监视属性的值时,它会在Monitor.start()调用者的访问控制上下文中这样做。

被监视的值可以是包含在复杂类型中的简单值。例如,在java.lang.management中定义的MemoryMXBean具有类型为MemoryUsage的属性HeapMemoryUsage。要监视已使用内存的量,由MemoryUsageused属性描述,您可以监视"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。这意味着ObservedAttributeHeapMemoryUsage.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
参见:
  • Class
    Description
    定义了设计用于观察计数属性值的监视器MBean。
    公开了计数监视器MBean的远程管理接口。
    定义了设计用于观察量规属性值的监视器MBean。
    公开了量规监视器MBean的远程管理接口。
    定义了所有监视器MBean共有的部分。
    公开了监视器MBean的远程管理接口。
    提供了监视器MBean发送的通知的定义。
    在监视器运行时监视器设置变为无效时抛出的异常。
    定义了设计用于观察字符串属性值的监视器MBean。
    公开了字符串监视器MBean的远程管理接口。