Введение в JMX и MBeans в Java

Java Management Extensions (JMX) — это технология, входящая в J2SE начиная с J2SE 5.0. JMX предназначен для контроля и управления приложениями, системными объектами, устройствами (например, принтерами) и компьютерными сетями. Она позволяет управлять внутренним состоянием так называемых MBean-ов, которые по сути являются классами Java, предоставляющими доступ к части своих полей и методов извне.

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

Стандартный MBean определяется с помощью интерфейса с именем <имя>MBean и его реализацией <имя> соответственно. Интерфейс определяет все экспортируемые наружу методы и атрибуты MBean-а. Атрибуты должны следовать правилам именования getter-ов и setter-ов.

Напишем простой интерфейс для MBean-а:

В этом интерфейсе мы просто указываем, что наш MBean будет экспортировать поле myName  (только для чтения) и поле someValue, а также метод writeToConsole и метод concat.

Реализуем этот интерфейс с помощью класса My (название нужно выбирать в соответствии с тем, что было написано до MBean в названии интерфейса):

Интерфейс MyMBean и его реализация My вместе и есть то, что мы называем MBean.

Теперь нам нужно добавить наш MBean в MBeanServer, который является частью так называемого JMX agent.

Здесь стоит обратить внимание на класс ObjectName, с помощью которого мы задаём имя MBean-а. Это имя мы будем видеть JConsole. Имя должно быть задано в соответствии с правилом:

домен:ключ=значение, ключ=значение…

В качестве домена принято использовать имя пакета.

Запустите на исполнение класс App.

Запустите JConsole. Он является частью J2SE и располагается в подкаталоге “bin” каталога, в котором установлена Java. Например, для Windows это может быть что-то вроде C:\Program Files\Java\jdk1.8.0_91.

new jmx connection

Выберите наше запущенное приложение и кликните по кнопке “Connect”.

Перейдите во вкладку “MBeans” и раскройте в левом дереве ветку соответствующую нашему MBean-у:

MBeans JConsole

Далее:

  1. Выберите в дереве узел “someValue” и измените значение в столбце “Value” в таблице “Attribute value”.
  2. Выберите в дереве узел “concat”, введите значения и кликните по кнопке “concat”. В диалоговом окне должен отобразиться результат вызова метода.
  3. Выберите в дереве узел “writeToValue”, введите строку и кликните по кнопке “writeToValue”. В консоли запущенного приложения “App” должно отобразиться введённое сообщение.

Исходники на GitHub.

Скачать ZIP-архив с исходниками

Один комментарий к “Введение в JMX и MBeans в Java”

  1. возможно, понадобится добавить в параметры запуска ip своей локальной машины
    -Djava.rmi.server.hostname=127.0.0.1
    иначе jconsole отдает Connection Failed: Retry

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *