【问题标题】:JConsole shows only operations without attributes of MBeanJConsole 只显示没有 MBean 属性的操作
【发布时间】:2014-12-21 00:01:35
【问题描述】:

我有一个简单的 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 只显示操作?如何显示属性?

【问题讨论】:

  • 粘贴X类的代码。这3个方法和4个属性是什么?
  • 谢谢。我已经粘贴了代码。

标签: java jmx jconsole mbeans


【解决方案1】:

我在下面粘贴了简单的代码:

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);
}

【讨论】:

【解决方案2】:

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

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

如果您使用的是 Eclipse,您可以通过右键单击打开上下文菜单并单击重构 > 提取接口来轻松生成接口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多