Mbean 中的某些方法在 Jconsole 中不显示?

Some of the methods in Mbean do not show in Jconsole?

我有一个实现这些接口的简单 Mbean

public interface HelloMBean {

    public void print();

    public void printHello();


    public int getInt();

    public String getName();
    public void setName(String s);

}

实现是:

public class Hello implements HelloMBean{

    private String name;

    @Override
    public String getName() {
        // TODO Auto-generated method stub
        return this.name;
    }

    @Override
    public void setName(String s) {
        // TODO Auto-generated method stub
        this.name=s;
    }

    @Override
    public void print() {
        // TODO Auto-generated method stub

        System.out.println("heelp!");

    }

    @Override
    public void printHello() {
        // TODO Auto-generated method stub

        System.out.println("heelp!"+" "+this.name);


    }

    @Override
    public int getInt() {
        // TODO Auto-generated method stub
        return 0;
    }

}

然后我开始在 Mbean Server 上注册我的 Mbean,

MBeanServer server=ManagementFactory.getPlatformMBeanServer();
        ObjectName objectName=new ObjectName("richard:name=fuck");

        try {
            server.registerMBean(new Hello(),objectName);
        } catch (InstanceAlreadyExistsException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MBeanRegistrationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NotCompliantMBeanException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        try {
            System.in.read();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

然而,当我查看 Jconsole 时,它​​只有两个操作,即 print() 和 printHello

我不知道为什么会这样,因为它只是一个非常简单的 Mbean...

规则是 get*()set*() 是(变成)属性 访问器。因此,这些暴露在属性部分下,而不是在操作中。

如果存在 getter,则 JMX 客户端可以读取 属性,如果存在 setter,则可以写入。在这样的 属性.

上只有 setters 或只有 getters 是完全有效的