Jmx Tutorial 笔记

  • Post author:
  • Post category:其他


1.MBean 接口的命名一定要以MBean或MXBean结尾,否则报:

Exception in thread “main” javax.management.NotCompliantMBeanException: MBean class com.example.mbeans.Hello does not implement DynamicMBean, neither follows the Standard MBean conventions (javax.management.NotCompliantMBeanException: Class com.example.mbeans.Hello is not a JMX compliant Standard MBean) nor the MXBean conventions (javax.management.NotCompliantMBeanException: com.example.mbeans.Hello: Class com.example.mbeans.Hello is not a JMX compliant MXBean)

at com.sun.jmx.mbeanserver.Introspector.checkCompliance(Unknown Source)

at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(Unknown Source)

at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(Unknown Source)

at com.example.mbeans.Main.main(Main.java:28)

2.Server start前必须用 rmiregistry 9999 注册端口,或者LocateRegistry.createRegistry(9999);

3.使用Subject Delegation(使用java.policy)来控制权限,不能在eclipse执行Server,

因为jvm会任务bin目录也是一个Protected Domain,这样没有包含权限。

access: domain that failed ProtectionDomain (file:/D:/code/jmx_examples/bin/ <no signer certificates>)

sun.misc.Launcher$AppClassLoader@e48e1b

<no principals>

4.access.properties控制访问权限

样例:

username readwrite create SimpleStandard unregister

password.properties控制用户和密码

样例:

username password

5.MXBean 和MBean的区别在于MBean指定定义基本类型参数的接口,MXBean可以是复杂对象参数的接口。