package com.suzl;
import java.util.Map;
import javax.management.Attribute;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanParameterInfo;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
public class HelloServer {
public static void main(String args[])throws Exception{
MBeanServer mbs = MBeanServerFactory.createMBeanServer();
String domain = mbs.getDefaultDomain();
System.out.println("domain:" + domain);
String objNameStr = domain + ":type=A,name=aa";
ObjectName objName = ObjectName.getInstance(objNameStr);
AMBean a = new A();
mbs.registerMBean(a, objName);
// 获取MBean属性和方法
MBeanInfo info = mbs.getMBeanInfo(objName);
MBeanAttributeInfo[] attrs = info.getAttributes();
for(int i = 0; i < attrs.length; i++){
System.out.println("attr:" + attrs[i].getName() + " type:" + attrs[i].getType());
}
MBeanOperationInfo[] opers = info.getOperations();
for(int i = 0; i < opers.length; i++){
MBeanParameterInfo[] ps = opers[i].getSignature();
StringBuilder params = new StringBuilder();
int j = 0;
for(j = 0; j < ps.length - 1; j++){
params.append(ps[j].getType()).append(" ").append(ps[j].getName()).append(",");
}
if(ps.length != 0){
params.append(ps[j].getType()).append(" ").append(ps[j].getName());
}
System.out.println(opers[i].getReturnType() + " " + opers[i].getName() + "(" + params.toString() + ")");
}
// 操作属性和操作方法
String s = (String)mbs.getAttribute(objName, "Name");
System.out.println(s);
Attribute attr = new Attribute("Name", "newName");
mbs.setAttribute(objName, attr);
s = (String)mbs.getAttribute(objName, "Name");
System.out.println(s);
mbs.invoke(objName, "fn", new Object[]{1, "a", null}, new String[]{"int", String.class.getName(), Map.class.getName()});
}
}
jmx入门demo
最新推荐文章于 2022-02-23 15:43:22 发布