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

标签 java jakarta-ee jmx jconsole mbeans

我有一个实现这些接口(interface)的简单 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

enter image description here

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

最佳答案

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

如果存在 getter,则 JMX 客户端可以读取属性,如果存在 setter,则可以写入。在此类属性上仅具有 setter 或仅具有 getter 是完全有效的。

关于java - Mbean 中的某些方法在 Jconsole 中不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29712758/

相关文章:

hibernate - 在 JBoss 7.1 上使用 JPA/Hibernate/JAVA 访问 AS/400 数据库

java - 在 Graphite 中显示 Java Metrics 结果

docker - 使JMX与Spotify/Kafka Docker镜像一起使用

java - LOG4J作为单例,反正是为了避免web环境下的log4j日志记录冲突

Java - 是否可以使用方法签名输出堆栈跟踪?

java - 使用 Java Rally Rest API 将 200 多个测试用例添加到测试集

java - Quercus 是 Java 环境中 PHP 的可行替代品吗?

java - 如何在用 C 编写的服务器程序中反序列化 Java 对象?

java - 如何从 JMX 服务器获取 Mbean

java - Android 使用什么编译器?我可以更改它吗?