JMX技術基礎

JMX在J2SE 5和J2SE 6平臺略有不同,我們基於J2SE 6來學習JMX。JMX已經成功Java 2平臺的一部分,它的目標是動態管理和監控你所感興趣的資源,例如應用程序、設備、服務、JVM等。JMX能夠支持通過本地和遠程訪問的方式,來實現對相關資源的管理和監控。JMX只是對應用程序管理的擴展,而非必選,那麼,如果我們選擇爲系統實現JMX管理功能,能夠帶來哪些好處呢?

第一、基於JMX來管理現有的Java應用程序,可以非常容易的基於Java技術實現,而無需更大的投入;

第二、JMX定義了一種規範和一組標準API,業界已經將JMX技術納入到自己的產品中來,例如JBoss、Weblogic等;

第三、JMX具有一套標準的架構,使得在管理方面具備動態性、靈活性、可擴展性和穩定性;

第四、JMX可以非常容易地與其他管理方案進行整合,如通過瀏覽器來訪問代理服務器(MBean Server)。

 

下面,我們看一下,JMX的技術架構,可以分爲三層:

1、設備層

這一層定義了需要管理的資源,如應用程序、設備、服務、網絡,將這些資源以Java對象的形式,以MBean的方式暴露管理接口,例如標準MBean,通過定義名稱含有MBean後綴的管理接口,在實現這些接口時與待管理的資源相關聯,之後將這些Java對象註冊到代理服務器(MBean Server)來實現遠程管理和監控。

例如,我們定義了一個標準MBean管理接口(其它MBean可以參考相關文檔):

MBean的實現示例如下所示:

可以看到,管理接口中暴露了4個方法,可以查看但不能修改id,可以查看並修改name,可以調用show方法。

需要注意的是,對於標準MBean,如果MBean管理接口定義爲xxxMBean,則實現一定爲xxx,否則就無法通過MBean Server查找到對應的資源。

2、代理層

代理層爲待管理對象(如實現標準MBean管理接口的Java對象)提供了一個容器,其中只有滿足要求並註冊到容器中對象才能實現JMX管理。代理層最主要的組件就是MBean Server,它在我們的應用系統中充當一個管理功能的代理。

JavaSE 6平臺中,可以通過調用ManagementFactory.getPlatformMBeanServer()來獲取到一個MBean Server,然後向其中註冊實現好的MBean資源,就能夠通過JMX進行管理。

查找本地的MBean Server(如果沒有找到,會自動創建一個),有關如何查找以及可能需要創建,可以通過ManagementFactory.getPlatformMBeanServer()的代碼來實現跟蹤。示例如下所示:

在啓動參數中,需要設置-Dcom.sun.management.jmxremote選項,表示可以通過遠程進行管理。

3、遠程管理層

我們要管理應用系統的某些資源,是通過代理層來間接實現管理,那麼在與代理層之間交互最爲直接,所以遠程遠程管理層定義了我們通過什麼方式來與MBean Server進行交互,如基於何種協議、怎樣建立連接才能通過遠程手段在MBean Server的JVM之外進行訪問,從而實現管理和監控,例如基於JMXMP、RMI等。

所以,遠程管理層最重要的兩個組件就是協議適配器和連接器。

Sun公司實現了一個基於JMXMP協議的工具JConsole,可以通過JConsole來方便地進行調試。啓動JConsole後,可以通過本地進程或遠程進程來進行遠程管理。

例如,創建一個基於RMI協議的連接器,示例如下:

 

參考鏈接:

http://download.oracle.com/javase/6/docs/technotes/guides/jmx/index.html

 

 

發佈了73 篇原創文章 · 獲贊 19 · 訪問量 110萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章