JMX術語
幾個月前學了一些JMX,但是現在翻開書一看,有的概念是不太清晰了,這裏參照JMX in Action的介紹JMX術語的章節,翻譯了其中的一部分內容,並加入了自己的看法。一些常用的JMX術語如下:
Manageable resource:
可被管理的資源可以是應用程序,設備或者存在的能夠被java程序所訪問或者包裝的實體。通過JMX可以管理這些資源。應用程序能夠暴露自己的組件,API或者附加的資源,使得JMX能夠管理應用程序。可被管理的資源甚至可以是網絡上的設備,例如打印機。可被管理的資源作爲一個實體被JMX MBean所管理。
MBean:
MBean(managed bean)是一個Java類,符合JXM specification所規定的命名和繼承規範。實例化的MBeans是Java對象,其中所暴露出來的接口(management interface)能夠操作和訪問manageable resources。這些接口是由MBean的屬性和操作組成。
Management application通過訪問MBean來訪問屬性和調用操作。MBean分三種類型:Standard,Dynamic和Model MBean.每一種類型都是針對於特定的manageable resource來使用的。
MBean Server:
MBean Server是一個能夠管理一組MBean的java類,是JMX管理環境的核心,是一個registry(通過查找MBean來註冊到MBean Server)。MBean server暴露已經註冊了的MBean的management interface,但是從來不暴露對註冊了的MBean的引用。另外,如果註冊的MBean的類型是不同的,但是MBean Server提供給用戶的是一個相同的接口,對於所有類型的MBean進行相同的處理。MBean Server也提供查找MBeans的方法,也可以註冊其他的對象作爲listener加到MBean上。
JMX agent:
JMX agent是一個Java process,能夠爲管理MBean的集合提供服務,是MBean Server的容器。這些服務可以是建立MBean的之間的關係,動態加載類,監控服務,作爲計時器。
JMX agent能夠擁有一個protocol adapters的集合和connectors,connectors能夠使得遠程的不同客戶利用該agent。Protocol adapters和connectors都是Java類(通常是作爲MBean存在的),能夠對協議(例如:Http或者SNMP)建立映射,或者將該代理暴露給遠程的連接(例如RMI或者Jini)。這意味着JMX agent能夠被各種各樣的管理協議和工具所用。
Protocol adapters和connectors
Protocol adapters和connectors是在JMX agent中的對象,將代理暴露給management applicaiton和protocols。例如一個將代理暴露給protocol的例子,agent中的SNMP adapter object能夠將SNMP協議映射到JMX agent中。另外,一個agent可以有一個RMI connector,該connector能夠讓management application通過RMI clients來打開代理和management application的通路,也就是將代理暴露給management application。Protocol adapters有一個在agent之內的簡單對象組成,然而connectors有一個對象在代理中,一個對象在client端。
一個代理可以有任意多個adapters和connectors,方便我們使用新的工具或者其他的以存在的管理協議和應用程序。代理能夠給應用程序提供靈活的管理,我們也可以將代理分佈到網絡中。
Management application
一個management application可以是任何的用戶程序,用於和任意多的JMX agent之間建立接口。對於一些設計好的符合JMX技術的management appliction,JMX agents能夠建立和該management application的聯繫,JMX agents也能夠建立和那些先前沒有考慮用JMX技術的management application建立聯繫。一方面,一個兼容JMX的management application能夠利用JMX的一些高級特性。令一方面,通過寫定製的adapters和connectors,能夠讓JMX agent有和現存的non-JMX manager建立關係,舉個例子:一個SNMP的manager,通過在agent中建立SNMP adapter,使得該agent能夠和SNMP的manager建立關係。
Notification
Notifications是java對象,用來包裝事件,報警和其他的常規信息。由MBeans和MBean Server所激發。其他的MBeans和java對象能夠被註冊爲listener來接收notification。
Instrumentation
Instrumentation是一個通過MBean或者MBean的集合來暴露可管理的資源的process,一個應用的Instrumentation發生在開發過程中,或者開發人員建立MBeans,這些MBean用到了已有的活動系統的API。