Java Management Extensions ( JMX ) — это технология Java , которая предоставляет инструменты для управления и мониторинга приложений , системных объектов, устройств (например, принтеров ) и сервисно-ориентированных сетей. Эти ресурсы представлены объектами, называемыми MBeans ( Managed Bean ). В API классы могут быть динамически загружены и инстанцированы. Управление и мониторинг приложений могут быть спроектированы и разработаны с использованием Java Dynamic Management Kit. [1]
JSR 003 [2] Java Community Process определил JMX 1.0, 1.1 и 1.2. JMX 2.0 разрабатывался в соответствии с JSR 255, но впоследствии этот JSR был отозван. [3] JMX Remote API 1.0 для удаленного управления и мониторинга определен в JSR 160. [4] Расширение JMX Remote API для веб-сервисов разрабатывалось в соответствии с JSR 262. [5]
JMX, принятый сообществом J2EE на ранней стадии , является частью J2SE с версии 5.0. «JMX» является товарным знаком Oracle Corporation .
JMX использует трехуровневую архитектуру:
Приложения могут быть общими консолями (такими как JConsole [6] и MC4J [7] ) или приложениями, специфичными для домена (мониторинга). Внешние приложения могут взаимодействовать с MBeans с помощью коннекторов JMX и адаптеров протоколов. Коннекторы служат для соединения агента с удаленным приложением управления с поддержкой JMX. Эта форма связи включает коннектор в агенте JMX и клиент коннектора в приложении управления.
Java Platform, Standard Edition поставляется с одним коннектором, коннектором RMI , который использует протокол удаленных методов Java, являющийся частью API вызова удаленных методов Java . Это коннектор, который используют большинство приложений управления.
Адаптеры протоколов обеспечивают представление управления агентом JMX через заданный протокол. Приложения управления, которые подключаются к адаптеру протоколов, обычно специфичны для заданного протокола.
Управляемый компонент ( иногда его просто называют MBean ) — это тип JavaBean , созданный с помощью внедрения зависимостей . Управляемые компоненты (Managed Beans) в частности используются в технологии Java Management Extensions, но с Java EE 6 спецификация предоставляет более подробное значение управляемого компонента.
MBean представляет ресурс, работающий в виртуальной машине Java , например, приложение или технический сервис Java EE (транзакционный монитор, драйвер JDBC и т. д.). Их можно использовать для сбора статистики по таким вопросам, как производительность, использование ресурсов или проблемы (pull); для получения и установки конфигураций или свойств приложения (push/pull); и уведомления о событиях, таких как сбои или изменения состояния (push).
Java EE 6 предусматривает, что управляемый компонент — это компонент, который реализуется классом Java, который называется его классом компонента. Класс Java верхнего уровня является управляемым компонентом, если он определен как управляемый компонент любой другой спецификацией технологии Java EE (например, спецификацией технологии JavaServer Faces ) или если он соответствует всем следующим условиям:
@Decorator
.ejb-jar.xml
.Для определения управляемого компонента не требуется специального объявления, например аннотации.
MBean может уведомлять MBeanServer о своих внутренних изменениях (для атрибутов), реализуя javax.management.NotificationEmitter
. Приложение, заинтересованное в изменениях MBean, регистрирует слушателя ( javax.management.NotificationListener
) на MBeanServer. Обратите внимание, что JMX не гарантирует, что слушатели получат все уведомления. [8]
Существует два основных типа MBean:
javax.management.DynamicMBean
интерфейс, который предоставляет способ составления списка атрибутов и операций, а также получения и установки значений атрибутов.Дополнительные типы — Open MBeans , Model MBeans и Monitor MBeans . Open MBeans — это динамические MBeans, которые опираются на базовые типы данных. Они не требуют пояснений и более удобны для пользователя. Model MBeans — это динамические MBeans, которые можно настраивать во время выполнения. Также предоставляется универсальный класс MBean для динамической настройки ресурсов во время выполнения программы.
MXBean ( Platform MBean ) — это особый тип MBean, который реализует подсистемы виртуальной машины Java , такие как сборка мусора , JIT-компиляция , пулы памяти , многопоточность и т. д.
MLet ( Management applet ) — это утилита MBean для загрузки, создания экземпляра и регистрации MBeans в MBeanServer из XML- описания. Формат XML-дескриптора: [9]
<КОД MLET = ''класс'' | ОБЪЕКТ = ''serfile'' АРХИВ = ''СписокАрхива'' [CODEBASE = ''URL_codebase''] [ИМЯ = ''ИмяОбъекта''] [ВЕРСИЯ = ''версия''] > [список арг] </МЛЕТ>
JMX поддерживается на разных уровнях разными поставщиками: