Java管理擴充套件指南之JMX技術總覽
本文由碼農網 – 蘇文鵬原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
JMX(Java管理擴充套件)系列
JMX(Java管理擴充套件)系列旨在介紹包含於Java基礎版本(Java SE)中的JMX技術。本系列提供瞭如何使用JMX重要技術特性的諸多示例。
- 一、JMX技術總覽簡要介紹JMX技術,包括它的使用目的和主要功能。
- 二、MBean簡介介紹JMX技術的基本概念-被管理的beans,也稱作MBeans。同時會介紹MXBeans。
- 三、通知介紹JMX技術中的通知機制。
- 四、遠端管理展示如何實現JMX API的遠端管理能力和如何建立JMX客戶端程式。
- 五、更進一步展示JMX技術的更為高階的文件,用於更進一步的深入學習。
JMX技術總覽
1.1. JMX技術總體概述
JMX(Java管理擴充套件)技術是Java基礎版本(Java SE)的一部分,最早加入到J2SE 5.0發行版。
JMX技術提供了一種簡單的、基礎的方法,用來管理諸如應用、裝置和服務等資源。由於JMX技術是動態的,你可以使用JMX技術來監控和管理處於建立、安裝和執行態的資源。你甚至可以使用JMX技術監控和管理Java虛擬機器。
JMX規範定義了使用Java語言管理、監控應用和網路的架構、設計模式、APIs和服務。
使用JMX技術,資源會被一到多個稱之為被管理Beans(MBean)的Java物件管理。MBean server擔任管理代理的角色,可執行與支援Java語言的裝置上。
JMX規範定義了JMX代理,它用於管理任何被正確配置的資源。JMX代理由MBean server(MBean在MBean server中註冊)和一系列處理MBean的服務構成。這樣,JMX代理直接控制資源並使遠端管理程式控制資源成為可能。
資源被管理的方式完全獨立於管理類的結構。資源被視為可被管理,與管理程式如何實現沒有任何關係。
JMX技術定義了基本的聯結器(稱之為JMX聯結器),它讓你能夠從遠端管理程式訪問JMX代理。JMX聯結器的管理介面可以使用不同的協議。因此,管理程式可以更透明的管理資源,而不用擔心使用的通訊協議。JMX代理也可以被不滿足JMX規範的系統或者應用呼叫,只要這些系統或者應用支援JMX代理即可。
1.2. 為何使用JMX技術?
JMX技術為開發者提供了一種更靈活的方法來管理基於Java的應用程式,建立更敏捷的代理,實現分散式管理中介軟體和平滑地整合這些解決方案到已經存在的管理和監控平臺。
1.2.1. JMX技術使得Java應用程式易於被管理
基於JMX的代理可以執行於大多可執行Java程式的裝置上。因此,java應用程式可以只需要付出很小的設計代價就能被管理起來。Java應用程式只需要嵌入一個被管理的物件server並開放其功能到MBeans,然後將MBeans註冊到物件server。這必是應用程式被JMX管理所需要做的全部。
1.2.2. JMX技術提供基本的方式來管理Java應用程式、系統和網路
例如,Java企業版本(Java EE)5應用伺服器符合JMX架構,因此可使用JMX技術對其進行管理。
1.2.3. JMX技術可用於管理Java虛擬機器
Java虛擬機器可以使用JMX技術管理。你可以啟動一個JMX代理來訪問內建的Java虛擬機器,並可以遠端監控和管理Java虛擬機器。
1.2.4. JMX技術提供了一種可擴充套件、動態的管理架構
每一個JMX代理服務都是一個獨立的模組,都可以根據需要被插入到管理代理中。這種基於元件的方法意味著JMX解決方案規範可以適應於小規模的裝置和大規模的交換機。JMX技術規範提供一系列的核心代理服務。並可在管理程式中開發、動態載入、解除安裝和更新擴充套件服務。
1.2.5. JMX技術存在於基本的Java技術中
無論是否需要,JMX技術規範存在於Java規範,例如JNDI API。
1.2.6. 基於JMX的應用可以從NetBeans IDE中直接建立
你可以從NeBeans Update Center(選擇:工具->更新中心)中獲取建立JMX應用的模組。這能降低開發JMX程式的複雜度。
1.2.7. JMX技術整合了已有的管理方案和新興技術
JMX APIs介面開放,任何管理系統供應商都可以實現。JMX解決方案可以使用查詢和發現服務和協議,例如JINI網路技術和SLP。
1.3. JMX技術架構
JMX技術分為三層,包括:
- 裝配層
- JMX代理層
- 遠端管理層
1.3.1. 裝配層
使用JMX技術管理資源,你應該首先使用Java程式語言裝配資源。你需要使用稱之為MBeans的Java物件實現對資源裝置的訪問。MBeans必須遵從JMX規範定義的設計模式和介面。這樣做保證了所有的MBeans以一種標準的方式管理資源。除了標準MBean,JMX規範還定義了一系列的MBeans。本系列著重講解MBeans和MXBeans。
一旦資源被MBeans裝配,資源便可以被JMX代理管理。MBeans不需要知道JMX代理去操作哪一個MBean。
MBeans被設計成靈活、簡單和易於實現。開發者可以在不需要理解複雜管理系統的基礎上,將應用程式、系統和網路以一種標準的方法將他們管理起來。已有資源可以用最小的代價完成管理。
此外,JMX規範的裝配層提供通知機制。這種機制保證MBeans可以生成並傳遞通知事件到其他層。
1.3.2. JMX代理
基於JMX技術的代理(JMX代理)是一種標準的管理代理,它直接控制資源並使得他們能夠使用遠端管理程式進行管理。JMX代理通常與管理的資源位於同一機器,但這並不是必須的。
JMX代理的核心元件是MBean server,MBeans在其中進行註冊。JMX代理同樣包括一系列的服務來管理MBeans和至少一種通訊介面卡或者聯結器來保證與遠端管理程式的連線性。
當你實現JMX代理時,你不需要知道所管理資源的具體語義和功能。實際上,JMX代理甚至不需要知道它所管理的是何種資源,這是因為任何資源只要滿足JMX規範進行裝配,都可以使用JMX代理。同樣的,JMX代理不需要知道它所訪問資源的具體功能。
1.3.3. 遠端管理
JMX裝配過的裝置可以使用多種方法進行訪問,例如使用SNMP管理協議,或者更通用的協議。MBean server依賴協議介面卡和聯結器來保證JMX代理對管理程式的可見性。
每個介面卡都通過特定的協議提供一系列的檢視來展示註冊到MBean server上的MBean。例如,HTML介面卡可以在瀏覽器中展示MBean。
聯結器提供管理側的介面處理在管理程式和JMX代理之間的通訊。每個聯結器通過不同的協議提供相同的遠端管理介面。當一個遠端管理程式使用這個介面,它可以通過網路透明的連線到JMX代理,而不論協議是什麼。JMX技術基於Java RMI(Java遠端方法呼叫)提供標準的解決方案來暴露JMX轉配裝置到遠端管理應用程式。
1.4. Java虛擬機器的監控和管理
JMX技術可以應用於監控和管理Java虛擬機器。
Java虛擬機器有內建的裝置允許你使用JMX技術對其進行監控和管理。這些內建的管理工具經常與“開箱即用”Java虛擬機器管理工具聯絡在一起。為了監控和管理Java虛擬機器的不同方面,Java虛擬機器為實現JMX規範的管理應用提供了MBean server平臺和特殊的MXBeans。
1.4.1. MBean server平臺和MXBean平臺
MXBean平臺是一系列的MXBeans-Java基礎版本提供的,用於監控和管理Java虛擬機器和Java執行環境(JRE)中的各種元件。每種平臺的MXBeans都封裝一部分Java虛擬機器功能,例如類載入系統,即時編譯JIT,垃圾收集器GC等等。這些MXBeans可以使用實現JMX規範的監控和管理工具來展示和互動,以便你能夠加農和管理不同的虛擬機器功能。JConsole圖形化介面就是Java基礎版本提供的一種監控和管理工具。
1.4.2. JConsole
Java基礎版本提供JConsole監視和管理工具-它遵從JMX規範。JConsole使用MXBeans平臺來提供執行於Java平臺上應用的效能和應用資源消耗情況。
1.4.3. “開箱即用”的管理
由於Java基礎版本內建提供基於JMX技術的標準監控和管理工具,你可以“開箱即用”般的,不用寫一行JMX API程式碼就能使用它。你可以啟動一個Java應用,然後使用JConsole監控它。
1.4.4. 使用JCon搜了監控應用
這部分展示如何監控Java記事本程式。低於Java基礎版本6的環境下,被JConsole監控的應用啟動時需要新增如下啟動項:
-Dcom.sun.management.jmxremote
A)啟動Java記事本程式,可以在終端視窗中使用如下的命令列:然而,Java基礎版本6及其以上版本的環境下,JConsole可以使用Attach API連結任何本地Java應用程式。換句話說,任何使用Java SE 6 HotSpot虛擬機器啟動的應用程式都會自動被JConsole監控,而不需要實用上述的啟動項。
java -jar jdk_home/demo/jfc/Notepad/Notepad.jar
jdk_home是JDK的安裝目錄。如果你是在低於Java基礎版本6的環境中,你需要使用如下的啟動命令:
java -Dcom.sun.management.jmxremote -jar jdk_home/demo/jfc/Notepad/Notepad.jar
B)一旦啟動成功,在另一個終端視窗,使用如下命令啟動JConsole:
jconsole
接下來會出現一個新的連線對話方塊。
C)在連結對話方塊中,在本地處理列表中,選擇Notepad.jar並點選連線按鈕。JConsole開啟並連線到Notepad.jar程式。當JConsole開啟後,你便可以看到與Notepad程式相關的監控和管理檢視。例如,你可以檢視應用消耗的堆記憶體,應用當前執行使用的執行緒數目,應用消耗的CPU數量等。
D)點選不同的JConsole標籤。每一個標籤會展現Notepad程式在Java虛擬機器中不同方面的功能。所有的展現的資訊都是由本系列提到的,基於JMX技術的MXBeans提供。所有MXBeans都可以在MBean標籤頁展示,MBean標籤將在下一章討論。
選擇連線->退出,退出JConsole。
譯文連結:http://www.codeceo.com/article/java-jmx-overview.html
英文原文:Overview of the JMX Technology
翻譯作者:碼農網 – 蘇文鵬
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- Java管理擴充套件指南之MBean簡介Java套件Bean
- Chrome瀏覽器擴充套件開發系列之十九:擴充套件開發示例Chrome瀏覽器套件
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- Lynx技術分析-JS引擎擴充套件技術基礎JS套件
- Chrome瀏覽器擴充套件開發系列之十六:擴充套件中可用的Chrome瀏覽器APIChrome瀏覽器套件API
- 譯 - Spring 核心技術之 Spring 容器擴充套件點Spring套件
- 第3章 LALR等技術擴充套件套件
- 技術管理之新晉總監生存指南
- Chrome瀏覽器擴充套件開發系列之四:Browser Action型別的Chrome瀏覽器擴充套件Chrome瀏覽器套件型別
- Chrome瀏覽器擴充套件開發系列之五:Page Action型別的Chrome瀏覽器擴充套件Chrome瀏覽器套件型別
- Chrome瀏覽器擴充套件開發系列之八:Chrome擴充套件的資料儲存Chrome瀏覽器套件
- Lynx技術分析-JS引擎擴充套件設計JS套件
- Chrome瀏覽器擴充套件開發系列之十七:擴充套件中可用的chrome.events APIChrome瀏覽器套件API
- 瀏覽器新增外部擴充套件瀏覽器套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- 技術筆記(10)Unity編輯器擴充套件筆記Unity套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- lvm管理之pv遷移與lv擴充套件LVM套件
- Chrome瀏覽器擴充套件開發系列之三:Google Chrome瀏覽器擴充套件的架構Chrome瀏覽器套件Go架構
- Chrome瀏覽器擴充套件開發系列之二:Google Chrome瀏覽器擴充套件的除錯Chrome瀏覽器套件Go除錯
- Chrome瀏覽器擴充套件開發系列之一:初識Google Chrome擴充套件Chrome瀏覽器套件Go
- Mysqli擴充套件庫增強—–預處理技術mysqlistmtMySql套件
- Chrome 瀏覽器擴充套件 - Night EyeChrome瀏覽器套件
- Java 缺失的特性:擴充套件方法Java套件
- javax.mail Java Extension(擴充套件)JavaAI套件
- Java-IoUtil擴充套件工具類Java套件
- java資料型別擴充套件Java資料型別套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- Dubbo系列之 (一)SPI擴充套件套件
- DOM擴充套件之HTML5套件HTML
- PHP 操作 Redis 之 phpredis 擴充套件PHPRedis套件
- ES6之字串擴充套件字串套件
- Deco 編輯器高擴充套件性技術架構解析套件架構
- 【LINQ技術】擴充套件特性和LINQ操作符套件
- Chrome瀏覽器擴充套件開發系列之十:桌面通知NotificationChrome瀏覽器套件
- Chrome瀏覽器擴充套件開發系列之十二:Content ScriptsChrome瀏覽器套件
- Chrome瀏覽器擴充套件開發系列之六:options 頁面Chrome瀏覽器套件
- Chrome瀏覽器擴充套件開發系列之十八:擴充套件的軟體國際化chrome.i18n APIChrome瀏覽器套件API