歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Java SE 6 新特性: JMX 與系統管理

Java SE 6 新特性: JMX 與系統管理

日期:2017/2/28 16:09:52   编辑:Linux教程

前言

在 Java 程序的運行過程中,對 JVM 和系統的監測一直是 Java 開發人員在開發過程所需要的。一直以來,Java 開發人員必須通過一些底層的 JVM API,比如 JVMPI 和 JVMTI 等,才能監測 Java 程序運行過程中的 JVM 和系統的一系列情況,這種方式一直以來被人所诟病,因為這需要大量的 C 程序和 JNI 調用,開發效率十分低下。於是出現了各種不同的專門做資源管理的程序包。為了解決這個問題,Sun 公司也在其 Java SE 5 版本中,正式提出了 Java 管理擴展(Java Management Extensions,JMX)用來管理檢測 Java 程序(同時 JMX 也在 J2EE 1.4 中被發布)。

JMX 的提出,讓 JDK 中開發自檢測程序成為可能,也提供了大量輕量級的檢測 JVM 和運行中對象 / 線程的方式,從而提高了 Java 語言自己的管理監測能力。

JMX 和系統管理

管理系統(Management System)

要了解 JMX,我們就必須對當前的 IT 管理系統有一個初步的了解。隨著企業 IT 規模的不斷增長,IT 資源(IT resource)數量不斷增加,IT 資源的分布也越來越分散。可以想象,甚至對於一家只有幾百台 PC 公司的 IT 管理人員來說,分發一個安全補丁並且保證其在每台 PC 上的安裝,如果只依賴人工來完成那簡直就是一場噩夢。這樣,IT 管理系統就應運而生。

然而,CPU、網卡、存儲陣列是 IT 資源;OS、MS Office、Oracle database、IBM Websphere 也是 IT 資源。IT 管理系統若要對這些 IT 資源進行管理,就必須對這些管理對象有所了解:形形色色的 IT 資源就像是說著不同語言的人:Oralce 數據庫表達內存緊張的方式和 Window XP 是絕然不同的, 而 IT 管理系統就像建造通天塔的經理,必須精通所有的語言, 這幾乎是一個不可能完成的任務。難道 IT 管理系統是另外一個通天塔嗎?當然不是!其實我們只要給每個 IT 資源配個翻譯就可以了。

管理系統的構架


圖 1. 管理系統構架

上圖分析了管理系統的基本構架模式。其中 Agent / SubAgent 起到的就是翻譯的作用:把 IT 資源報告的消息以管理系統能理解的方式傳送出去。

也許讀者有會問,為什麼需要 Agent 和 SubAgent 兩層體系呢?這裡有兩個現實的原因:

  1. 管理系統一般是一個中央控制的控制軟件,而 SubAgent 直接監控一些資源,往往和這些資源分布在同一物理位置。當這些 SubAgent 把狀態信息傳輸到管理系統或者傳達管理系統的控制指令的時候,需要提供一些網絡傳輸的功能。
  2. 管理系統的消息是有一定規范的,消息的翻譯本身是件復雜而枯燥的事情。

一般來說,管理系統會將同一物理分布或者功能類似的 SubAgent 分組成一組,由一個共用的 Agent 加以管理。在這個 Agent 裡封裝了 1 和 2 的功能。

JMX 和管理系統

JMX 既是 Java 管理系統的一個標准,一個規范,也是一個接口,一個框架。圖 2 展示了 JMX 的基本架構。


圖 2. JMX 構架

和其它的資源系統一樣,JMX 是管理系統和資源之間的一個接口,它定義了管理系統和資源之間交互的標准。javax.management.MBeanServer實現了 Agent 的功能,以標准的方式給出了管理系統訪問 JMX 框架的接口。而 javax.management.MBeans實現了 SubAgent 的功能,以標准的方式給出了 JMX 框架訪問資源的接口。而從類庫的層次上看,JMX 包括了核心類庫 java.lang.managementjavax.management包。java.lang.management包提供了基本的 VM 監控功能,而 javax.management包則向用戶提供了擴展功能。

Copyright © Linux教程網 All Rights Reserved