Spec-Zone .ru
спецификации, руководства, описания, API
След: Расширения управления Java (JMX)
Урок: Представление MBeans
Стандартный MBeans
Домашняя страница > Расширения управления Java (JMX) > Представление MBeans

Стандартный MBeans

Этот раздел представляет пример прямого, стандартного MBean.

Стандартный MBean определяется при записи вызванного интерфейса Java SomethingMBean и Java class вызывают Something это реализует тот интерфейс. Каждый метод в интерфейсе определяет или атрибут или работу в MBean. По умолчанию каждый метод определяет работу. Атрибуты и операции являются методами, которые следуют за определенными шаблонами разработки. Стандартный MBean составляется из интерфейса MBean и class. Интерфейс MBean перечисляет методы для всех представленных атрибутов и операций. class реализует этот интерфейс и обеспечивает функциональность инструментованного ресурса.

Следующие разделы исследуют пример стандартного MBean и простого поддерживающего технологию агента JMX (агент JMX), который управляет MBean.

Интерфейс MBean

Пример основного интерфейса MBean, HelloMBean , следует:


package com.example; 
 
public interface HelloMBean { 
 
    public void sayHello(); 
    public int add(int x, int y); 
    
    public String getName(); 
     
    public int getCacheSize(); 
    public void setCacheSize(int size); 
} 

Условно, интерфейс MBean берет имя Java class, который реализует это с суффиксом MBean добавленный. В этом случае интерфейс вызывают HelloMBean. Hello class, который реализует этот интерфейс, описывается в следующем разделе.

Согласно спецификации JMX, интерфейс MBean состоит из именованных и введенных атрибутов, которые читаемы и возможно перезаписываемы, в дополнение к именованным и введенным операциям, которые могут быть вызваны приложениями, которыми управляет MBean. HelloMBean интерфейс объявляет две операции: методы Java add() и sayHello().

HelloMBean объявляет два атрибута: Name строка только для чтения, и CacheSize целое число, которое может быть и считано и записано. Метод get и методы метода set, как объявляют, позволяют управляемое приложение доступу и возможно изменяют значения атрибута. Как определено спецификацией JMX, метод get является любым открытым методом, который не возвращается пусто и чье имя начинается get. Метод get позволяет менеджеру считать значение атрибута, тип которого является типом возвращенного объекта. Метод set является любым открытым методом, который берет единственный параметр и чье имя начинается set. Метод set позволяет менеджеру записать новое значение в атрибуте, тип которого является тем же самым как тем из параметра.

Реализацию этих операций и атрибутов показывают в следующем разделе.

Реализация MBean

Hello class Java, который следует за реализациями HelloMBean Интерфейс MBean:

package com.example; 
 
public class Hello ... 
    implements HelloMBean { 
    public void sayHello() { 
        System.out.println("hello, world"); 
    } 
     
    public int add(int x, int y) { 
        return x + y; 
    } 
     
    public String getName() { 
        return this.name; 
    }  
     
    public int getCacheSize() { 
        return this.cacheSize; 
    } 
     
    public synchronized void setCacheSize(int size) {
        ...
    
        this.cacheSize = size; 
        System.out.println("Cache size now " + this.cacheSize); 
    } 
    ...
     
    private final String name = "Reginald"; 
    private int cacheSize = DEFAULT_CACHE_SIZE; 
    private static final int 
        DEFAULT_CACHE_SIZE = 200; 
}

Прямое Hello class обеспечивает определения операций и атрибутов, которые объявляются HelloMBean. sayHello() и add() операции чрезвычайно просты, но реальные операции могут быть столь же простыми или столь же сложными как необходимый.

Методы, чтобы добраться Name атрибут и добраться и установить CacheSize атрибут также определяется. В этом примере, Name значение атрибута никогда не изменяется. Однако, в реальном сценарии этот атрибут мог бы измениться, поскольку управляемый ресурс работает. Например, атрибут мог бы представить статистику, такую как использование памяти или время работы. Здесь, атрибут является просто именем Reginald.

Вызов setCacheSize метод позволяет Вам измениться CacheSize атрибут от его объявленного значения по умолчанию 200. В реальном сценарии, изменяясь CacheSize атрибут мог потребовать, чтобы другие операции были выполнены, такие как отбрасывание записей или выделение новых записей. Этот пример просто печатает сообщение, чтобы подтвердить, что размер кэша изменился. Однако, более сложные операции могли быть определены вместо простого звонка println().

С Hello MBean и его интерфейс, таким образом определенный, они могут теперь использоваться, чтобы управлять ресурсом, который они представляют, как показано в следующем разделе.

Создание Агента JMX, чтобы Управлять Ресурсом

Как только ресурс был инструментован MBeans, управление тем ресурсом выполняется агентом JMX.

Базовый компонент агента JMX является сервером MBean. Сервер MBean является сервером управляемого объекта, в котором регистрируются MBeans. Агент JMX также включает ряд служб, чтобы управлять MBeans. См. документацию API для MBeanServer интерфейс для деталей реализации сервера MBean.

Main class, который следует, представляет основной агент JMX:

package com.example; 
 
import java.lang.management.*; 
import javax.management.*; 
 
public class Main { 
 
    public static void main(String[] args) 
        throws Exception { 
     
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); 
        ObjectName name = new ObjectName("com.example:type=Hello"); 
        Hello mbean = new Hello(); 
        mbs.registerMBean(mbean, name); 
          
        ...
     
        System.out.println("Waiting forever..."); 
        Thread.sleep(Long.MAX_VALUE); 
    } 
} 

Агент JMX Main начинается, получая сервер MBean, который был создан и инициализирован платформой, вызывая getPlatformMBeanServer() метод java.lang.management.ManagementFactory class. Если никакой сервер MBean уже не был создан платформой, то getPlatformMBeanServer() создает сервер MBean автоматически, вызывая метод JMX MBeanServerFactory.createMBeanServer(). MBeanServer экземпляр, полученный Main называется mbs.

Затем, Main определяет имя объекта для экземпляра MBean, который оно создаст. У каждого JMX MBean должно быть имя объекта. Имя объекта является экземпляром class JMX ObjectName и должен соответствовать синтаксису, определенному спецификацией JMX. А именно, имя объекта должно содержать домен и список ключевых свойств. В имени объекта, определенном Main, домен com.example (пакет, в котором пример MBean содержится). Кроме того, ключевое свойство объявляет, что этот объект имеет тип Hello.

Экземпляр a Hello объект, названный mbean, создается. Hello объект называют mbean тогда регистрируется как MBean в сервере MBean mbs с именем объекта name, передавая объект и имя объекта в звонок в метод JMX MBeanServer.registerMBean().

С Hello MBean, зарегистрированный в сервере MBean, Main просто ожидает операций управления, которые будут выполняться на Hello. В этом примере эти операции управления вызывают sayHello() и add(), и добираясь и устанавливая значения атрибута.

Выполнение Стандартного Примера MBean

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

Чтобы выполнить пример, следуйте за этими шагами:

  1. Сохраните пакет демонстрационных классов API JMX, jmx_examples.zip, к Вашему рабочему каталогу, work_dir.
  2. Разархивируйте пакет демонстрационных классов при использовании следующей команды в окне терминала.
    unzip jmx_examples.zip
    
  3. Скомпилируйте классы Java в качестве примера изнутри work_dir каталог.
    javac com/example/*.java
    
  4. Если Вы выполняете Комплект разработчика для Java (JDK) версия 6, запустите Main приложение со следующей командой.
    java com.example.Main
    

    Если Вы выполните версию JDK, которая является более старой чем версия 6, то Вы должны будете запустить Main приложение со следующей определенной опцией, чтобы представить приложение для контроля и управления.

    java -Dcom.sun.management.jmxremote example.Main
    

    Подтверждение это Main ожидает чего-то, чтобы произойти, выводится на экран.

  5. Запустите JConsole в различном окне терминала на той же самой машине.
    jconsole
    

    Новое диалоговое окно Соединения выводится на экран, представляя список выполнения агентов JMX, с которыми можно соединиться.

  6. В Новом диалоговом окне Соединения выбрать com.example.Main от списка и щелкают по Connect.

    Сводка текущего действия Вашей платформы выводится на экран.

  7. Щелкните по вкладке MBeans.

    Это телевикторины все MBeans, которые в настоящий момент регистрируются в сервере MBean.

  8. В левом фрейме расширьтесь com.example узел в дереве MBean.

    Вы видите пример MBean Hello это создавалось и регистрировалось Main. Если Вы щелкаете Hello, Вы видите его связанные Атрибуты и узлы Операций в дереве MBean.

  9. Разверните узел Атрибутов Hello MBean в дереве MBean.

    Атрибуты MBean, которые были определены Hello class выводится на экран.

  10. Измените значение CacheSize припишите 150.

    В окне терминала, в котором Вы запустили Main, подтверждение этого изменения атрибута сгенерировано.

  11. Разверните узел Операций Hello MBean в дереве MBean.

    Эти две операции, объявленные Hello MBean, sayHello() и add(), видимы.

  12. Вызовите sayHello() работа, щелкая sayHello кнопка.

    Диалоговое окно JConsole сообщает Вам, что метод был вызван успешно. Сообщение "привет, мир" сгенерирован в окне терминала в который Main работает.

  13. Обеспечьте два целых числа для add() работа, чтобы добавить и щелкнуть add кнопка.

    Ответ выводится на экран в диалоговом окне JConsole.

  14. Чтобы закрыть JConsole, выберите Соединение-> Выход.

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Представление MBeans
Следующая страница: MXBeans