Основно въведение в JMX

1. Въведение

Рамката Java Management Extensions (JMX) е въведена в Java 1.5 и е намерила широко признание в общността на разработчиците на Java от самото си създаване.

Той осигурява лесно конфигурируема, мащабируема, надеждна и повече или по-малко приятелска инфраструктура за управление на Java приложението локално или отдалечено. Рамката въвежда концепцията за MBeans за управление на приложения в реално време.

Тази статия е ръководство стъпка по стъпка за начинаещи за създаване и настройка на основен MBean и управление чрез JConsole.

2. Архитектура на JMX

JMX архитектурата следва трислоен подход:

  1. Инструментален слой: MBeans, регистриран с агента JMX, чрез който се управляват ресурси
  2. JMX агент слой: основният компонент (MbeanServer), който поддържа регистър на управлявани MBeans и осигурява интерфейс за достъп до тях
  3. Слой за отдалечено управление: обикновено инструмент от страна на клиента като JConsole

3. Създаване на MBean клас

Докато създаваме MBeans, има определен модел на проектиране, на който трябва да се съобразим. Класът на модел MBean ТРЯБВА да реализира интерфейс със следното име: „име на клас на модел“ плюс MBean .

Така че нека дефинираме нашия MBean интерфейс и класа, който го изпълнява:

public interface GameMBean { public void playFootball(String clubName); public String getPlayerName(); public void setPlayerName(String playerName); } public class Game implements GameMBean { private String playerName; @Override public void playFootball(String clubName) { System.out.println( this.playerName + " playing football for " + clubName); } @Override public String getPlayerName() { System.out.println("Return playerName " + this.playerName); return playerName; } @Override public void setPlayerName(String playerName) { System.out.println("Set playerName to value " + playerName); this.playerName = playerName; } }

Класът Game отменя метод playFootball () на родителския интерфейс. Отделно от това, класът има член променлива playerName и getter / setter за него.

Имайте предвид, че getter / setter също са декларирани в родителския интерфейс.

4. Инструментиране с JMX агент

JMX агентите са обектите, изпълняващи се локално или отдалечено, които предоставят достъп за управление на MBeans, регистрирани при тях.

Нека използваме PlatformMbeanServer - основният компонент на JMX агент и да регистрираме Game MBean с него.

Ще използваме друг обект - ObjectNam e -, за да регистрираме екземпляра на класа Игра с PlatformMbeanServer ; това е низ, състоящ се от две части:

  • домейн : може да бъде произволен низ, но според конвенциите за именуване MBean той трябва да има име на Java пакет (избягва конфликти при именуване)
  • ключ: списък от двойки „ ключ = стойност “, разделени със запетая

В този пример ще използваме: „com.baledung.tutorial: type = basic, name = game“.

Ще получим MBeanServer от фабричния клас java.lang.management.ManagementFactory.

След това ще регистрираме модела MBean, използвайки създаденото ObjectName:

try { ObjectName objectName = new ObjectName("com.baeldung.tutorial:type=basic,name=game"); MBeanServer server = ManagementFactory.getPlatformMBeanServer(); server.registerMBean(new Game(), objectName); } catch (MalformedObjectNameException | InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) { // handle exceptions }

И накрая, само за да можем да го тестваме - ще добавим цикъл while, за да предотвратим прекратяването на приложението, преди да имаме достъп до MBean чрез JConsole:

while (true) { }

5. Достъп до MBean

5.1. Свързване от страна на клиента

  1. Стартирайте приложението в Eclipse
  2. Стартирайте Jconsole (намира се в папката bin на инсталационната директория на JDK на вашето устройство)
  3. Връзка -> нова връзка -> изберете локалния Java процес на този урок -> Свързване -> Предупреждение за несигурна SSl връзка -> Продължете с несигурна връзка
  4. След като връзката е установена, щракнете върху горния десен раздел MBeans на екрана Изглед
  5. Списъкът на регистрираните MBeans ще се появи в лявата колона
  6. Щракнете върху com.baeldung.tutorial -> basic -> game
  7. Под играта ще има два реда, по един за атрибути и операции

Ето бърз поглед към JConsole частта от процеса:

5.2. Управление на MBean

Основите на управлението на MBean са прости:

  • Атрибутите могат да се четат или пишат
  • Могат да се извикват методи и да им се предоставят аргументи или да се връщат стойности от тях

Нека да видим какво означава това на практика на Game MBean:

  • атрибут : въведете нова стойност за атрибута playerName - например “Messi” и щракнете върху бутона Refresh

Следният дневник ще се появи в конзолата Eclipse:

Задайте playerName на стойност Messi

  • операции : въведете стойност за аргумента String на метода playFootBall () - например „Барселона“ и кликнете върху бутона на метода. А предупредителен прозорец за успешно извикване ще се появи

Следният дневник ще се появи в конзолата на eclipse:

Меси играе футбол за Барселона

6. Заключение

Този урок засегна основите на настройването на приложение с активиран JMX чрез използване на MBeans. Също така, той обсъди използването на типичен инструмент от страна на клиента като JConsole за управление на инструментирания MBean.

Областта на JMX технологията е много широка по обхват и обхват. Този урок може да се счита за стъпка за начинаещи към това.

Изходният код на този урок може да бъде намерен в Github.