来源:http://blog.csdn.net/qiao000_000/article/details/6061808java
JMX 即 Java Management Extensions Java管理扩展
MBean 即 managed beans 被管理的Beans
一个MBean是一个被管理的Java对象,有点相似于JavaBean,一个设备、一个应用或者任何资源均可以被表示为MBean,MBean会暴露一个接口对外,这个接口能够读取或者写入一些对象中的属性,一般一个MBean须要定义一个接口,以MBean结尾, 例如: EchoMBean, 格式为XXXMBean,这个是规范,必须得遵照。例如:ide
很简单的,在EchoMBean接口中,定义了一个print方法,带一个yourName的String类型参数,只有接口貌似没什么用,下边咱们实现这个接口函数
Echo实现了EchoMBean接口,很简单咱们只是print了hi yourName!
按照JMX的定义,是被管理的对象,如今咱们只是定义了该对象,并无被管理,接着咱们让这个Echo类的实例对象被管理起来:spa
1. 首先咱们在App类中向ManagementFactory申请了一个MBeanServer对象
2. 接着咱们即然要使Echo的实例对象被管理起来,咱们就须要给这个对象一个标识,这个标识是ObjectName.注意这个ObjectName构造函数,这里使用了(包名:type=类名)的形式.
3. 而后咱们经过mbs.registerMBean方法注册了echo,并传入了ObjectName在MBeanServer中标识该MBean.
4. 随后咱们经过mbs.invoke方法调用了已经注册的Echo的print方法,经过ObjectName找到该MBean, 并经过最后两个参数,传入print方法执行的参数,与参数的类型。
5. 最后咱们sleep主线程,等待其余线程的调用.
经过这个例子咱们能够看出,MBean的好处,在Echo的实例对象未被管理以前,咱们只能经过Echo对象的句柄,来调用Echo里的public方法,在被管理以后,咱们能够经过MBeanServer的句柄mbs来调用Echo对象的print方法。.net