<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    【永恒的瞬間】
    ?Give me hapy ?
    JMX
    ? JMX Java Management Extensions ,即 Java管理擴(kuò)展 )是一個為應(yīng)用 程序 、設(shè)備、系統(tǒng)等植入管理功能的 框架 JMX可以跨越一系列異構(gòu) 操作系統(tǒng) 平臺、系統(tǒng) 體系結(jié)構(gòu) 和網(wǎng)絡(luò)傳輸協(xié)議,靈活的開發(fā)無縫集成的系統(tǒng)、網(wǎng)絡(luò)和服務(wù)管理應(yīng)用。

    ????? Java管理擴(kuò)展JMX(Java Management Extensions)是一個為應(yīng)用程序植入管理功能的框架。JMX是一套標(biāo)準(zhǔn)的代理和服務(wù),實際上,用戶可以在任何Java應(yīng)用程序中使用這些代理和服務(wù)實現(xiàn)管理。

    ????? Java管理擴(kuò)展JMX的前身是JMAPI。

    ????? Java管理擴(kuò)展JMX致力于解決分布式系統(tǒng)管理的問題,因此,能夠適合于各種不同的環(huán)境是非常重要的。為了能夠利用功能強(qiáng)大的Java計算環(huán)境解決這一的問題,Sun公司擴(kuò)充了Java基礎(chǔ)庫,開發(fā)了專用的管理類庫。

    ????? JMX是一種應(yīng)用編程接口,可擴(kuò)充對象和方法的集合體,可以用于跨越一系列不同的異構(gòu)操作系統(tǒng)平臺、系統(tǒng)體系結(jié)構(gòu)和網(wǎng)絡(luò)傳輸協(xié)議,靈活的開發(fā)無縫集成的系統(tǒng)、網(wǎng)絡(luò)和服務(wù)管理應(yīng)用它提供了用戶界面指導(dǎo)、Java類和開發(fā)集成系統(tǒng)、網(wǎng)絡(luò)及網(wǎng)絡(luò)管理應(yīng)用的規(guī)范。

    ????? 管理對象是JMX應(yīng)用程序的核心。JMX結(jié)構(gòu)包括:支持Java的Web瀏覽器用戶接口,管理運行模塊ARM(Admin Runtime Module)和應(yīng)用。這三個部件之間通過RMIRemote Method Invocation)進(jìn)行通信。這里需要說明的是,RMI是使得一個Java虛擬機(jī)JVM)上運行的程序可以調(diào)用遠(yuǎn)程服務(wù)器上另一個JVM總的對象。

    ????? 用戶接口用來發(fā)布管理操作,這些操作可以間接的通過瀏覽器或通過單獨的應(yīng)用程序來激發(fā)。管理運行模塊用來給應(yīng)用提供實例化的管理對象。它包括Agent對象接口,通知接口和被管數(shù)據(jù)接口。應(yīng)用指的是那些被管設(shè)備單元。

    ????? JMX是一個完整的網(wǎng)絡(luò)管理應(yīng)用程序開發(fā)環(huán)境,它同時提供了:廠商需要收集的完整的特性清單,可生成資源清單表格,圖形化的用戶接口;訪問SNMP的網(wǎng)絡(luò)API;主機(jī)間遠(yuǎn)程過程調(diào)用數(shù)據(jù)庫訪問方法。

    ????? JMX這一輕型的管理基礎(chǔ)結(jié)構(gòu),價值在于對被管理資源的服務(wù)實現(xiàn)了抽象,提供了低層的基本類集合,開發(fā)人員在保證大多數(shù)的公共管理類的完整性和一致性的前提下,進(jìn)行擴(kuò)展以滿足特定網(wǎng)絡(luò)管理應(yīng)用的需要。

    ????? JMX注重于構(gòu)造管理工具的軟件框架,并盡量采用已成熟的技術(shù)。

    ????? JMX可以用來管理網(wǎng)絡(luò),設(shè)備,應(yīng)用程序等資源,當(dāng)前規(guī)范為1.2版。

    一、Java管理擴(kuò)展JMX的優(yōu)點

    ????? 1:可以非常容易的使應(yīng)用程序具有被管理的功能
    ????? 2:提供具有高度伸縮性的架構(gòu)
    每個JMX Agent服務(wù)可以很容易的放入到Agent中,每個JMX的實現(xiàn)都提供幾個核心的Agent服務(wù),你也可以自己編寫服務(wù),服務(wù)可以很容易的部署,取消部署。
    ????? 3:主要提供接口,允許有不同的實現(xiàn)


    二、Java管理擴(kuò)展JMX的體系結(jié)構(gòu)

    JMX框架

    ????? 1)設(shè)備層(Instrumentation Level):主要定義了信息模型。在JMX中,各種管理對象以管理構(gòu)件的形式存在,需要管理時,向MBean服務(wù)器進(jìn)行注冊。該層還定義了通知機(jī)制以及一些輔助元數(shù)據(jù)類。
    ????? 2)代理層(Agent Level):主要定義了各種服務(wù)以及通信模型。該層的核心是一個MBean服務(wù)器,所有的管理構(gòu)件都需要向它注冊,才能被管理。注冊在MBean服務(wù)器上管理構(gòu)件并不直接和遠(yuǎn)程應(yīng)用程序進(jìn)行通信,它們通過協(xié)議適配器和連接器進(jìn)行通信。而協(xié)議適配器和連接器也以管理構(gòu)件的形式向MBean服務(wù)器注冊才能提供相應(yīng)的服務(wù)。
    ????? 3)分布服務(wù)層(Distributed Service Level):主要定義了能對代理層進(jìn)行操作的管理接口和構(gòu)件,這樣管理者就可以操作代理。然而,當(dāng)前的JMX規(guī)范并沒有給出這一層的具體規(guī)范。
    ????? 4)附加管理協(xié)議API:定義的API主要用來支持當(dāng)前已經(jīng)存在的網(wǎng)絡(luò)管理協(xié)議,如SNMP、TMN、CIM/WBEM等。


    ????? 1.2 設(shè)備層(Instrumentation Level)
    ????? 該層定義了如何實現(xiàn)JMX管理資源的規(guī)范。一個JMX管理資源可以是一個Java應(yīng)用、一個服務(wù)或一個設(shè)備,它們可以用Java開發(fā),或者至少能用Java進(jìn)行包裝,并且能被置入JMX框架中,從而成為JMX的一個管理構(gòu)件(Managed Bean),簡稱MBean。管理構(gòu)件可以是標(biāo)準(zhǔn)的,也可以是動態(tài)的,標(biāo)準(zhǔn)的管理構(gòu)件遵從JavaBeans構(gòu)件的設(shè)計模式;動態(tài)的管理構(gòu)件遵從特定的接口,提供了更大的靈活性。

    ????? 該層還定義了通知機(jī)制以及實現(xiàn)管理構(gòu)件的輔助元數(shù)據(jù)類。


    ????? 1.2.1 管理構(gòu)件(MBean)
    ????? 在JMX規(guī)范中,管理構(gòu)件定義如下:它是一個能代表管理資源的Java對象,遵從一定的設(shè)計模式,還需實現(xiàn)該規(guī)范定義的特定的接口。該定義了保證了所有的管理構(gòu)件以一種標(biāo)準(zhǔn)的方式來表示被管理資源。

    ????? 管理接口就是被管理資源暴露出的一些信息,通過對這些信息的修改就能控制被管理資源。一個管理構(gòu)件的管理接口包括:
    ????? 1)能被接觸的屬性值;
    ????? 2)能夠執(zhí)行的操作;
    ????? 3)能發(fā)出的通知事件;
    ????? 4)管理構(gòu)件的構(gòu)建器。

    ????? 管理構(gòu)件通過公共的方法以及遵從特定的設(shè)計模式封裝了屬性和操作,以便暴露給管理應(yīng)用程序。例如,一個只讀屬性在管理構(gòu)件中只有Get方法,既有Get又有Set方法表示是一個可讀寫的屬性。

    ????? 其余的JMX的構(gòu)件,例如JMX代理提供的各種服務(wù),也是作為一個管理構(gòu)件注冊到代理中才能提供相應(yīng)的服務(wù)。

    ????? JMX對管理構(gòu)件的存儲位置沒有任何限制,管理構(gòu)件可以存儲在運行JMX代理的Java虛擬機(jī)的類路徑的任何位置,也可以從網(wǎng)絡(luò)上的任何位置導(dǎo)入。

    ????? JMX定義了四種管理構(gòu)件:標(biāo)準(zhǔn)、動態(tài)、開放和模型管理構(gòu)件。每一種管理構(gòu)件可以根據(jù)不同的環(huán)境需要進(jìn)行制定。

    ????? 1.標(biāo)準(zhǔn)管理構(gòu)件

    ????? 標(biāo)準(zhǔn)管理構(gòu)件的設(shè)計和實現(xiàn)是最簡單的,它們的管理接口通過方法名來描述。標(biāo)準(zhǔn)管理構(gòu)件的實現(xiàn)依靠一組命名規(guī)則,稱之為設(shè)計模式。這些命名規(guī)則定義了屬性和操作。檢查標(biāo)準(zhǔn)管理構(gòu)件接口和應(yīng)用設(shè)計模式的過程被稱為內(nèi)省(Introspection)[22]。JMX代理通過內(nèi)省來查看每一個注冊在MBean 服務(wù)器上的管理構(gòu)件的方法和超類,看它是否遵從一定設(shè)計模式,決定它是否代表了一個管理構(gòu)件,并辨認(rèn)出它的屬性和操作。

    ????? 2.動態(tài)管理構(gòu)件

    ????? 動態(tài)管理構(gòu)件提供了更大的靈活性,它可以在運行期暴露自己的管理接口。它的實現(xiàn)是通過實現(xiàn)一個特定的接口DynamicMBean(如下圖)。


    ?


    ????? JMX代理通過getMBeanInfo方法來獲取該動態(tài)管理構(gòu)件暴露的管理接口,該方法返回的對象是MbeanInfo類的實例,包含了屬性和操作的簽名。由于該方法的調(diào)用是發(fā)生在動態(tài)管理構(gòu)件向MBean服務(wù)器注冊以后,因此管理接口是在運行期獲取的。不同于標(biāo)準(zhǔn)管理構(gòu)件,JMX代理不需要通過內(nèi)省機(jī)制來確定動態(tài)管理構(gòu)件的管理接口。由于DynamicMBean的接口是不變的,因此可以屏蔽實現(xiàn)細(xì)節(jié)。由于這種在運行期獲取管理接口的特性,動態(tài)管理構(gòu)件提供了更大的靈活性。

    ????? 3.開放管理構(gòu)件

    ????? 開放管理構(gòu)件是一種專門化的動態(tài)管理構(gòu)件,其中所有的與該管理構(gòu)件相關(guān)的參數(shù)、返回類型和屬性都圍繞一組預(yù)定義的數(shù)據(jù)類型(String、Integer、Float 等)來建立,并且通過一組特定的接口來進(jìn)行自我描述。JMX代理通過獲得一個OpenMBeanInfo對象來獲取開放管理構(gòu)件的管理接口,OpenMBeanInfo是MbeanInfo的子類。

    ????? 4.模型管理構(gòu)件

    ????? 模型管理構(gòu)件也是一種專門化的動態(tài)管理構(gòu)件。它是預(yù)制的、通用的和動態(tài)的 MBean 類,已經(jīng)包含了所有必要缺省行為的實現(xiàn),并允許在運行時添加或覆蓋需要定制的那些實現(xiàn)。JMX規(guī)范規(guī)定該類必須實現(xiàn)為javax.management.modelmbean.RequiredModelMBean,管理者要做的就是實例化該類,并配置該構(gòu)件的默認(rèn)行為并注冊到JMX代理中,即可實現(xiàn)對資源的管理。JMX代理通過獲得一個ModelMBeanInfo對象來獲取管理接口。

    ????? 模型管理構(gòu)件具有以下新的特點[23]:
    ????? 1)持久性
    ????? 定義了持久機(jī)制,可以利用Java的序列化或JDBC來存儲模型MBean的狀態(tài)。
    ????? 2)通知和日志功能
    ????? 能記錄每一個發(fā)出的通知,并能自動發(fā)出屬性變化通知。
    ????? 3)屬性值緩存
    ????? 具有緩存屬性值的能力。


    ????? 1.2.2 通知模型
    ????? 一個管理構(gòu)件提供的管理接口允許代理對其管理資源進(jìn)行控制和配置。然而,對管理復(fù)雜的分布式系統(tǒng)來說,這些接口只是提供了一部分功能。通常,管理應(yīng)用程序需要對狀態(tài)變化或者當(dāng)特別情況發(fā)生變化時作出反映。

    ????? 為此,JMX定義了通知模型。通知模型僅僅涉及了在同一個JMX代理中的管理構(gòu)件之間的事件傳播。JMX通知模型依靠以下幾個部分:
    ????? 1)Notification,一個通用的事件類型,該類標(biāo)識事件的類型,可以被直接使用,也可以根據(jù)傳遞的事件的需要而被擴(kuò)展。
    ????? 2)NotificationListener接口,接受通知的對象需實現(xiàn)此接口。
    ????? 3)NotificationFilter接口,作為通知過濾器的對象需實現(xiàn)此接口,為通知監(jiān)聽者提供了一個過濾通知的過濾器。
    ????? 4)NotificationBroadcaster接口,通知發(fā)送者需實現(xiàn)此接口,該接口允許希望得到通知的監(jiān)聽者注冊。

    ????? 發(fā)送一個通用類型的通知,任何一個監(jiān)聽者都會得到該通知。因此,監(jiān)聽者需提供過濾器來選擇所需要接受的通知。

    ????? 任何類型的管理構(gòu)件,標(biāo)準(zhǔn)的或動態(tài)的,都可以作為一個通知發(fā)送者,也可以作為一個通知監(jiān)聽者,或兩者都是。


    ????? 1.2.3 輔助元數(shù)據(jù)類
    ????? 輔助元數(shù)據(jù)類用來描述管理構(gòu)件。輔助元數(shù)據(jù)類不僅被用來內(nèi)省標(biāo)準(zhǔn)管理構(gòu)件,也被動態(tài)管理構(gòu)件用來進(jìn)行自我描述。這些類根據(jù)屬性、操作、構(gòu)建器和通告描述了管理接口。JMX代理通過這些元數(shù)據(jù)類管理所有管理構(gòu)件,而不管這些管理構(gòu)件的類型。

    ????? 部分輔助元類如下:
    ????? 1)MBeanInfo--包含了屬性、操作、構(gòu)建器和通知的信息。
    ????? 2)MBeanFeatureInfo--為下面類的超類。
    ????? 3)MBeanAttributeInfo--用來描述管理構(gòu)件中的屬性。
    ????? 4)MBeanConstructorInfo--用來描述管理構(gòu)件中的構(gòu)建器。
    ????? 5)MBeanOperationInfo--用來描述管理構(gòu)件中的操作。
    ????? 6)MBeanParameterInfo--用來描述管理構(gòu)件操作或構(gòu)建器的參數(shù)。
    ????? 7)MBeanNotificationInfo--用來描述管理構(gòu)件發(fā)出的通知。


    ????? 1.3 代理層
    ????? 代理層是一個運行在Java虛擬機(jī)上的管理實體,它活躍在管理資源和管理者之間,用來直接管理資源,并使這些資源可以被遠(yuǎn)程的管理程序所控制。代理層由一個MBean服務(wù)器和一系列處理被管理資源的服務(wù)所組成。下圖表示了代理層的組成:


    ?

    ?

    ????? 1.3.1 MBean服務(wù)器
    ????? Mbean服務(wù)器為代理層的核心,設(shè)備層的所有管理構(gòu)件都在其注冊,管理者只用通過它才能訪問管理構(gòu)件。
    ????? 管理構(gòu)件可以通過以下三種方法實例化和注冊:
    ????? 1)通過另一個管理構(gòu)件
    ????? 2)管理代理本身
    ????? 3)遠(yuǎn)程應(yīng)用程序
    ????? 注冊一個管理構(gòu)件時,必須提供一個唯一的對象名。管理應(yīng)用程序用這個對象名進(jìn)行標(biāo)識管理構(gòu)件并對其操作。這些操作包括:
    ????? 1)發(fā)現(xiàn)管理構(gòu)件的管理接口
    ????? 2)讀寫屬性值
    ????? 3)執(zhí)行管理構(gòu)件中定義的操作
    ????? 4)獲得管理構(gòu)件發(fā)出的通告
    ????? 5)基于對象名和屬性值來查詢管理構(gòu)件


    ????? 1.3.2 協(xié)議適配器和連接器
    ????? MBean服務(wù)器依賴于協(xié)議適配器和連接器來和運行該代理的Java虛擬機(jī)之外的管理應(yīng)用程序進(jìn)行通信。協(xié)議適配器通過特定的協(xié)議提供了一張注冊在MBean服務(wù)器的管理構(gòu)件的視圖。例如,一個HTML適配器可以將所有注冊過的管理構(gòu)件顯示在Web 頁面上。不同的協(xié)議,提供不同的視圖。

    ????? 連接器還必須提供管理應(yīng)用一方的接口以使代理和管理應(yīng)用程序進(jìn)行通信,即針對不同的協(xié)議,連接器必須提供同樣的遠(yuǎn)程接口來封裝通信過程。當(dāng)遠(yuǎn)程應(yīng)用程序使用這個接口時,就可以通過網(wǎng)絡(luò)透明的和代理進(jìn)行交互,而忽略協(xié)議本身。

    ????? 適配器和連接器使MBean服務(wù)器與管理應(yīng)用程序能進(jìn)行通信。因此,一個代理要被管理,它必須提供至少一個協(xié)議適配器或者連接器。面臨多種管理應(yīng)用時,代理可以包含各種不同的協(xié)議適配器和連接器。

    ????? 當(dāng)前已經(jīng)實現(xiàn)和將要實現(xiàn)的協(xié)議適配器和連接器包括:
    ????? 1)RMI連接器
    ????? 2)SNMP協(xié)議適配器
    ????? 3)IIOP協(xié)議適配器
    ????? 4)HTML協(xié)議適配器
    ????? 5)HTTP連接器


    ????? 1.3.3 代理服務(wù)
    ????? 代理服務(wù)可以對注冊的管理構(gòu)件執(zhí)行管理功能。通過引入智能管理,JMX可以幫助我們建立強(qiáng)有力的管理解決方案。代理服務(wù)本身也是作為管理構(gòu)件而存在,也可以被MBean服務(wù)器控制。

    ????? JMX規(guī)范定義了代理服務(wù)有:
    ????? 1)動態(tài)類裝載--通過管理小程序服務(wù)可以獲得并實例化新的類,還可以使位于網(wǎng)絡(luò)上的類庫本地化。
    ????? 2)監(jiān)視服務(wù)--監(jiān)視管理構(gòu)件的屬性值變化,并將這些變化通知給所有的監(jiān)聽者。
    ????? 3)時間服務(wù)--定時發(fā)送一個消息或作為一個調(diào)度器使用。
    ????? 4)關(guān)系服務(wù)--定義并維持管理構(gòu)件之間的相互關(guān)系。

    ????? 1.動態(tài)類裝載

    ????? 動態(tài)類裝載是通過m-let(management applet)服務(wù)來實現(xiàn)的,它可以從網(wǎng)絡(luò)上的任何URL處下載并實例化管理構(gòu)件,然后向MBean服務(wù)器注冊。在一個M-let服務(wù)過程中,首先是下載一個m-let文本文件,該文件是XML格式的文件,文件的內(nèi)容標(biāo)識了管理構(gòu)件的所有信息,比如構(gòu)件名稱、在MBean服務(wù)器中唯一標(biāo)識該構(gòu)件的對象名等。然后根據(jù)這個文件的內(nèi)容,m-let服務(wù)完成剩余的任務(wù)。下圖例示這一過程:


    ?


    ????? 2.監(jiān)視服務(wù)

    ????? 通過使用監(jiān)視服務(wù),管理構(gòu)件的屬性值就會被定期監(jiān)視,從而保證始終處于一個特定的范圍。當(dāng)監(jiān)視的屬性值的變化超出了預(yù)期定義的范圍,一個特定的通告就會發(fā)出。JMX規(guī)范當(dāng)前規(guī)定了三種監(jiān)視器:

    ????? 1)計數(shù)器監(jiān)視器,監(jiān)視計數(shù)器類型的屬性值,通常為整型,且只能按一定規(guī)律遞增。
    ????? 2)度量監(jiān)視器,監(jiān)視度量類型的屬性值,通常為實數(shù),值能增能減。
    ????? 3)字符串監(jiān)視器,監(jiān)視字符串類型的屬性值。

    ????? 每一個監(jiān)視器都是作為一個標(biāo)準(zhǔn)管理構(gòu)件存在的,需要提供服務(wù)時,可以由相應(yīng)的管理構(gòu)件或遠(yuǎn)程管理應(yīng)用程序動態(tài)創(chuàng)建并配置注冊使用。

    ????? 下圖例示了計數(shù)器監(jiān)視器的使用情況:


    ?


    ????? 3.時間服務(wù)

    ????? 時間服務(wù)可以在制定的時間和日期發(fā)出通告,也可以定期的周期性的發(fā)出通告,依賴于管理應(yīng)用程序的配置。時間服務(wù)也是一個管理構(gòu)件,它能幫助管理應(yīng)用程序建立一個可配置的備忘錄,從而實現(xiàn)智能管理服務(wù)。

    ????? 4.關(guān)系服務(wù)

    ????? JMX規(guī)范定義了管理構(gòu)件之間的關(guān)系模型。一個關(guān)系是用戶定義的管理構(gòu)件之間的N維聯(lián)系。

    ????? 關(guān)系模型定義如下一些術(shù)語:

    ????? 1)角色:就是是一個關(guān)系中的一類成員身份,它含有一個角色值。
    ????? 2)角色信息:描述一個關(guān)系中的一個角色。
    ????? 3)關(guān)系類型:由角色信息組成,作為創(chuàng)建和維持關(guān)系的模板。
    ????? 4)關(guān)系:管理構(gòu)件之間的當(dāng)前聯(lián)系,且必須滿足一個關(guān)系類型的要求。
    ????? 5)角色值:在一個關(guān)系中當(dāng)前能滿足給定角色的管理構(gòu)件的列表。
    ????? 6)關(guān)系服務(wù):是一個管理構(gòu)件,能接觸和維持所有關(guān)系類型和關(guān)系實例之間的一致性。

    ????? 在關(guān)系服務(wù)中,管理構(gòu)件之間的關(guān)系由通過關(guān)系類型確定的關(guān)系實例來維護(hù)。僅僅只有注冊到MBean服務(wù)器上并且能被對象名標(biāo)識的管理構(gòu)件才能成為一個關(guān)系的成員。關(guān)系服務(wù)從來就不直接操作它的成員--管理構(gòu)件,為了方便查找它僅僅提供了對象名。

    ????? 關(guān)系服務(wù)能鎖定不合理關(guān)系類型的創(chuàng)建,同樣,不合理的關(guān)系的創(chuàng)建也會被鎖定。角色值的修正也要遵守一致性檢查。

    ????? 由于關(guān)系是定義在注冊的管理構(gòu)件之間的聯(lián)系,所以當(dāng)其中的管理構(gòu)件卸載時,就會更改關(guān)系。關(guān)系服務(wù)會自動更改角色值。所有對關(guān)系實例的操作比如創(chuàng)建、更新、刪除等都會使關(guān)系服務(wù)發(fā)出通告,通告會提供有關(guān)這次操作的信息。

    ????? JMX關(guān)系模型只能保證所有的管理構(gòu)件滿足它的設(shè)計角色,也就是說,不允許一個管理構(gòu)件同時出現(xiàn)在許多關(guān)系中。


    ????? 1.4 分布服務(wù)層
    ????? 當(dāng)前,SUN并沒有給出這一層的具體規(guī)范,下面給出的只是一個簡要描述。

    ????? 該層規(guī)定了實現(xiàn)JMX應(yīng)用管理平臺的接口。這一層定義了能對代理層進(jìn)行操作的管理接口和組件。這些組件能:
    ????? 1)為管理應(yīng)用程序提供一個接口,以便它通過一個連接器能透明和代理層或者JMX管理資源進(jìn)行交互。
    ????? 2)通過各種協(xié)議的映射(如SNMP、HTML等),提供了一個JMX代理和所有可管理組件的視圖。
    ????? 3)分布管理信息,以便構(gòu)造一個分布式系統(tǒng),也就是將高層管理平臺的管理信息向其下眾多的JMX代理發(fā)布。
    ????? 4)收集多個JMX 代理端的管理信息并根據(jù)管理終端用戶的需要篩選用戶感興趣的信息并形成邏輯視圖送給相應(yīng)的終端用戶。
    ????? 5)提供了安全保證。

    ????? 通過管理應(yīng)用層和另一管理代理和以及他的設(shè)備層的聯(lián)合,就可以為我們提供一個完整的網(wǎng)絡(luò)管理的解決方案。這個解決方案為我們帶來了獨一無二的一些優(yōu)點:輕便、根據(jù)需要部署、動態(tài)服務(wù)、還有安全性。


    ????? 1.5 附加管理協(xié)議API
    ????? 該層提供了一些API來支持當(dāng)前已經(jīng)存在的一些管理協(xié)議。

    ????? 這些附加的協(xié)議API并沒有定義管理應(yīng)用的功能,或者管理平臺的體系結(jié)構(gòu),他們僅僅定義了標(biāo)準(zhǔn)的Java API和現(xiàn)存的網(wǎng)絡(luò)管理技術(shù)通信,例如SNMP。

    ????? 網(wǎng)絡(luò)管理平臺和應(yīng)用的開發(fā)者可以用這些API來和他們的管理環(huán)境進(jìn)行交互,并將這個交互過程封裝在一個JMX管理資源中。例如,通過SNMP可以對一個運行有SNMP代理的交換機(jī)進(jìn)行管理,并將這些管理接口封裝成為一個管理構(gòu)件。在動態(tài)網(wǎng)絡(luò)管理中,可以隨時更換這些管理構(gòu)件以適應(yīng)需求

    ????? 這些API可以幫組開發(fā)者根據(jù)最通常的工業(yè)標(biāo)準(zhǔn)來部署他們的管理平臺和應(yīng)用。新的網(wǎng)路管理的解決方案可以和現(xiàn)存的基礎(chǔ)結(jié)構(gòu)合為一體,這樣,現(xiàn)存的網(wǎng)絡(luò)管理也能很好的利用基于Java技術(shù)的網(wǎng)絡(luò)管理應(yīng)用。

    ????? 這些API目前在JCPJava Community Process)內(nèi)作為獨立的JSR(Java Specification Request)開發(fā)。

    ????? 他們包括:
    ????? 1)SNMP Manager API
    ????? 2)CIM/WBEM manager and protocol API


    ????? 1.6 JMX的當(dāng)前實現(xiàn)及應(yīng)用
    ????? 自從SUN發(fā)布了JMX規(guī)范,許多大公司紛紛行動起來,實現(xiàn)規(guī)范或者實現(xiàn)相應(yīng)的基于JMX的網(wǎng)絡(luò)管理系統(tǒng),下面列出了當(dāng)前的主要實現(xiàn)及應(yīng)用情況:

    ????? 1)SUN為JMX規(guī)范了作出了相應(yīng)的參考實現(xiàn),并在此基礎(chǔ)上開發(fā)了一個全新的用于網(wǎng)絡(luò)管理的產(chǎn)品JDMK(Java動態(tài)管理工具集),其中定義了資源的開發(fā)過程和方法、動態(tài)JMX代理的實現(xiàn)、遠(yuǎn)程管理應(yīng)用的實現(xiàn)。同時,JDMK也提供了一個完整的體系結(jié)構(gòu)用來構(gòu)造分布式的網(wǎng)絡(luò)管理系統(tǒng),并提供了多種協(xié)議適配器和連接器,如SNMP協(xié)議適配器、HTML協(xié)議適配器、HTTP連接器、RMI連接器。
    ????? 2)IBM Tivoli實現(xiàn)了JMX規(guī)范的產(chǎn)品為TivoliJMX,它為JAVA管理應(yīng)用程序和網(wǎng)絡(luò)提供了架構(gòu)、設(shè)計模式、一些API集和一些服務(wù)。
    ????? 3)Adventnet開發(fā)的關(guān)于JMX的產(chǎn)品為AdventNet Agent Toolkit,它使得定義新的SNMP MIB、開發(fā)JMX和Java SNMP Agent的過程自動化。
    ????? 4)JBoss實現(xiàn)的J2EE應(yīng)用服務(wù)器JMX為微內(nèi)核,各個模塊以管理構(gòu)件的形式提供相應(yīng)的服務(wù)。
    ????? 5)BEA的Weblogic應(yīng)用服務(wù)器也將JMX技術(shù)作為自己的管理基礎(chǔ)。
    ????? 6)金蝶的Apusic也是一個以JMX為內(nèi)核開發(fā)出的J2EE應(yīng)用服務(wù)器。


    三、JMX的好處

    ????? 。可減少對JAVA應(yīng)用實施管理的投資
    ????? 。提供了一個可伸縮的管理框架
    ????? 。集成現(xiàn)有的管理方案:如:WBEM,SNMP,TMN
    ????? 。使用現(xiàn)有的標(biāo)準(zhǔn)JAVA技術(shù)
    ????? 。能使用未來的一些管理概念:如Jini連接技術(shù)、通用即插即用、服務(wù)定位協(xié)議(Service Location Protocol)
    ????? 。只定義了一些可以訪問的接口

    四、JMX架構(gòu)的了解

    ????? JMX應(yīng)該說是關(guān)于網(wǎng)絡(luò)應(yīng)用管理的的框架,如果你開發(fā)了一個比較復(fù)雜的系統(tǒng),無疑你要提供這個系統(tǒng)的自身管理 系統(tǒng),JMX更多應(yīng)用是體現(xiàn)在Server上,如果你要使用java開發(fā)一個自己Server或復(fù)雜的應(yīng)用系統(tǒng),那么推薦你基于JMX架構(gòu)來開發(fā), JBoss 3.0 weblogic等就是基于JMX開發(fā)的符合J2EE規(guī)范的服務(wù)器軟件。

    ????? 了解JMX可以使你深入了解J2EE服務(wù)器, 為什么我們平時說 "EJB"是個比較"Weight"的方案選擇,其中一個原因是J2EE服務(wù)器軟件本身 也是你的系統(tǒng)中一部分,它作為你系統(tǒng)的容器,對你的系統(tǒng)有至關(guān)重要的作用,如果無法直接介入 管理或“調(diào)教”它,那么無疑你的系統(tǒng)本身存在著隱含的危險, 現(xiàn)在,通過JMX,你現(xiàn)在可以深入到你J2EE容器內(nèi)部的管理了。 (好像國內(nèi)出現(xiàn)了第一個自己J2ee服務(wù)器,不知道那是不是基于JMX開發(fā)的?)

    ????? J2EE并不能概括所有的應(yīng)用領(lǐng)域,比如對速度和性能要求極高的游戲或股票行情等系統(tǒng)就需要自己直接來開發(fā)Server, 如果是能夠基于JMX開發(fā),那么可以說就大大提高編寫管理程序的效率,可以將你的模塊變成JMX的MBean,可以通過Agent在程序內(nèi)部或者通過 WEB管理頁面對你的MBean模塊進(jìn)行初始化 重啟 以及參數(shù)設(shè)置。

    ????? JMX的好處還有:可以方便整合連接現(xiàn)有的Java技術(shù),如JNDI JDBC JTS及其它。特別是能夠使用Jini的查詢 發(fā)現(xiàn)機(jī)制以及協(xié)議,我們知道,Jini提供了一種服務(wù)的查詢和發(fā)現(xiàn)機(jī)制,這些services都可以通過JMX 來實現(xiàn)管理。

    ????? 現(xiàn)在我們開始JMX的了解:

    ????? 1.到j(luò)ava.sun.com首頁的JMX頁面,下載JMX的規(guī)定說明和Samples程序。
    ????? 2.按照JMX的說明進(jìn)行一次Tutorial,了解如何加入 刪除 配置一個MBean,Tutorial中是以SimpleMBean為例,那么我們能否建立一個自己的MBean?

    ????? 我們來做一個Hello 的MBean,這里有一個小關(guān)鍵點,你的class取名有個規(guī)則, 需要以MBean為結(jié)尾,如這里我們?nèi)∶麨镠elloMbean:


    public interface HelloMBean {

      // management attributes
      public String getName();
      public void setName(String name);

      // management operations
      public void print();

    }

    ????? 在這個Class里,有一個隱含attributes: name, 提供了set和get的方法,同時有一個操作方法print():

    ????? 再定義一個concrete類:

    public class Hello implements HelloMBean {

      private String name = "";

      public String getName() {
      return name;
      }

      public void setName(String name) {
      this.name = name;
      }

      public void print() {
      System.out.println("Hello, " + name + "!!" );
      }
    }


    ????? 這樣一個簡單的MBean就做好了,我們可以通過admin界面加入這個Hello,

    ????? 再按 Tutorial啟動BaseAgent,在Agent Administration中參考Simple填入:
    Domain: Standard_Hello_MBeans

    Keys : name=Hello,number=1

    Java Class: Hello

    ????? 將出現(xiàn)Create Successful信息。進(jìn)入MBean View 給Name賦值,點按Apply ,然后再按print,這是你的Hello中的方法,在控制臺你會看到輸出。

    ????? 是不是很驚奇Hello中的 attributes 和operations能被動態(tài)的訪問和控制? 已經(jīng)隱約感到JMX的架構(gòu)原理了吧?

    ????? 下面再深入明確一些概念:
    ????? 上面HelloMBean資源是通過admin這樣的HTTP WEB界面管理,這種管理資源方式是屬于JMX的Distributed服務(wù)層, JMX 通過Distributed層能夠部署和管理MBean資源。就象上面的例子,是通過HtmlAdaptor提供的HTTP WEB界面來方面的維護(hù)管理HelloMBean.

    ????? 那么我們能否在程序中自動管理和部署我的MBean?當(dāng)然可以,這是通過Agent層來完成,現(xiàn)在我們已經(jīng)有了這個層次,MBean所在的資源層,
    最外面的Distributed服務(wù)層,Distributed服務(wù)層是通過Agent層來訪問MBean資源的,看看下面來自Sun公司JMX規(guī)定的架構(gòu)圖:

    ????? 從圖中看出,Agent Level(Agent層)包括MBean Server和Agent Services,那么我們來做一個上面例子HelloMBean的Agent:

    // CREATE the MBeanServer
    //
    System.out.println("\n\tCREATE the MBeanServer.");
    MBeanServer server = MBeanServerFactory.createMBeanServer();

    // CREATE Registe HelloMBean
    //
    System.out.println("\n\tCREATE, REGISTER a new Hello Standard_MBean:");
    HelloMBean helloMBean = new Hello();

    ObjectName hello_name = null;
    try {
    hello_name = new ObjectName("Standard_Hello_MBeans:name=Hello,number=1");
    System.out.println("\tOBJECT NAME = " + hello_name);

    //將HelloMBean注冊到MBeanServer中去
    server.registerMBean(helloMBean, hello_name);
    }
    catch (Exception e) {
    e.printStackTrace();
    return;
    }

    ????? 向MBeanServer注冊后,以后JMX就知道有了這個HelloMBean資源。

    ????? 管理一個agent的MBean資源或使用它提供的服務(wù)必須通過一個protocol adaptor 或者connector,adaptor 或者connector屬于Distributed layer level(Distributed服務(wù)層),我們上面例子中通過HTTP WEB界面管理HelloMBean就是瀏覽器通過HtmlAdaptor這個adaptor來實現(xiàn)的。

    posted on 2007-01-18 14:36 ???MengChuChen 閱讀(843) 評論(0)  編輯  收藏 所屬分類: webotx

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久综合AV免费观看| 亚洲乱码日产一区三区| 免费精品视频在线| 亚洲精品制服丝袜四区| 波多野结衣在线免费观看| 美女羞羞喷液视频免费| 一区视频免费观看| 四虎永久免费网站免费观看| 免费观看成人久久网免费观看| 亚洲精品无码国产| 免费看成人AA片无码视频羞羞网| 亚洲videosbestsex日本| 在线观看特色大片免费视频| 免费看黄福利app导航看一下黄色录像| 亚洲一区二区在线视频| 久久精品中文字幕免费| 亚洲今日精彩视频| 国产精品二区三区免费播放心| 久久久久国产免费| 真人无码作爱免费视频| 免费看男女下面日出水视频 | 亚洲欧洲免费视频| 国产精品自拍亚洲| 亚洲精品国产福利在线观看| 18禁无遮挡无码国产免费网站| 亚洲剧情在线观看| 亚洲人成无码网站| 日日夜夜精品免费视频| 久久久久久曰本AV免费免费| 国产成人无码免费网站| 亚洲中文字幕久久精品蜜桃| 凹凸精品视频分类国产品免费| 日韩版码免费福利视频| 国偷自产一区二区免费视频| 天堂亚洲免费视频| 亚洲国产综合AV在线观看| 免费人成无码大片在线观看| 两个人看的www免费视频中文| 亚洲国产美女精品久久| 国产精品色午夜免费视频| 日本人的色道免费网站|