2014-12-21 2 views
0

У меня есть простой MBean X с тремя методами и четырьмя атрибутами. Он реализует интерфейс XMBean (2 метода).JConsole показывает только операции без атрибутов MBean

В другом классе я зарегистрировать:

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); 

    X x= new X(14, 16, 17, 13); 

    ObjectName name = new ObjectName("package:type=xxxx"); 

    mbs.registerMBean(x, name); 

Я могу видеть это в Jconsole. Я могу назвать два метода, которые я реализую из интерфейса. Я думаю, что я должен увидеть также атрибуты моего MBean? Почему jConsole показывает мне только операции? Как показать атрибуты?

+0

Вставить код для класса X. Каковы 3 метода и 4 атрибута? –

+0

Спасибо. Я вставил код. – peter55555

ответ

0

Я вставил простой код ниже:

public class X implements XMBean 
{ 
    public Automat(int aa, int bb, int cc, int dd) 
    { 
     a = aa; 
     b = bb; 
     c = cc; 
     d = dd; 
    } 

    public int operation1(char product) 
    { 
     return 1; 
    } 

    public int operation2(char product) 
    { 
     return 2; 
    } 

    public Integer getA() 
    { 
     return a; 
    } 

    public Integer getB() 
    { 
     return b; 
    } 

    public Integer getC() 
    { 
     return c; 
    } 

    public Integer getD() 
    { 
     return d; 
    } 

    private int a; 
    private int b; 
    private int c; 
    private int d; 
} 

/////////////////////////////// ////////////////////////////////////////////////// ///////

public interface XMBean 
{ 
    public int operation1(char product); 
    public int operation2(char product); 
} 
+1

Я вижу две вещи, отсутствующие - интерфейс не имеет геттер-сеттеров, в то время как класс реализации также не имеет сеттеров. Взгляните на этот пример - http://examples.javacodegeeks.com/enterprise-java/jmx/create-and-register-mbean-in-mbeanserver/ –

0

JMX в значительной степени полагается на отражение с использованием интерфейсов * MBean. Как говорит Энди, интерфейс XBean должен раскрывать атрибуты в getter и/или setter. Из Oracle's JMX tutorial:

Как определено спецификацией JMX, геттер является любой публичный метод , который не возвращается тщетным, и чье имя начинается с ГЭТ. Геттер позволяет менеджеру считывать значение атрибута, тип которого - , возвращаемого объекта. Множителем является любой публичный метод, который принимает единственный параметр и имя которого начинается с набора. Установщик позволяет менеджеру написать новое значение в атрибуте, тип которого тот же , что и параметр.

Если вы используете Eclipse, вы можете легко сгенерировать интерфейс, щелкнув правой кнопкой мыши, чтобы открыть контекстное меню и щелкнуть по Refactor> Extract Interface.

Смежные вопросы