Иногда требуется предоставить администратору системы возможность просматривать и изменять состояние некоторого управляемого бина во время выполнения. В этом случае рекомендуется создать JMX-бин - программный компонент, имеющий JMX-интерфейс. Такой бин, как правило, делегирует вызовы управляемому бину, содержащему кэш, конфигурационные данные или статистику, к которым нужно обеспечить доступ через JMX.
Как видно из диаграммы, JMX-бин состоит из интерфейса и класса реализации. Класс должен представлять собой управляемый бин, то есть иметь аннотацию @ManagedBean
и уникальное имя. Интерфейс JMX-бина специальным образом регистрируется в spring.xml для создания в текущей JVM собственно JMX-интерфейса.
Вызовы всех методов интерфейса JMX-бина перехватываются с помощью Spring AOP классом−интерцептором MBeanInterceptor
, который обеспечивает установку правильного ClassLoader
в контексте потока выполнения, и журналирование необработанных исключений.
Интерфейс JMX-бина обязательно должен иметь имя вида {имя_класса}MBean
.
С JMX-интерфейсом можно работать из внешних инструментов, таких как jconsole
или jvisualvm
. Кроме того, в состав блока Web Client платформы входит JMX консоль, предоставляющая базовые средства просмотра состояния и вызова методов JMX-бинов.