Расширения управления Java (JMX ) - это технология Java, предоставляет инструменты для управления и мониторинга приложений, системных объектов, устройств (например, принтеров ) и сервис-ориентированных сетей. Эти ресурсы представлены объектами, называемыми MBeans (для Managed Bean). В API классы можно динамически загружать и создавать экземпляры. Приложения для управления и мониторинга можно разрабатывать и разрабатывать с использованием.
JSR 003 процесса Java Community Process определяет JMX 1.0, 1.1 и 1.2. JMX 2.0 разрабатывался под JSR 255, но впоследствии этот JSR был отозван. JMX Remote API 1.0 для удаленного управления и мониторинга указан в JSR 160. Расширение JMX Remote API для веб-служб разрабатывалось под JSR 262.
На раннем этапе было принято J2EE, JMX был частью J2SE, начиная с версии 5.0. «JMX» является товарным знаком Oracle Corporation.
JMX использует трехуровневую архитектуру:
Приложения могут быть общими консолями (например, JConsole и MC4J ) или приложениями для домена (мониторинг). Внешние приложения могут взаимодействовать с MBean-компонентами посредством использования соединителей JMX и адаптеров протокола. Коннекторы служат для соединения агента с удаленным управляющим приложением с поддержкой JMX. Эта форма связи включает соединитель в JMX-агенте и клиент-соединитель в управляющем приложении.
Адаптеры протокола обеспечивают представление управления агентом JMX через заданный протокол. Управляющие приложения, которые подключаются к адаптеру протокола, обычно относятся к данному протоколу.
A управляемые компоненты - иногда называемые просто MBean - это тип JavaBean, созданный с помощью внедрения зависимостей. Управляемые компоненты особенно используются в технологии Java Management Extensions, но в Java EE 6 спецификация предоставляет более подробное значение управляемого компонента.
MBean представляет ресурс, работающий на виртуальной машине Java, такой как приложение или техническая служба Java EE (монитор транзакций, драйвер JDBC и т. Д.). Их можно использовать для сбора статистики по таким проблемам, как производительность, использование ресурсов или проблемы (вытягивание); для получения и настройки конфигурации или свойств приложения (push / pull); и уведомление о событиях, таких как сбои или изменения состояния (push).
Java EE 6 предусматривает, что управляемый компонент - это компонент, который реализуется классом Java, который называется его классом компонента. Java-класс верхнего уровня является управляемым компонентом, если он определен как управляемый компонент в любой другой спецификации технологии Java EE (например, в спецификации технологии JavaServer Faces ) или если он соответствует всем следующие условия:
@Decorator
.ejb-jar.xml
.Для определения управляемого bean-компонента не требуется специального объявления, такого как аннотация.
MBean может уведомить MBeanServer о своих внутренних изменениях (для атрибутов), реализовав javax.management.NotificationEmitter
. Приложение, заинтересованное в изменениях MBean, регистрирует слушателя (javax.management.NotificationListener
) на MBeanServer. Обратите внимание, что JMX не гарантирует, что слушатели получат все уведомления.
Есть два основных типа MBean:
javax.management.DynamicMBean
, который обеспечивает способ перечисления атрибутов и операций, а также получения и установки атрибутаДополнительные типы: Open MBeans, Model MBeans и Monitor MBean. Открытые MBean-компоненты - это динамические MBean-компоненты, которые полагаются на основные типы данных. Они не требуют пояснений и более удобны для пользователя. Модельные MBean-компоненты - это динамические MBean-компоненты, которые можно настроить во время выполнения. Также предоставляется общий класс MBean для динамической настройки ресурсов во время выполнения программы.
MXBean (Platform MBean) - это особый тип MBean, который объединяет подсистемы виртуальной машины Java, такие как сборка мусора, JIT-компиляция, пулы памяти, многопоточность и т. Д.
MLet (апплет управления) - это служебный MBean-компонент для загрузки, создания и регистрации MBean-компонентов. в MBeanServer из описания XML. Формат дескриптора XML:
[arglist]
JMX поддерживается на разных уровнях разными поставщиками: