Расширения управления Java
Java Management Extensions ( JMX ) — это технология Java , предоставляющая инструменты для управления и мониторинга приложений , системных объектов, устройств (таких как принтеры ) и сервис-ориентированных сетей. Эти ресурсы представлены объектами, называемыми MBeans (для Managed Bean ). В API классы можно динамически загружать и создавать экземпляры. Приложения для управления и мониторинга можно проектировать и разрабатывать с использованием Java Dynamic Management Kit. [1]
ДЖСР 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 .
Архитектура
[ редактировать ]
JMX использует трехуровневую архитектуру:
- Уровень зондов , также называемый уровнем инструментирования , содержит зонды (называемые MBeans ), инструментирующие ресурсы.
- Уровень агента или MBeanServer — ядро JMX. Он действует как посредник между MBean и приложениями.
- Уровень удаленного управления позволяет удаленным приложениям получать доступ к MBeanServer через разъемы и адаптеры. Коннектор обеспечивает полный удаленный доступ к API MBeanServer с использованием различных средств связи ( RMI , IIOP , JMS , WS-* …), в то время как адаптер адаптирует API к другому протоколу ( SNMP ,…) или к веб-интерфейсу ( HTML / HTTP). , WML / HTTP , …).
Приложения могут представлять собой общие консоли (например, JConsole [6] и MC4J [7] ) или специфичные для предметной области (мониторинговые) приложения. Внешние приложения могут взаимодействовать с MBeans посредством использования соединителей JMX и адаптеров протоколов. Коннекторы служат для подключения агента к удаленному приложению управления с поддержкой JMX. Эта форма связи предполагает использование соединителя в агенте JMX и клиента соединителя в приложении управления.
Платформа Java Standard Edition поставляется с одним соединителем, соединителем RMI , который использует протокол удаленного метода Java, который является частью API удаленного вызова методов Java . Это разъем, который используется большинством приложений управления.
Адаптеры протоколов обеспечивают представление управления агентом JMX через заданный протокол. Приложения управления, подключающиеся к адаптеру протокола, обычно специфичны для данного протокола.
Управляемые компоненты
[ редактировать ], Управляемый компонент иногда называемый просто MBean , представляет собой тип JavaBean , созданный с помощью внедрения зависимостей . Управляемые компоненты особенно используются в технологии 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, и не объявлен как класс компонента EJB в
ejb-jar.xml
.
Для определения управляемого компонента не требуется никакого специального объявления, такого как аннотация.
MBean может уведомлять MBeanServer о своих внутренних изменениях (для атрибутов), реализуя javax.management.NotificationEmitter
. Приложение, заинтересованное в изменениях MBean, регистрирует прослушиватель ( javax.management.NotificationListener
) на MBeanServer. Обратите внимание, что JMX не гарантирует, что слушатели получат все уведомления. [8]
Типы
[ редактировать ]Существует два основных типа MBean:
- Стандартные MBean реализуют бизнес-интерфейс, содержащий методы установки и получения атрибутов и операций (т. е. методов).
- Динамические MBean реализуют
javax.management.DynamicMBean
интерфейс, который предоставляет возможность составить список атрибутов и операций, а также получить и установить значения атрибутов.
Дополнительными типами являются Open MBeans , Model MBeans и Monitor MBeans . Открытые MBean — это динамические MBean, основанные на базовых типах данных. Они понятны и более удобны для пользователя. Модельные MBeans — это динамические MBeans, которые можно настроить во время выполнения. Также предусмотрен общий класс MBean для динамической настройки ресурсов во время выполнения программы.
MXBean ( Platform MBean ) — это особый тип MBean, который реализует подсистемы виртуальных машин Java , такие как сбор мусора , JIT-компиляция , пулы памяти , многопоточность и т. д.
MLet ( апплет управления ) — это утилита MBean для загрузки, создания экземпляров и регистрации MBeans в MBeanServer из XML- описания. Формат XML-дескриптора: [9]
<MLET CODE = ''class'' | OBJECT = ''serfile'' ARCHIVE = ''archiveList'' [CODEBASE = ''codebaseURL''] [NAME = ''objectName''] [VERSION = ''version''] > [arglist] </MLET>
Поддерживать
[ редактировать ]JMX поддерживается на разных уровнях разными поставщиками:
- JMX поддерживается серверами приложений Java , такими как сервер приложений OpenCloud Rhino [1] , JBoss , JOnAS, сервер приложений WebSphere , WebLogic , сервер приложений SAP NetWeaver , сервер приложений Oracle 10g и сервер приложений Sun Java System .
- 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] & Джетти (веб-сервер)
- MX4J [2] — это JMX с открытым исходным кодом для корпоративных вычислений.
- jManage [3]. Архивировано 3 августа 2020 г. на Wayback Machine. Это консоль JMX корпоративного уровня с открытым исходным кодом, веб-интерфейсом и интерфейсом командной строки.
- MC4J [4] — визуальная консоль с открытым исходным кодом для подключения к серверам, поддерживающим JMX.
- snmpAdaptor4j [5] — это открытый исходный код, обеспечивающий простой доступ к MBeans через протокол SNMP.
- jvmtop — это легкий инструмент мониторинга JMX с открытым исходным кодом для командной строки.
- Prometheus может принимать данные JMX через экспортер JMX. [14] который предоставляет метрики в формате Prometheus.
- Jolokia — это приложение j2ee, которое предоставляет доступ к JMX через HTTP.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Обзор пакета динамического управления Java» . docs.oracle.com . Проверено 12 января 2021 г.
- ^ JSR 003: Спецификация расширений управления JavaTM (JMXTM)
- ^ JSR 255: Спецификация расширений управления JavaTM (JMXTM), версия 2.0
- ^ JSR 160: Удаленный API расширений управления JavaTM (JMX)
- ^ JSR 262: Соединитель веб-служб для агентов Java Management Extensions (JMX)
- ^ Использование JConsole для мониторинга приложений
- ^ «Проект MC4J создает программное обеспечение для управления серверами приложений J2EE и другими приложениями Java» . Архивировано из оригинала 23 марта 2007 г. Проверено 27 августа 2006 г.
- ^ Расширения управления Java (JMX) - Лучшие практики
- ^ «MLet (платформа Java 2 SE 5.0)» . Сан Микросистемс . Проверено 22 июня 2008 г.
- ^ UnboundID Corp.. Архивировано 6 марта 2012 г. в Wayback Machine.
- ^ "Дом" .
- ^ «Сбор данных JMX» . www.logicmonitor.com . Проверено 20 ноября 2020 г.
- ^ Apache Tomcat 6.0: Мониторинг и управление Tomcat (руководство по Tomcat)
- ^ «Экспортер JMX» . Гитхаб . 14 февраля 2022 г.
Дальнейшее чтение
[ редактировать ]Статьи
[ редактировать ]- « Возможность создания компонентных архитектур с помощью JMX », Марк Флёри и Юха Линдфорс.
- « Представляем новый API-интерфейс управления J2EE, независимый от поставщиков », Андреас Шефер
- «Java в сфере управления», Макс Гофф, 1999 г.
- JMX/JBoss – микроядра дизайн
- « Управляйте приложениями с поддержкой JMX с помощью jManage 1.0 », Ракеш Калра, 16 января 2006 г.
- « Управление системами J2EE с помощью JMX и JUnit. Архивировано 26 мая 2008 г. в Wayback Machine », Лукас МакГрегор.
- Обзор Sun Java по мониторингу и управлению
- Учебное пособие по Java EE 6: об управляемых компонентах
Книги
[ редактировать ]- Бенджамин Дж. Саллинз, Марк Б. Уиппл: JMX в действии: вы также запустите и запустите свое первое приложение JMX , Manning Publications Co., 2002 г., ISBN 1-930110-56-1
- Дж. Стивен Перри : Расширения управления Java , О'Рейли, 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)