Spring Boot и JMX

В прошлых статьях я уже рассказал о том, что такое MBean, и что такое MXBean. Настало время применить полученные знания с современными технологиями.

Для начала создадим новый проект Spring Boot с помощью Spring Initializr. В поле “Group” введём ru.urvanov.javaexamples. В поле “Artifact” введём springbootjmx. Версию Spring Boot выбираем 2.0.1. Кликаем по кнопке “Generate Project”. Сохраняем его куда-нибудь.

Откроем скачанную заготовку в IDE (Eclipse, IDEA или NetBeans). Первым делом открываем “SpringbootjmxApplication.java” и прописываем Thread.sleep, чтобы приложение НЕ завершалось сразу после старта:

Создадим пакет ru.urvanov.javaexamples.springbootjmx.mbeans и в нём создадим “SimpleMBean.java”:

Класс Monster:

Обратите внимание, что мы создали самый обычный бин Spring Framework-а и аннотировали его дополнительно аннотацией @ManagedResource. Аннотация @ManagedResource позволяет регистрировать любые бины Spring Framework  в качестве MBean-ов. С помощью аннотаций @ManagedAttribute, @ManagedOperation мы помечаем экспортируемые MBean-ом атрибуты и операции соответственно.

Запустим наше приложение и подключимся к нему через JConsole. Как подключаться к приложению с помощью JConsole я уже описывал в статье «Введение в JMX и MBeans  в Java».

Обратите внимание, что мы не можем посмотреть значение атрибута monster, так как он имеет тип Monster, который не доступен из classpath самого JConsole.

Spring Boot JMX MBean monster unavailable

Теперь создадим MXBean. Для этого создадим интерфейс MyMXBean:

Теперь создадим класс My, реализующий интерфейс MyMXBean:

Теперь запустим приложение SpringbootjmxApplication и подключимся к нему через JConsole. Обратите внимание, что мы можем смотреть содержимое My.Monster, так как оно теперь автоматически конвертируется в так называемые Open Types.

Spring Boot JMX MXBean Monster

Вот и всё на сегодня. May the 4th be with you:). Рекомендую изредка почитывать учебник и нововведения.

На последок осталось создать только файл “README.md” с корректным синтаксисом Markdown:

Теперь точно всё. Ссылки на исходные коды:

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

Скачать исходники ZIP-архив 54 Кбайт

 

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

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