Spec-Zone.ru › OpenJDK 25

Package javax.management.monitor

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
См. также:
  • Спецификация JMX, версия 1.4
Пакет Описание
javax.management
Предоставляет основные классы Java Management Extensions.
Класс Описание
CounterMonitor
Определяет MBean монитора, предназначенный для наблюдения за значениями атрибута-счётчика.
CounterMonitorMBean
Предоставляет интерфейс удалённого управления MBean монитора-счётчика.
GaugeMonitor
Определяет MBean монитора, предназначенный для наблюдения за значениями атрибута-датчика.
GaugeMonitorMBean
Предоставляет интерфейс удалённого управления MBean монитора-датчика.
Monitor
Определяет общую для всех MBean мониторов часть.
MonitorMBean
Предоставляет интерфейс удалённого управления MBean мониторов.
MonitorNotification
Предоставляет определения уведомлений, отправляемых MBean мониторов.
MonitorSettingException
Исключение, выбрасываемое монитором, если настройка монитора становится недопустимой во время его работы.
StringMonitor
Определяет MBean монитора, предназначенный для наблюдения за значениями строкового атрибута.
StringMonitorMBean
Предоставляет интерфейс удалённого управления MBean строкового монитора.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API