Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Java Management Extensions ( JMX ) - это технология Java, которая предоставляет инструменты для управления и мониторинга приложений , системных объектов, устройств (например, принтеров ) и сервисно-ориентированных сетей. Эти ресурсы представлены объектами, называемыми MBeans (для Managed Bean ). В API классы можно динамически загружать и создавать экземпляры. Приложения для управления и мониторинга можно разрабатывать и разрабатывать с помощью Java Dynamic Management Kit. [1]

JSR 003 [2] процесса сообщества Java определяет 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]

Ранее принятый сообществом J2EE , JMX является частью J2SE, начиная с версии 5.0. «JMX» является товарным знаком Oracle Corporation .

Архитектура [ править ]

JMX архитектура

JMX использует трехуровневую архитектуру:

  1. Уровень зонда, также называемый уровнем инструментария, содержит зонды (так называемые MBeans ), инструменты для анализа ресурсов.
  2. Уровень агента , или MBeanServer - ядро ​​JMX. Он действует как посредник между MBean и приложениями.
  3. Уровень удаленного управления позволяет удаленным приложениям получать доступ к MBeanServer через соединители и адаптеры. Коннектор обеспечивает полный удаленный доступ к API MBeanServer с использованием различных средств связи ( RMI , IIOP , JMS , WS- * …), в то время как адаптер адаптирует API к другому протоколу ( SNMP ,…) или к веб-интерфейсу ( HTML / HTTP). , WML / HTTP ,…).

Приложения могут быть общими консолями (такими как JConsole [6] и MC4J [7] ) или приложениями для конкретных областей (мониторинг). Внешние приложения могут взаимодействовать с MBean-компонентами посредством использования соединителей JMX и адаптеров протокола. Коннекторы служат для соединения агента с удаленным управляющим приложением с поддержкой JMX. Эта форма связи включает коннектор в JMX-агенте и клиент коннектора в управляющем приложении.

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

Управляемые компоненты [ править ]

Управляемый компонент - иногда просто называют 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 ), или если он соответствует всем следующим условиям:

  1. Это не нестатический внутренний класс.
  2. Это конкретный класс или аннотированный @Decorator.
  3. Он не аннотируется аннотацией, определяющей компонент EJB, и не объявляется как класс EJB-компонента в ejb-jar.xml.

Никакого специального объявления, такого как аннотация, для определения управляемого bean-компонента не требуется.

MBean может уведомлять MBeanServer о своих внутренних изменениях (для атрибутов), реализуя javax.management.NotificationEmitter. Приложение, заинтересованное в изменениях MBean, регистрирует слушателя ( javax.management.NotificationListener) на MBeanServer. Обратите внимание, что JMX не гарантирует, что слушатели получат все уведомления. [8]

Типы [ править ]

Есть два основных типа MBean:

  • Стандартные MBean-компоненты реализуют бизнес-интерфейс, содержащий средства задания и получения для атрибутов и операций (т. Е. Методов).
  • Динамические MBean-компоненты реализуют javax.management.DynamicMBeanинтерфейс, который обеспечивает способ перечисления атрибутов и операций, а также получения и установки значений атрибутов.

Дополнительные типы - это открытые компоненты MBean , MBean- компоненты модели и MBean- компоненты монитора . Открытые MBean- компоненты - это динамические MBean- компоненты, которые полагаются на основные типы данных. Они не требуют пояснений и более удобны для пользователя. Модельные MBean- компоненты - это динамические MBean- компоненты, которые можно настроить во время выполнения. Также предоставляется общий класс MBean для динамической настройки ресурсов во время выполнения программы.

MXBean ( Platform MBean ) - это особый тип MBean, который объединяет подсистемы виртуальной машины Java, такие как сборка мусора , JIT-компиляция , пулы памяти , многопоточность и т. Д.

MLet ( апплет управления ) - это служебный компонент MBean для загрузки, создания экземпляра и регистрации компонентов MBean в MBeanServer из описания XML . Формат дескриптора XML: [9]

<КОД MLET = '' класс '' | ОБЪЕКТ = '' серфайл '' АРХИВ = '' archiveList '' [CODEBASE = '' codebaseURL ''] [NAME = '' objectName ''] [VERSION = '' version ''] > [список] </MLET>

Поддержка [ править ]

JMX поддерживается на разных уровнях разными поставщиками:

  • JMX поддерживается серверами приложений Java, такими как OpenCloud Rhino Application Server [1] , JBoss , JOnAS , WebSphere Application Server , WebLogic , SAP NetWeaver Application Server , Oracle Application Server 10g и Sun Java System Application Server .
  • JMX поддерживается сервером каталогов UnboundID, прокси-сервером каталогов и сервером синхронизации. [10]
  • Инструменты управления системами , поддерживающие протокол, включают Empirix OneSight, GroundWork Monitor, Hyperic , HP OpenView , IBM Director , ITRS Geneos, Nimsoft NMS , OpenNMS , [11] Zabbix , Zenoss Core и Zyrion, SolarWinds , Uptime Infrastructure Monitor и LogicMonitor. [12]
  • JMX также поддерживается контейнерами сервлетов, такими как Apache Tomcat . [13] & Jetty (веб-сервер)
  • MX4J [2] - это JMX с открытым исходным кодом для корпоративных вычислений.
  • jManage [3] - это консоль JMX корпоративного уровня с открытым исходным кодом с веб-интерфейсами и интерфейсами командной строки.
  • MC4J [4] - это визуальная консоль с открытым исходным кодом для подключения к серверам, поддерживающим JMX.
  • snmpAdaptor4j [5] - это открытый исходный код, обеспечивающий простой доступ к MBeans по протоколу SNMP.
  • jvmtop - это легкий инструмент мониторинга JMX с открытым исходным кодом для командной строки.
  • Prometheus может принимать данные JMX через экспортер JMX [14], который предоставляет метрики в формате Prometheus.

См. Также [ править ]

  • Джини
  • Управление сетью
  • Простой протокол управления сетью

Ссылки [ править ]

  1. ^ «Обзор Java Dynamic Management Kit» . docs.oracle.com . Проверено 12 января 2021 года .
  2. ^ JSR 003: Спецификация расширений управления JavaTM (JMXTM)
  3. ^ JSR 255: Спецификация расширений управления JavaTM (JMXTM), версия 2.0
  4. ^ JSR 160: Удаленный API расширений управления JavaTM (JMX)
  5. ^ JSR 262: Соединитель веб-служб для агентов Java Management Extensions (JMX)
  6. ^ Использование JConsole для мониторинга приложений
  7. ^ «Проект MC4J создает программное обеспечение управления для серверов приложений J2EE и других приложений Java» . Архивировано из оригинала на 2007-03-23 . Проверено 27 августа 2006 .
  8. ^ Расширения управления Java (JMX) - Лучшие практики
  9. ^ «MLet (Java 2 Platform SE 5.0)» . Sun Microsystems . Проверено 22 июня 2008 .
  10. ^ UnboundID Corp. Архивировано 06 марта 2012 г. на Wayback Machine
  11. ^ http://www.opennms.org/wiki/Category:JMX
  12. ^ "Сбор данных JMX" . www.logicmonitor.com . Проверено 20 ноября 2020 .
  13. ^ Apache Tomcat 6.0: мониторинг и управление Tomcat (руководство по Tomcat)
  14. ^ https://github.com/prometheus/jmx_exporter

Дальнейшее чтение [ править ]

Статьи [ править ]

  • « Включение компонентных архитектур с помощью JMX », Марк Флери и Юха Линдфорс
  • " Представляем новый API управления J2EE, не зависящий от поставщиков ", автор Андреас Шефер
  • "Java в сфере управления" Макс Гофф 1999 г.
    1. 20 октября
    2. 20 ноя
    3. 29 декабря
  • JMX / JBoss - The микроядро дизайн
  • « Управляйте своими приложениями с поддержкой JMX с помощью jManage 1.0 », Ракеш Калра, 16 января 2006 г.
  • " Управление системами J2EE с помощью JMX и JUnit " Лукас МакГрегор
  • Sun Java: обзор мониторинга и управления
  • Учебное пособие по Java EE 6: об управляемых bean-компонентах

Книги [ править ]

  • Бенджамин Дж. Саллинс, Марк Б. Уиппл: JMX в действии: вы также получите и запустите свое первое приложение JMX , Manning Publications Co. 2002, ISBN 1-930110-56-1 
  • Дж. Стивен Перри : расширения управления Java , O'Reilly, ISBN 0-596-00245-9 
  • Джефф Хэнсон : Подключение клиентов и серверов JMX: понимание расширений управления Java , APress LP, ISBN 1-59059-101-1 
  • Марк Флери , Юха Линдфорс : JMX: управление J2EE с помощью расширений управления Java , Sams Publishing, ISBN 0-672-32288-9 

Внешние ссылки [ править ]

  • JMX 1.4 (JMX 1.4, часть Java 6)
  • JMX на JBoss.com
  • JMX на www.oracle.com
  • JSR 255 (JMX 2.0)
  • JSR 3 (JMX 1.0, 1.1 и 1.2)