JConsole仅显示没有MBean属性的操作

时间:2014-12-21 00:01:35

标签: java jmx jconsole mbeans

我有简单的MBean X,有3个方法和4个属性。它实现了接口XMBean(2种方法)。

在其他课程中我注册:

    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只向我显示操作?如何显示属性?

2 个答案:

答案 0 :(得分: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 :(得分:0)

JMX在很大程度上依赖于使用* MBean接口的反射。正如Andy所说,XBean接口必须在getter和/或setter中公开属性。来自Oracle's JMX tutorial

  

根据JMX规范的定义,getter是任何公共方法   这不会返回void,其名称以get开头。一个吸气剂   使管理器能够读取其类型为的属性的值   返回对象的那个。 setter是任何公共方法   单个参数,其名称以set开头。一个setter使a   manager在属性中写入一个新值,其类型相同   作为参数。

如果您正在使用Eclipse,则可以通过右键单击打开上下文菜单并单击Refactor>轻松生成界面。提取界面。