Spec-Zone .ru
спецификации, руководства, описания, API
 Платформа Java™
Стандарт Эд. 7

Пакет javax.management

Обеспечивает базовые классы для Расширений управления Java.

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

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

Обеспечивает базовые классы для Расширений управления Java.

Расширения управления Java (JMXTM) API являются стандартным API для управления и контроля. Типичное использование включает:

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

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

MBeans

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

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

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

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

Чтобы сделать реализацию MBean простой, API JMX включает понятие Стандартного MBeans. Стандартный 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.

Сервер MBean

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

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

Код программы может также создать новый Сервер MBean, или доступ уже создаваемые Серверы MBean, используя MBeanServerFactory класс.

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

Есть два способа создать MBean. Нужно создать объект Java, который будет MBean, затем использовать registerMBean метод, чтобы зарегистрировать это в Сервере MBean. Другой должен создать и зарегистрировать MBean в единственной работе, используя один из createMBean методы.

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

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

Доступ к MBeans в Сервере MBean

Данный 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 операции как первый.

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

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

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

Уведомления

Уведомление является экземпляром 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 в том же самом Сервере MBean. В этом случае это реализует NotificationListener и метод MBeanServer.addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object) используется, чтобы слушать.

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

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

Спецификация JMX также определяет понятие адаптера. Адаптер преобразовывает между запросами в протоколе, такими как SNMP или HTML и доступы к Серверу MBean. Таким образом, например SNMP ДОБИРАЕТСЯ, работа могла бы привести к a getAttribute на Сервере MBean.

Функциональная совместимость между версиями спецификации JMX

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

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

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

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

С тех пор:
1.5
См. Также:
Документация Платформы Java относительно технологии JMX в особенности Спецификация JMX, версия 1.4 (pdf).
 Платформа Java™
Стандарт Эд. 7

Представьте ошибку или функцию
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.