我是JMX的新手,现在我希望用JMX来监控我的项目。有没有办法通过MBeans / MXBean返回用户定义的类?我知道OpentType可以帮助但不知道如何使用它。我还浏览了Composite和Tabular数据类型,但它可能对我不起作用,因为我需要将每个类转换为相应的数据类型。 请提供帮助。 提前谢谢!!
答案 0 :(得分:0)
您必须创建一个接口SomethingMBean
和一个实现该接口的类。
public interface HelloMBean {
public void sayHello();
public int add(int x, int y);
public String getName();
public int getCacheSize();
public void setCacheSize(int size);
}
public class Hello ...
implements HelloMBean {
public void sayHello() {
System.out.println("hello, world");
}
public int add(int x, int y) {
return x + y;
}
public String getName() {
return this.name;
}
public int getCacheSize() {
return this.cacheSize;
}
public synchronized void setCacheSize(int size) {
...
this.cacheSize = size;
System.out.println("Cache size now " + this.cacheSize);
}
...
private final String name = "Reginald";
private int cacheSize = DEFAULT_CACHE_SIZE;
private static final int
DEFAULT_CACHE_SIZE = 200;
}
然后,你必须注册你的MBean ......
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName("com.example:type=Hello");
Hello mbean = new Hello();
mbs.registerMBean(mbean, name);
答案 1 :(得分:0)
如果您的项目使用的是Spring,那么只需使用注释就可以很容易地将任何用户定义的类公开给JMX:
查看official Spring documentation,其中也包含很多说明性示例。