1. 连接
一般情况下使用jmx连接远程jvm需要添加如下参数:
-Djava.rmi.server.hostname=$host_ip -Dcom.sun.management.jmxremote.port=$host_port -Dcom.sun.management.jmxremote.authenticate=(true|false) -Dcom.sun.management.jmxremote.ssl=(true|false)
其中,若不使用"-Djava.rmi.server.hostname=$host_ip"的话,有时会出现无法连接的错误。出现该错误是因为服务器端的网络配置有问题,使用命令:
hostname -i
查看的话,应该会返回"127.0.0.1" ,这是错误的,导致jmx无法连接。可以修改"/etc/hosts"文件,改为真实ip,或者直接使用"-Djava.rmi.server.hostname=$host_ip"即可。
2. MBean
在对MBean进行操作时,需要注意,返回的数据类型常常会是CompositData和TabularData类型的,可将将之理解为Object和List<Object>,只不过这个Object中含有自己的类型信息。而每个CompositeData和TabularData对象中所包含的成员仍可以是CompositData和TabularData类型的,所以在获取数据时,需要对这两种类型特别注意,尽量用栈去获取对象,不要用递归的方式,否则会有爆栈的可能。