Spec-Zone.ru › OpenJDK 8

Пакет javax.management

Предоставляет основные классы для Java Management Extensions.

См.: Описание

Интерфейс Описание
Descriptor

Дополнительные метаданные для элемента JMX.

DescriptorAccess

Этот интерфейс используется для доступа к дескрипторам класса Descriptor, которые связаны с компонентом JMX, т.е.

DescriptorRead

Интерфейс для чтения Descriptor элемента интерфейса управления, такого как MBeanInfo.

DynamicMBean

Определяет методы, которые должны быть реализованы динамическим MBean (MBean, который раскрывает динамический интерфейс управления).

MBeanRegistration

Может быть реализован MBean для выполнения операций до и после регистрации или отмены регистрации в сервере MBean.

MBeanServer

Это интерфейс для управления MBean на стороне агента.

MBeanServerConnection

Этот интерфейс представляет способ взаимодействия с сервером MBean, локальным или удаленным.

MBeanServerDelegateMBean

Определяет интерфейс управления объектом класса MBeanServerDelegate.

NotificationBroadcaster

Интерфейс, реализуемый MBean, который отправляет уведомления.

NotificationEmitter

Интерфейс, реализуемый MBean, который отправляет уведомления.

NotificationFilter

Должен быть реализован любым классом, выполняющим роль фильтра уведомлений.

NotificationListener

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

PersistentMBean

Этот класс является интерфейсом, который должен быть реализован MBean, которые должны быть постоянными.

QueryExp

Представляет реляционные ограничения, аналогичные условиям "где" в запросах к базе данных.

ValueExp

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

Класс Описание
Attribute

Представляет атрибут MBean, связывая его имя со значением.

AttributeChangeNotification

Предоставляет определения уведомлений об изменениях атрибутов, отправляемых MBean.

AttributeChangeNotificationFilter

Этот класс реализует интерфейс NotificationFilter для attribute change notification.

AttributeList

Представляет список значений для атрибутов MBean.

AttributeValueExp

Представляет атрибуты, используемые в качестве аргументов к реляционным ограничениям.

DefaultLoaderRepository Устарел

Используйте MBeanServer.getClassLoaderRepository() вместо этого.

ImmutableDescriptor

Неизменяемый дескриптор.

JMX

Статические методы из API JMX.

MBeanAttributeInfo

Описывает атрибут MBean, доступный для управления.

MBeanConstructorInfo

Описывает конструктор, раскрытый MBean.

MBeanFeatureInfo

Предоставляет общую информацию для объекта дескриптора MBean.

MBeanInfo

Описывает интерфейс управления, раскрытый MBean; то есть набор атрибутов и операций, доступных для операций управления.

MBeanNotificationInfo

Класс MBeanNotificationInfo используется для описания характеристик различных экземпляров уведомлений, генерируемых MBean для заданного Java-класса уведомления.

MBeanOperationInfo

Описывает операцию управления, раскрытую MBean.

MBeanParameterInfo

Описывает аргумент операции, раскрытой MBean.

MBeanPermission

Разрешение, контролирующее доступ к операциям MBeanServer.

MBeanServerBuilder

Этот класс представляет собой билдер, который создает реализацию по умолчанию MBeanServer.

MBeanServerDelegate

Представляет сервер MBean с точки зрения управления.

MBeanServerFactory

Предоставляет ссылки на серверы MBean.

MBeanServerInvocationHandler

InvocationHandler, который перенаправляет методы в интерфейсе управления MBean через сервер MBean к MBean.

MBeanServerNotification

Представляет уведомление, отправленное сервером MBean через MBeanServerDelegate MBean.

MBeanServerPermission

Разрешение на выполнение действий, связанных с серверами MBean.

MBeanTrustPermission

Это разрешение представляет "доверие" к подписывающему лицу или кодовой базе.

Notification

Класс Notification представляет уведомление, отправленное MBean.

NotificationBroadcasterSupport

Предоставляет реализацию интерфейса NotificationEmitter.

NotificationFilterSupport

Предоставляет реализацию интерфейса NotificationFilter.

ObjectInstance

Используется для представления имени объекта MBean и его имени класса.

ObjectName

Представляет имя объекта MBean или шаблон, который может соответствовать именам нескольких MBean.

Query

Создает ограничения объекта запроса.

QueryEval

Позволяет выполнять запрос в контексте конкретного сервера MBean.

StandardEmitterMBean

MBean, чей интерфейс управления определяется рефлексией над Java-интерфейсом и который отправляет уведомления.

StandardMBean

MBean, чей интерфейс управления определяется рефлексией над Java-интерфейсом.

StringValueExp

Представляет строки, которые являются аргументами реляционных ограничений.

Исключение Описание
AttributeNotFoundException

Указанный атрибут не существует или не может быть получен.

BadAttributeValueExpException

Выбрасывается, когда в метод построения запроса передаётся некорректный атрибут MBean.

BadBinaryOpValueExpException

Выбрасывается, когда в метод построения запроса передаётся некорректное выражение.

BadStringOperationException

Выбрасывается, когда в метод построения запроса передаётся некорректная строковая операция.

InstanceAlreadyExistsException

MBean уже зарегистрирован в репозитории.

InstanceNotFoundException

Указанный MBean не существует в репозитории.

IntrospectionException

Во время интроспекции MBean произошла ошибка.

InvalidApplicationException

Выбрасывается, когда производится попытка применения следующего: подзапрос к MBean или квалифицированное выражение атрибута к MBean неподходящего класса.

InvalidAttributeValueException

Указанное значение некорректно для атрибута.

JMException

Исключения, выбрасываемые реализациями JMX.

JMRuntimeException

Исключения времени выполнения, испускаемые реализациями JMX.

ListenerNotFoundException

Указанный слушатель MBean не существует в репозитории.

MalformedObjectNameException

Формат строки не соответствует допустимому ObjectName.

MBeanException

Представляет "пользовательские" исключения, выбрасываемые методами MBean в агенте.

MBeanRegistrationException

Оборачивает исключения, выбрасываемые методами preRegister(), preDeregister() интерфейса MBeanRegistration.

NotCompliantMBeanException

Исключение, возникающее при попытке регистрации объекта в сервере MBean, который не является совместимым с JMX MBean.

OperationsException

Представляет исключения, выбрасываемые сервером MBean при выполнении операций над MBean.

ReflectionException

Представляет исключения, выбрасываемые сервером MBean при использовании классов java.lang.reflect для вызова методов MBean.

RuntimeErrorException

Когда в агенте возникает java.lang.Error, он должен быть перехвачен и повторно выброшен как RuntimeErrorException.

RuntimeMBeanException

Представляет исключения времени выполнения, выбрасываемые методами MBean в агенте.

RuntimeOperationsException

Представляет исключения времени выполнения, выбрасываемые в агенте при выполнении операций над MBean.

ServiceNotFoundException

Представляет исключения, возникающие при запросе несуществующей службы.

Тип аннотации Описание
DescriptorKey

Мета-аннотация, описывающая, как элемент аннотации связан с полем в Descriptor.

MXBean

Аннотация для явного обозначения интерфейса как интерфейса MXBean или как не являющегося MXBean интерфейсом.

Описание пакета javax.management

Предоставляет основные классы для Java Management Extensions.

API Java Management Extensions (JMXTM) — это стандартный 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-интерфейса с использованием определенных шаблонов именования, аналогичных тем, которые используются JavaBeansTM. Например, рассмотрим такой интерфейс:

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. Одна и та же реализация Модельного 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, чтобы получать уведомления о регистрации и выходе из сервера MBeans. Кроме того, метод 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, и обеспечивает доступ к серверу MBeans. Например, операция SNMP GET может привести к getAttribute на сервере MBeans.

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

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

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

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

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

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

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

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

С:
1.5
См. также:
Документация платформы Java по технологии JMX, в частности, Спецификацию JMX, версия 1.4 (pdf).

© 1993, 2020, 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.

Spec-Zone.ru

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