Spec-Zone.ru › OpenJDK 17

Пакет 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 — это длина массива.
  • Если вышеперечисленные правила не дают значения и если интроспекция, как при вызове 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, может означать, что наблюдаемое значение — это либо атрибут с таким именем, либо свойство used в атрибуте с именем HeapMemoryUsage. Поэтому по соображениям совместимости, когда ObservedAttribute содержит точку (.), монитор проверит, существует ли атрибут с полным именем ObservedAttribute (HeapMemoryUsage.used в примере). Для этого он вызовет getMBeanInfo для наблюдаемого MBean и поиска содержащегося MBeanAttributeInfo с заданным именем. Если он найден, то это и будет отслеживаемым значением. Если наблюдается более одного MBean, поведение неопределённо, если у некоторых из них есть атрибут HeapMemoryUsage.used, а у других нет. В этом случае реализация может вызвать getMBeanInfo только для одного из MBean. Поведение также неопределённо, если результат проверки изменяется во время работы монитора.

Подробное описание поведения мониторов приведено в Спецификации JMX. Далее приводится краткое описание.

Существует три типа мониторов:

  • CounterMonitor наблюдает за атрибутами целочисленного типа. Предполагается, что атрибуты неотрицательны и монотонно возрастают, за исключением возможного переполнения в заданном модуле. Каждый наблюдаемый атрибут имеет связанное значение порога. Уведомление отправляется, когда атрибут превышает порог.

    Можно указать значение смещения. Когда наблюдаемое значение превышает порог, порог увеличивается на смещение или на кратное смещению, достаточное для того, чтобы порог стал больше нового наблюдаемого значения.

    CounterMonitor может работать в режиме разницы. В этом режиме значение, сравниваемое с порогом, — это разница между двумя последовательными наблюдениями за атрибутом.

  • GaugeMonitor наблюдает за атрибутами числового типа. Каждый наблюдаемый атрибут имеет связанный верхний порог и нижний порог.

    Когда наблюдаемый атрибут пересекает верхний порог, если флаг уведомлять о превышении установлен в true, то отправляется уведомление. Последующие пересечения верхнего порога не будут вызывать дальнейших уведомлений, пока значение датчика не станет меньше или равно нижнему порогу.

    Когда наблюдаемый атрибут пересекает нижний порог, если флаг уведомлять о понижении установлен в true, то отправляется уведомление. Последующие пересечения нижнего порога не будут вызывать дальнейших уведомлений, пока значение датчика не станет больше или равно верхнему порогу.

    Обычно устанавливается только один из флагов уведомлять о превышении и уведомлять о понижении. Другой порог используется для создания гистерезиса, чтобы избежать повторного срабатывания уведомлений при небольших колебаниях атрибута вокруг порога.

    GaugeMonitor может работать в режиме разницы. В этом режиме значение, сравниваемое с верхним и нижним порогами, — это разница между двумя последовательными наблюдениями за атрибутом.

  • StringMonitor наблюдает за атрибутами типа String. Уведомление отправляется, когда наблюдаемый атрибут становится равным и/или не равным заданной строке.

Since:
1.5
See Also:
  • JMX Specification, version 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-монитора строки.

© 1993, 2021, 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/17/docs/api/java.management/javax/management/monitor/package-summary.html

Spec-Zone.ru

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