JMX

Java Management Extensions. JMX предназначен для контроля и управления приложениями, системными объектами, устройствами (например, принтерами) и компьютерными сетями.

Она позволяет управлять внутренним состоянием так называемых MBean-ов, которые по сути являются классами Java, предоставляющими доступ к части своих полей и методов извне.

MBean

Стандартный MBean определяется с помощью интерфейса с именем <имя>MBean и его реализацией <имя> соответственно.

Интерфейс определяет все экспортируемые наружу методы и атрибуты MBean-а. Атрибуты должны следовать правилам именования getter-ов и setter-ов.

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

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();

// ObjectName, с помощью которого задаётся имя MBean-а (домен:ключ=значение, ключ=значение…)
// Это имя будет видно JConsole
ObjectName name = new ObjectName("javaexamples.exampl:type=My");

// Теперь после запуска приложения и JConsole можно из-вне вызывать методы переданного MBean
My mbean = new My();
mbs.registerMBean(mbean, name);

MXBean

Это специальный тип MBean, который использует только предопределённое множество типов данных. Это нужно для того, чтобы наш MBean мог использовать любой клиент, даже тот, у которого нет доступа к классам модели нашего MBean-а.