我有一个实现这些接口(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
我不知道为什么会这样,因为它只是一个非常简单的 Mbean...
最佳答案
规则是 get*()
和 set*()
是(变成)属性访问器。因此,这些暴露在属性部分下,而不是在操作中。
如果存在 getter,则 JMX 客户端可以读取属性,如果存在 setter,则可以写入。在此类属性上仅具有 setter 或仅具有 getter 是完全有效的。
关于java - Mbean 中的某些方法在 Jconsole 中不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29712758/