來源: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