Рубрики
Без рубрики

Базовое введение в JMX

Узнайте, как создать MBean и управлять им с помощью быстрого введения в JMX (расширения управления Java).

Автор оригинала: baeldung.

1. введение

Фреймворк Java Management Extensions (JMX) был представлен в Java 1.5 и получил широкое признание в сообществе разработчиков Java с момента его создания.

Он обеспечивает легко настраиваемую, масштабируемую, надежную и более или менее дружественную инфраструктуру для управления приложениями Java как локально, так и удаленно. Фреймворк вводит концепцию средств для управления приложениями в режиме реального времени.

Эта статья представляет собой пошаговое руководство для начинающих по созданию и настройке базового MBean и управлению им с помощью JConsole.

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

Архитектура JMX использует трехуровневый подход:

  1. Уровень инструментирования: MBeans, зарегистрированные в агенте JMX, через который управляются ресурсы
  2. Уровень агента JMX: основной компонент (MBeanServer), который поддерживает реестр управляемых компонентов и предоставляет интерфейс для доступа к ним
  3. Уровень удаленного управления: обычно инструмент на стороне клиента, такой как JConsole

3. Создание класса MBean

При создании средств существует определенный шаблон проектирования, которому мы должны соответствовать. Класс model 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 переопределяет метод play Football() родительского интерфейса. Кроме того, класс имеет переменную-член PlayerName и геттер/сеттер для него.

Обратите внимание, что геттер/сеттер также объявлены в родительском интерфейсе.

4. Инструментирование С помощью агента JMX

Агенты JMX-это объекты, работающие локально или удаленно, которые предоставляют доступ к управлению зарегистрированными в них MBEANS.

Давайте воспользуемся PlatformMbeanServer – основным компонентом агента JMX и зарегистрируем с его помощью Game MBean.

Мы будем использовать другую сущность – ObjectNam e – для регистрации экземпляра класса Game на сервере PlatformMbeanServer ; это строка, состоящая из двух частей:

  • домен : может быть произвольной строкой, но в соответствии с соглашениями об именовании MBean он должен иметь имя пакета Java (позволяет избежать конфликтов имен)
  • ключ: список пар ” ключ=значение “, разделенных запятой

В этом примере мы будем использовать: “com.baledung.tutorial:type=basic,name=game”.

Мы получим MBeanServer из заводского класса java.lang.management.Управление фабрикой.

Затем мы зарегистрируем модель MBean, используя созданное Имя объекта:

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. В разделе “Игра” будет две строки, по одной для атрибутов и операций

Вот краткий обзор консольной части процесса:

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

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

  • Атрибуты могут быть прочитаны или записаны
  • Методы могут быть вызваны, и им могут быть предоставлены аргументы или возвращенные из них значения

Давайте посмотрим, что это означает для Игры на практике:

  • атрибут : введите новое значение для атрибута Имя игрока – например, “Месси” и нажмите кнопку Обновить

В консоли Eclipse появится следующий журнал:

Установите значение PlayerName в значение Messi

  • операции : введите значение для строкового аргумента метода playFootBall() – например, “Барселона” и нажмите на кнопку метода. Появится окно с предупреждением об успешном вызове

В консоли eclipse появится следующий журнал:

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

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

В этом уроке были затронуты основы настройки приложения с поддержкой JMX с помощью MBeans. Кроме того, в нем говорилось об использовании типичного клиентского инструмента, такого как JConsole, для управления инструментальным MBean.

Область применения технологии JMX очень широка по охвату и охвату. Этот учебник можно считать шагом новичка к этому.

Исходный код этого учебника можно найти на Github .