Spec-Zone.ru › OpenJDK 17

Пакет javax.management

package javax.management

Предоставляет основные классы для расширений управления Java.

API расширений управления Java (JMX) — это стандартный API для управления и мониторинга. Типичные применения включают:

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

API JMX также может использоваться как часть решения для управления системами, сетями и т. д.

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

MBeans

Фундаментальным понятием API JMX является MBean. MBean — это именованный управляемый объект, представляющий ресурс. Он имеет интерфейс управления, который должен быть общедоступным и состоять из:

  • именованных и типизированных атрибутов, которые можно читать и/или записывать
  • именованных и типизированных операций, которые можно вызывать
  • типизированных уведомлений, которые могут быть отправлены MBean.

Например, MBean, представляющий конфигурацию приложения, может иметь атрибуты, представляющие различные элементы конфигурации. Чтение атрибута CacheSize вернёт текущее значение этого элемента. Запись обновит элемент, потенциально изменив поведение работающего приложения. Операция, такая как save, может сохранить текущую конфигурацию постоянно. Уведомление, такое как ConfigurationChangedNotification, может отправляться каждый раз, когда конфигурация изменяется.

В стандартном использовании API JMX MBeans реализуются как объекты Java. Однако, как объясняется ниже, к этим объектам обычно не обращаются напрямую.

Стандартные MBeans

Чтобы упростить реализацию MBean, API JMX включает понятие стандартных MBeans. Стандартный MBean — это MBean, атрибуты и операции которого выводятся из интерфейса Java с использованием определенных шаблонов именования, подобных тем, которые используются в JavaBeans. Например, рассмотрим такой интерфейс:

    public interface ConfigurationMBean {
         public int getCacheSize();
         public void setCacheSize(int size);
         public long getLastChangedTime();
         public void save();
    }
        

Методы getCacheSize и setCacheSize определяют атрибут чтения/записи типа int с именем CacheSize (с заглавной буквы, в отличие от соглашения JavaBeans).

Метод getLastChangedTime определяет атрибут типа long с именем LastChangedTime. Это атрибут только для чтения, так как нет метода setLastChangedTime.

Метод save определяет операцию с именем save. Это не атрибут, так как его имя не начинается с get, set, или is.

Точные шаблоны именования для стандартных MBeans подробно описаны в Спецификации JMX.

Существует два способа создания объекта Java, являющегося MBean с этим интерфейсом управления. Один — это создание объекта класса, имя которого точно такое же, как у интерфейса Java, но без суффикса MBean. Таким образом, в примере объектом будет класс Configuration, в том же пакете Java, что и ConfigurationMBean. Второй способ — использовать класс StandardMBean.

MXBeans

MXBean — это разновидность стандартного MBean, где сложные типы отображаются на стандартный набор типов, определённых в пакете javax.management.openmbean. MXBeans подходят, если в вашем интерфейсе MBean вам нужно было бы сослаться на классы, специфичные для приложения. Они подробно описаны в спецификации для MXBean.

Динамические MBeans

Динамический MBean — это MBean, который определяет свой интерфейс управления во время выполнения. Например, MBean конфигурации может определять имена и типы раскрываемых им атрибутов, анализируя XML-файл.

Любой объект Java класса, реализующего интерфейс DynamicMBean, является динамическим MBean.

Открытые MBeans

Открытый MBean — это вид динамического MBean, где типы атрибутов и параметров операций и возвращаемых значений создаются с использованием небольшого набора предопределенных классов Java. Открытые MBeans облегчают работу с удалёнными программами управления, которые не обязательно имеют доступ к типам, специфичным для приложения, включая программы, не написанные на Java. Открытые MBeans определяются пакетом javax.management.openmbean.

Модельные MBeans

Модельный MBean — это вид динамического MBean, который служит мостом между интерфейсом управления и лежащим в основе управляемым ресурсом. Как интерфейс управления, так и управляемый ресурс задаются как объекты Java. Одна и та же реализация Model MBean может быть повторно использована многократно с различными интерфейсами управления и управляемыми ресурсами, и она может обеспечивать общие функции, такие как сохранение и кэширование. Модельные MBeans определяются пакетом javax.management.modelmbean.

Сервер MBeans

Для использования MBean его необходимо зарегистрировать на сервере MBeans. Сервер MBeans — это хранилище MBeans. Обычно единственный доступ к MBeans — через сервер MBeans. Другими словами, код больше не обращается напрямую к объекту Java, реализующему MBean, а вместо этого обращается к MBean по имени через сервер MBeans. Каждый MBean имеет уникальное имя на сервере MBeans, определённое классом ObjectName.

Сервер MBeans — это объект, реализующий интерфейс MBeanServer. Наиболее удобный для использования сервер MBeans — платформенный сервер MBeans. Это один сервер MBeans, который может быть общим для различных управляемых компонентов, работающих в одной и той же виртуальной машине Java. К платформенному серверу MBeans обращаются с помощью метода ManagementFactory.getPlatformMBeanServer().

Код приложения также может создать новый сервер MBeans или получить доступ к уже созданным серверам MBeans с помощью класса MBeanServerFactory.

Создание MBeans на сервере MBeans

Существует два способа создания MBean. Один — создать объект Java, который будет MBean, затем использовать метод registerMBean для его регистрации на сервере MBeans. Другой — создать и зарегистрировать MBean в одной операции, используя один из методов createMBean.

Метод registerMBean проще для локального использования, но не может использоваться удаленно. Метод createMBean может использоваться удаленно, но иногда требует внимания к вопросам загрузки классов.

MBean может выполнять действия при регистрации или отмене регистрации на сервере MBeans, если он реализует интерфейс MBeanRegistration.

Доступ к MBeans на сервере MBeans

Имея ObjectName name и MBeanServer mbs, вы можете получить доступ к атрибутам и операциям, как в этом примере:

    int cacheSize = mbs.getAttribute(name, "CacheSize");
    Attribute newCacheSize =
         new Attribute("CacheSize", new Integer(2000));
    mbs.setAttribute(name, newCacheSize);
    mbs.invoke(name, "save", new Object[0], new Class[0]);
        

В качестве альтернативы, если у вас есть интерфейс Java, соответствующий интерфейсу управления для MBean, вы можете использовать прокси MBean так:

    ConfigurationMBean conf =
        JMX.newMBeanProxy(mbs, name, ConfigurationMBean.class);
    int cacheSize = conf.getCacheSize();
    conf.setCacheSize(2000);
    conf.save();
        

Использование прокси MBean — просто удобство. Второй пример в конечном итоге вызывает те же MBeanServer операции, что и первый.

Сервер MBeans может быть запрошен на MBeans, чьи имена соответствуют определённым шаблонам и/или чьи атрибуты соответствуют определённым ограничениям. Шаблоны имён строятся с помощью класса ObjectName, а ограничения строятся с помощью класса Query. Методы queryNames и queryMBeans затем выполняют запрос.

Жизненный цикл MBean

MBean может реализовывать интерфейс MBeanRegistration, чтобы получать уведомления о регистрации и отмене регистрации на сервере MBean. Дополнительно метод preRegister позволяет MBean получить ссылку на объект MBeanServer и получить его ObjectName на сервере MBeans.

Уведомления

Уведомление — это экземпляр класса Notification или его подкласса. В дополнение к своему классу Java, оно имеет строку типа, которая может отличать его от других уведомлений того же класса.

MBean, который будет отправлять уведомления, должен реализовывать интерфейс NotificationBroadcaster или NotificationEmitter. Обычно он делает это, создавая подкласс NotificationBroadcasterSupport или делегируя экземпляру этого класса. Вот пример:

    public class Configuration extends NotificationBroadcasterSupport
            implements ConfigurationMBean {
        ...
        private void updated() {
            Notification n = new Notification(...);
            sendNotification(n);
        }
    }
        

Уведомления могут приниматься слушателем, который является объектом, реализующим интерфейс NotificationListener. Вы можете добавить слушателя к MBean с помощью метода MBeanServer.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object). При необходимости вы можете указать фильтр в этом методе, чтобы выбрать только уведомления, представляющие интерес. Фильтр — это объект, реализующий интерфейс NotificationFilter.

MBean может быть слушателем уведомлений, отправляемых другими MBeans на том же сервере MBeans. В этом случае он реализует NotificationListener, и используется метод MBeanServer.addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object) для прослушивания.

Удаленный доступ к MBeans

Сервер MBeans может быть доступен удалённо через коннектор. Коннектор позволяет удалённому приложению Java получать доступ к серверу MBeans по существу так же, как и к локальному. Пакет javax.management.remote определяет коннекторы.

Спецификация JMX также определяет понятие адаптера. Адаптер переводит запросы в таких протоколах, как SNMP или HTML, в обращения к серверу MBean. Например, операция SNMP GET может привести к getAttribute на сервере MBean.

Взаимодействие между версиями спецификации JMX

Когда клиент подключается к серверу с помощью удаленного API JMX, возможно, что у них нет одной и той же версии спецификации JMX. Описываемая здесь версия спецификации JMX — версия 1.4. Предыдущие версии были 1.0, 1.1 и 1.2. (Версии 1.3 не существовало.) Стандартный удаленный API JMX определен для работы с версией 1.2 и выше, поэтому в развертывании, основанном на стандартах, единственные вопросы взаимодействия, возникающие, касаются версий 1.2 и выше.

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

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

Если удалённый сервер MBean — версии 1.2

  • Вы не можете использовать подстановочные знаки в ключевом свойстве объекта ObjectName, например domain:type=Foo,name=*. Подстановочные знаки, которые соответствуют целым свойствам, всё ещё разрешены, например *:* или *:type=Foo,*.

  • Вы не можете использовать Query.isInstanceOf в запросе.

  • Вы не можете использовать синтаксис с точкой, такой как HeapMemoryUsage.used в наблюдаемом атрибуте монитора, как описано в документации пакета javax.management.monitor.

С момента:
1.5
См. также:
  • Спецификация JMX, версия 1.4
Пакет Описание
javax.management.loading
Предоставляет классы, реализующие расширенную динамическую загрузку.
javax.management.modelmbean
Определяет классы ModelMBean.
javax.management.monitor
Определяет классы монитора.
javax.management.openmbean
Предоставляет открытые типы данных и классы описателей Open MBean.
javax.management.relation
Определяет службу Relations.
javax.management.remote
Интерфейсы для удалённого доступа к серверам JMX MBean.
javax.management.timer
Определяет MBean таймера.
Класс Описание
Attribute
Представляет атрибут MBean, связывая его имя со значением.
AttributeChangeNotification
Предоставляет определения уведомлений об изменении атрибутов, отправляемых MBean.
AttributeChangeNotificationFilter
Этот класс реализует интерфейс NotificationFilter для attribute change notification.
AttributeList
Представляет список значений атрибутов MBean.
AttributeNotFoundException
Указанный атрибут не существует или не может быть получен.
AttributeValueExp
Представляет атрибуты, используемые в качестве аргументов к реляционным ограничениям.
BadAttributeValueExpException
Выбрасывается, когда неверный атрибут MBean передается методу построения запроса.
BadBinaryOpValueExpException
Выбрасывается, когда неверное выражение передается методу для построения запроса.
BadStringOperationException
Выбрасывается, когда неверная строковая операция передается методу для построения запроса.
ConstructorParameters
Аннотация к конструктору, которая показывает, как параметры этого конструктора соответствуют методам-геттерам созданного объекта.
DefaultLoaderRepository Устарело.
Используйте MBeanServer.getClassLoaderRepository() вместо этого.
Descriptor
Дополнительные метаданные для элемента JMX.
DescriptorAccess
Этот интерфейс используется для доступа к дескрипторам класса Descriptor, которые связаны с компонентом JMX, т.е.
DescriptorKey
Мета-аннотация, описывающая, как элемент аннотации относится к полю в Descriptor.
DescriptorRead
Интерфейс для чтения дескриптора элемента управления, например, MBeanInfo.
DynamicMBean
Определяет методы, которые должны быть реализованы динамическим MBean (MBean, который раскрывает динамический интерфейс управления).
ImmutableDescriptor
Неизменяемый дескриптор.
InstanceAlreadyExistsException
MBean уже зарегистрирован в репозитории.
InstanceNotFoundException
Указанный MBean не существует в репозитории.
IntrospectionException
Произошла ошибка при интроспекции MBean.
InvalidApplicationException
Выбрасывается, когда происходит попытка применить следующее: подзапрос к MBean или квалифицированное выражение атрибута к MBean неправильного класса.
InvalidAttributeValueException
Указанное значение не является допустимым для атрибута.
JMException
Исключения, выбрасываемые реализациями JMX.
JMRuntimeException
Исключения времени выполнения, выдаваемые реализациями JMX.
JMX
Статические методы из API JMX.
ListenerNotFoundException
Указанный слушатель MBean не существует в репозитории.
MalformedObjectNameException
Формат строки не соответствует допустимому ObjectName.
MBeanAttributeInfo
Описание атрибута MBean, доступного для управления.
MBeanConstructorInfo
Описание конструктора, раскрываемого MBean.
MBeanException
Представляет исключения "определяемые пользователем", выбрасываемые методами MBean в агенте.
MBeanFeatureInfo
Предоставляет общую информацию для объекта дескриптора MBean.
MBeanInfo
Описание интерфейса управления, предоставляемого MBean; то есть набор атрибутов и операций, доступных для операций управления.
MBeanNotificationInfo
Класс MBeanNotificationInfo используется для описания характеристик различных экземпляров уведомлений, исходящих от MBean для заданного Java-класса уведомления.
MBeanOperationInfo
Описание операции управления, раскрываемой MBean.
MBeanParameterInfo
Описание аргумента операции, раскрываемой MBean.
MBeanPermission
Разрешение, контролирующее доступ к операциям MBeanServer.
MBeanRegistration
Может быть реализован MBean для выполнения операций до и после регистрации или отмены регистрации в сервере MBean.
MBeanRegistrationException
Оборачивает исключения, брошенные методами preRegister(), preDeregister() интерфейса MBeanRegistration.
MBeanServer
Это интерфейс для управления MBean на стороне агента.
MBeanServerBuilder
Этот класс представляет собой билдер, который создает реализацию по умолчанию MBeanServer.
MBeanServerConnection
Этот интерфейс представляет способ взаимодействия с сервером MBean, локальным или удаленным.
MBeanServerDelegate
Представляет сервер MBean с точки зрения управления.
MBeanServerDelegateMBean
Определяет интерфейс управления объектом класса MBeanServerDelegate.
MBeanServerFactory
Предоставляет ссылки на серверы MBean.
MBeanServerInvocationHandler
InvocationHandler, который перенаправляет методы интерфейса управления MBean через сервер MBean к самому MBean.
MBeanServerNotification
Представляет уведомление, отправленное сервером MBean через MBeanServerDelegate MBean.
MBeanServerPermission
Разрешение для выполнения действий, связанных с MBeanServer.
MBeanTrustPermission
Это разрешение представляет «доверие» к подписывающему лицу или кодовой базе.
MXBean
Аннотация для явного обозначения интерфейса как интерфейса MXBean или как не являющегося интерфейсом MXBean.
END_OF_DOCUMENT_MARKER
NotCompliantMBeanException
Исключение, возникающее при попытке зарегистрировать объект в сервере MBean, который не является совместимым с JMX MBean.
Notification
Класс Notification представляет уведомление, выпущенное MBean.
NotificationBroadcaster
Интерфейс, реализуемый MBean, который отправляет уведомления.
NotificationBroadcasterSupport
Предоставляет реализацию интерфейса NotificationEmitter.
NotificationEmitter
Интерфейс, реализуемый MBean, который отправляет уведомления.
NotificationFilter
Для реализации любым классом, действующим как фильтр уведомлений.
NotificationFilterSupport
Предоставляет реализацию интерфейса NotificationFilter.
NotificationListener
Должен быть реализован объектом, который хочет получать уведомления.
ObjectInstance
Используется для представления имени объекта MBean и его имени класса.
ObjectName
Представляет имя объекта MBean или шаблон, который может соответствовать именам нескольких MBeans.
OperationsException
Представляет исключения, выбрасываемые в сервере MBean при выполнении операций с MBeans.
PersistentMBean
Этот класс является интерфейсом, который должен быть реализован MBeans, которые предназначены для сохранения.
Query
Строит ограничения объекта запроса.
QueryEval
Позволяет выполнить запрос в контексте конкретного сервера MBean.
QueryExp
Представляет реляционные ограничения, подобные "условиям where" запросов базы данных.
ReflectionException
Представляет исключения, выбрасываемые в сервере MBean при использовании классов java.lang.reflect для вызова методов на MBeans.
RuntimeErrorException
Когда в агенте происходит java.lang.Error, он должен быть перехвачен и повторно сгенерирован как RuntimeErrorException.
RuntimeMBeanException
Представляет исключения времени выполнения, выбрасываемые методами MBean в агенте.
RuntimeOperationsException
Представляет исключения времени выполнения, выбрасываемые в агенте при выполнении операций с MBeans.
ServiceNotFoundException
Представляет исключения, возникающие, когда запрашиваемая услуга не поддерживается.
StandardEmitterMBean
MBean, чьи интерфейсы управления определяются путем рефлексии на Java-интерфейсе, и который отправляет уведомления.
StandardMBean
MBean, чьи интерфейсы управления определяются путем рефлексии на Java-интерфейсе.
StringValueExp
Представляет строки, которые являются аргументами к реляционным ограничениям.
ValueExp
Представляет значения, которые могут быть переданы в качестве аргументов к реляционным выражениям.

© 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/package-summary.html

Spec-Zone.ru

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