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", следующие. Предположим, что строка имеет вид A.e (тогда A будет "HeapMemoryUsage", а e — "used" в приведённом примере).
Сначала получается значение атрибута A. Обозначим его как v. Значение x извлекается из v следующим образом:
- Если v — это
CompositeDataи v.get(e) возвращает значение, то x — это оно. - Если v — массив, а e — строка
"length", то x — длина массива. - Если приведённые выше правила не дают значения и интроспекция класса v (v.
getClass()), например путём вызова Introspector.getBeanInfo , обнаруживает свойство с именем 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, может указывать как на значение атрибута с таким именем, так и на свойство used внутри атрибута с именем HeapMemoryUsage. Поэтому для обеспечения совместимости, если ObservedAttribute содержит точку (.), монитор проверит, существует ли атрибут, имя которого совпадает со всей строкой ObservedAttribute (в примере — HeapMemoryUsage.used). Для этого он вызывает getMBeanInfo для наблюдаемого MBean и ищет в полученных данных MBeanAttributeInfo с указанным именем. Если такой атрибут найден, наблюдение ведётся за ним. Если наблюдается более одного MBean, поведение не определено, когда у некоторых из них есть атрибут HeapMemoryUsage.used, а у других его нет. Поэтому в этом случае реализация может вызвать getMBeanInfo только для одного из MBean. Поведение также не определено, если результат проверки изменяется во время работы монитора.
Точное поведение мониторов подробно описано в Спецификации JMX. Далее приводится краткое описание.
Существуют три типа мониторов:
-
CounterMonitorнаблюдает за атрибутами целочисленного типа. Предполагается, что значения атрибутов неотрицательны и монотонно возрастают, за исключением возможного циклического перехода при достижении заданного модуля. С каждым наблюдаемым атрибутом связано значение порога. Уведомление отправляется, когда значение атрибута превышает порог.Можно задать значение смещения. Когда наблюдаемое значение превышает порог, порог увеличивается на величину смещения или на кратную ей величину, достаточную для того, чтобы новое значение порога стало больше нового наблюдаемого значения.
CounterMonitorможет работать в режиме разности. В этом режиме значение, сравниваемое с порогом, представляет собой разность между двумя последовательными наблюдениями атрибута. -
GaugeMonitorнаблюдает за атрибутами числового типа. С каждым наблюдаемым атрибутом связаны верхний порог и нижний порог.Когда значение наблюдаемого атрибута пересекает верхний порог, отправляется уведомление, если флаг notify high равен true. Последующие пересечения верхнего порога не вызывают новых уведомлений, пока значение датчика не станет меньше или равно нижнему порогу.
Когда значение наблюдаемого атрибута пересекает нижний порог, отправляется уведомление, если флаг notify low равен true. Последующие пересечения нижнего порога не вызывают новых уведомлений, пока значение датчика не станет больше или равно верхнему порогу.
Обычно устанавливается только один из флагов notify high и notify low. Другой порог используется для реализации механизма гистерезиса, который предотвращает повторную отправку уведомлений при небольших колебаниях значения атрибута около порога.
GaugeMonitorможет работать в режиме разности. В этом режиме значение, сравниваемое с верхним и нижним порогами, представляет собой разность между двумя последовательными наблюдениями атрибута. -
StringMonitorнаблюдает за атрибутами типаString. Уведомление отправляется, когда значение наблюдаемого атрибута становится равным и/или неравным заданной строке.
- С версии:
- 1.5
- См. также:
| Класс | Описание |
|---|---|
| CounterMonitor | Определяет MBean монитора, предназначенный для наблюдения за значениями атрибута-счётчика. |
| CounterMonitorMBean | Предоставляет интерфейс удалённого управления MBean монитора-счётчика. |
| GaugeMonitor | Определяет MBean монитора, предназначенный для наблюдения за значениями атрибута-датчика. |
| GaugeMonitorMBean | Предоставляет интерфейс удалённого управления MBean монитора-датчика. |
| Monitor | Определяет общую для всех MBean мониторов часть. |
| MonitorMBean | Предоставляет интерфейс удалённого управления MBean мониторов. |
| MonitorNotification | Предоставляет определения уведомлений, отправляемых MBean мониторов. |
| MonitorSettingException | Исключение, выбрасываемое монитором, если настройка монитора становится недопустимой во время его работы. |
| StringMonitor | Определяет MBean монитора, предназначенный для наблюдения за значениями строкового атрибута. |
| StringMonitorMBean | Предоставляет интерфейс удалённого управления MBean строкового монитора. |
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.management/javax/management/monitor/package-summary.html