【JMX】JMX心得

JMX心得

 

    JMX作爲Java中管理各種資源的框架,提供了一整套的企業級的資源管理和整合方案的平臺。它將企業中的各種資源,以一種廣義的概念加以描述並提供了一系列有效的管理架構。通過設計良好的JMX架構實現,企業可以對各種資源(當然都要抽象爲Java類或者接口)進行添加、刪除、發送通告、監控等操作。

    在企業級平臺和企業級業務整合方案中,JMX都在扮演着一個非常重要的角色。特別是在計算平臺中,JMX通過有效地管理各種資源和組件,在系統中發揮了“內核”的重要角色。而且JMX的管理不只限於對本地的資源管理,通過提供網絡協議適配器和連接器,遠程的客戶可以對服務端的資源進行在安全範圍內的查詢、訪問、調用等相應操作。那我們下面就具體的討論一下JMX在計算平臺中的作用吧,而這將以JBoss爲例子來說明。

    在計算平臺的整體架構夠,JMX一般是起到一個內核的作用或者總線的作用。它負責管理那些部署在平臺上的功能性組件。這些組件以暴露其管理接口的方式註冊到JMX Server中,並通過資源的ObjectName來定位和獲取其實例。就相當於一個插排,各個組件就像插頭一樣插到插排上,之後就能馬上投入使用,而一拔掉就可以立即脫離平臺,卻不影響平臺中的其他組件。

    通過這樣非常靈活的方式,就可以以一種高度可擴展的架構來設計系統。通過設計良好的資源接口,JMX Server就可以獲取到足夠的管理各資源的信息。這些信息包括:接口的操作。一般的企業計算平臺或者應服務器(限於Java)一般是通過配置文件的形式來描述平臺中的各個功能性組件。例如JBoss中,使用jboss-service.xml配置文件來描述部署到特定服務器中的組件。在這裏我就不具體將這個配置文件的內容了,但我還是要提到一些關鍵的配置文件信息,以便於大家的理解。

    在這個配置文件中,將各個組件(資源)都包裝在各個mbean元素中,這個對應於JMX中的Model MBean.在這個配置文件中包含很多信息,但是最基本的也是最重要的是attribute、operation、constructor等Java類的基本描述信息。其餘的像descriptors(描述相應持久化策略、緩存策略等內容)對於一般開發者而言比較少能接觸到。

    通過這樣方式的優勢在於你不要寫代碼,就可以創建一個組件,並部署到JMX Server中。通過在這個配置文件中寫出組件相應的屬性、構造函數信息、操作等信息,系統就可以在運行時自動地構造出相應的組件,並部署到服務器中。其中這些mbean元素的name屬性都是對應了相應的MBean的ObjectName.

    服務器通過啓動對應的掃描線程,對服務器的主配置文件和部署區(deploy)進行“監控”。一旦發現了改動,就自動地將組件部署到服務器中或從服務器中移除。

    <!——[if !supportLists]——>   <!——[endif]——>JNDI和JMX

    剛開始學JMX時,老是不明白兩者之間有什麼區別。後來特地對比了一下兩者的架構規範以及研究了一下JBoss中關於兩者的具體實現,纔有了些“開竅”。下面就分爲幾個方面展開進行討論。

    <!——[if !supportLists]——>   <!——[endif]——>整體架構:JMX是一個服務器端的技術,它只設計了服務器端管理各種資源的架構,當然也包括各種API.而JNDI是一個客戶端的API,當然實現中也要有服務器端的支持,但這在JNDI規範中並沒有要求。

    <!——[if !supportLists]——>   <!——[endif]——>操作對象:JMX和JNDI都可以對Java類和對象進行查找和定位(JMX中還支持對MBean的查找,並有特定的Query類)。但是在實際應用中,JMX一般用於系統重要的功能性組件;JNDI用對部署到服務器中的各個應用程序中的資源,例如servlet、EJB和POJO等,並會爲每個應用程序建立獨立的隔離的Context.各個Context中,只能定位在這個Context中的資源。

    <!——[if !supportLists]——>   <!——[endif]——>作用:JMX被用來對各個組件進行管理,其中包括啓動、關閉、部署和移除等,當然還包括其他的一些功能,但“管理”各個組件的生命週期是其主要出發點;JNDI爲了獲取相應的資源或者類,來調用這個組件所提供的功能,一般是業務功能。

    JMX中關鍵的地方不在JMX技術本身的使用,而在如何對系統或者平臺中資源進行建模、分析和抽象,並設計出資源的Java接口視圖。當然這個視圖中,各個資源不是自閉的,資源之間會發生關係,例如消息的傳遞,資源之間的引用等。那麼這要求的是軟件開發或者系統開發的內功,需要長時間的歷練了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章