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

MXBeans

Этот раздел объясняет специальный тип MBean, названного MXBeans.

MXBean является типом MBean что ссылки только предопределенный набор типов данных. Таким образом можно убедиться, что Ваш MBean будет применим любым клиентом, включая удаленные клиенты, без любого требования, чтобы у клиента был доступ к специфичным для модели классам, представляющим типы Вашего MBeans. MXBeans обеспечивают удобный способ связать связанные значения вместе, не требуя, чтобы клиенты были особенно сконфигурированы, чтобы обработать пакеты.

Таким же образом что касается стандартного MBeans, MXBean определяется при записи вызванного интерфейса Java SomethingMXBean и Java class, который реализует тот интерфейс. Однако, в отличие от стандартного MBeans, MXBeans не требуют, чтобы Java class был вызван Something. Каждый метод в интерфейсе определяет или атрибут или работу в MXBean. Аннотация @MXBean может также использоваться, чтобы аннотировать интерфейс Java, вместо того, чтобы требовать, чтобы имя интерфейса сопровождалось суффиксом MXBean.

MXBeans существовал в Java 2 Платформы, Standard Edition (J2SE) 5.0 программных обеспечений, в пакете java.lang.management. Однако, пользователи могут теперь определить свой собственный MXBeans, в дополнение к стандартному набору, который определяется в java.lang.management.

Основная идея позади MXBeans состоит в том что типы такой как java.lang.management.MemoryUsage на это ссылаются в интерфейсе MXBean, java.lang.management.MemoryMXBean в этом случае, отображаются в стандартный набор типов, так называемые Открытые Типы, которые определяются в пакете javax.management.openmbean. Точные правила отображения появляются в спецификации MXBean. Однако, общий принцип для простых типов, таких как интервал или Строка, чтобы остаться неизменным, в то время как составные типы такой как MemoryUsage будьте отображены на стандартный тип CompositeDataSupport.

Пример MXBean состоит из следующих файлов, которые находятся в jmx_examples.zip:

Пример MXBean использует эти классы, чтобы выполнить следующие действия:

Интерфейс MXBean

Следующий код показывает пример QueueSamplerMXBean Интерфейс MXBean:

package com.example; 
 
public interface QueueSamplerMXBean { 
    public QueueSample getQueueSample(); 
    public void clearQueue(); 
} 

Отметьте, что Вы объявляете интерфейс MXBean точно таким же образом, как Вы объявляете стандартный интерфейс MBean. QueueSamplerMXBean интерфейс объявляет метода get, getQueueSample и работа, clearQueue.

Определение Операции MXBean

Операции MXBean объявляются в QueueSampler пример class, следующим образом:

package com.example; 
 
import java.util.Date; 
import java.util.Queue; 
 
public class QueueSampler 
                implements QueueSamplerMXBean { 
     
    private Queue<String> queue; 
         
    public QueueSampler (Queue<String> queue) { 
        this.queue = queue; 
    } 
         
    public QueueSample getQueueSample() { 
        synchronized (queue) { 
            return new QueueSample(new Date(), 
                           queue.size(), queue.peek()); 
        } 
    } 
         
    public void clearQueue() { 
        synchronized (queue) { 
            queue.clear(); 
        } 
    } 
} 

QueueSampler определяет getQueueSample() метод get и clearQueue() работа, которые были объявлены интерфейсом MXBean. getQueueSample() работа возвращает экземпляр QueueSample Тип Java, который создавался со значениями, возвращенными java.util.Queue методы peek() и size(), и экземпляр java.util.Date.

Определение Типа Java Возвратилось Интерфейсом MXBean

QueueSample экземпляр, возвращенный QueueSampler определяется в QueueSample class, следующим образом:

package com.example; 
 
import java.beans.ConstructorProperties; 
import java.util.Date; 
 
public class QueueSample { 
     
    private final Date date; 
    private final int size; 
    private final String head; 
         
    @ConstructorProperties({"date", "size", "head"}) 
    public QueueSample(Date date, int size, 
                        String head) { 
        this.date = date; 
        this.size = size; 
        this.head = head; 
    } 
         
    public Date getDate() { 
        return date; 
    } 
         
    public int getSize() { 
        return size; 
    } 
         
    public String getHead() { 
        return head; 
    } 
}   

В QueueSample class, платформа MXBean призывает всех методов get QueueSample преобразовать приведенный пример в a CompositeData экземпляр и использование @ConstructorProperties аннотация, чтобы восстановить a QueueSample экземпляр от a CompositeData экземпляр.

Создание и Регистрация MXBean в Сервере MBean

До сих пор, следующее были определены: MXBean взаимодействует через интерфейс и class, который реализует его, так же как тип Java, который возвращается. Затем, MXBean должен быть создан и зарегистрирован в сервере MBean. Эти действия выполняются тем же самым Main пример агент JMX, который использовался в стандартном примере MBean, но соответствующем коде, не показали в Стандартном уроке MBean.


package com.example; 
 
import java.lang.management.ManagementFactory; 
import java.util.Queue; 
import java.util.concurrent.ArrayBlockingQueue; 
import javax.management.MBeanServer; 
import javax.management.ObjectName; 
 
public class Main { 
 
    public static void main(String[] args) throws Exception { 
        MBeanServer mbs = 
            ManagementFactory.getPlatformMBeanServer(); 
                
        ...  
        ObjectName mxbeanName = new ObjectName("com.example:type=QueueSampler");
        
        Queue<String> queue = new ArrayBlockingQueue<String>(10);
        queue.add("Request-1");
        queue.add("Request-2");
        queue.add("Request-3");
        QueueSampler mxbean = new QueueSampler(queue);
        
        mbs.registerMBean(mxbean, mxbeanName);
                 
        System.out.println("Waiting..."); 
        Thread.sleep(Long.MAX_VALUE); 
    } 
} 
 

Main class выполняет следующие действия:

Выполнение Примера MXBean

Пример MXBean использует классы от jmx_examples.zip пакет, который Вы использовали в Стандартном разделе MBeans. Этот пример требует версии 6 Java платформа SE. Чтобы выполнить пример MXBeans следуют за этими шагами:

  1. Если Вы так уже не сделали, сохранить jmx_examples.zip в Ваш work_dir каталог.
  2. Разархивируйте пакет демонстрационных классов при использовании следующей команды в окне терминала.
    unzip jmx_examples.zip
    
  3. Скомпилируйте классы Java в качестве примера изнутри work_dir каталог.
    javac com/example/*.java
    
  4. Запустите Main приложение. Подтверждение это Main ожидает чего-то, чтобы произойти, сгенерирован.
    java com.example.Main
    
  5. Запустите JConsole в различном окне терминала на той же самой машине. Новое диалоговое окно Соединения выводится на экран, представляя список выполнения агентов JMX, с которыми можно соединиться.
    jconsole
    
  6. В Новом диалоговом окне Соединения выбрать com.example.Main от списка и щелкают по Connect.

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

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

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

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

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

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

    Вы видите QueueSample атрибут появляется в правильной области с ее значением javax.management.openmbean.CompositeDataSupport.

  10. Двойной щелчок CompositeDataSupport значение.

    Вы видите QueueSample значения date, head, и size потому что платформа MXBean преобразовала QueueSample экземпляр в CompositeData. Если Вы определили QueueSampler как стандартный MBean, а не как MXBean, JConsole не нашел бы QueueSample class, потому что это не было бы в его пути class. Если QueueSampler был стандартный MBean, Вы получите a ClassNotFoundException обменивайтесь сообщениями, получая QueueSample значение атрибута. Факт, что JConsole находит QueueSampler демонстрирует полноценность использования MXBeans, соединяясь с агентами JMX через универсальные клиенты JMX, такие как JConsole.

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

    Кнопка, чтобы вызвать clearQueue работа выводится на экран.

  12. Щелкните clearQueue кнопка.

    Подтверждение, что метод был вызван успешно, выводится на экран.

  13. Разверните узел Атрибутов снова, и дважды щелкните по CompositeDataSupport значение.

    head и size значения были сброшены.

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

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

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