【JMX】什麼是MBeanServer

走在路上的WWB發表於2012-02-14
9 什麼是MBeanServer       
141人閱讀評論(0)收藏舉報

什麼是MBeanServer 收藏
什麼是MBeanServer

MBeanServer是一個包含所有註冊MBean的倉庫.它是JMX代理層的核心.JMX1.0規範提供一個介面叫 javax.management.MBeanServer. 所有管理的在MBean操作通過MBeanServer執行.使用MBeanServer例項,你能夠管理所有MBean.每一個MBean具有一個唯一標誌,叫ObjectName.

什麼是ObjectName

ObjectName (javax.management.ObjectName)是一個類,唯一標誌一個在MBeanServer的MBean.這個物件名稱用於管理應用程式來標誌MBean以便操作能夠在適當的MBean上被呼叫.一個物件名稱包含兩部分.它們是

一個域名稱
一個沒有經過排序的一個或者多個關鍵屬性集
域名稱是一個大小寫敏感的字串,這個字串可以包括任何除[: , = * ?]之外的字元.

域名稱部分可以在一個物件名稱裡面忽略,如果這樣的話,MBeanServer能夠提供一個預設的域名稱.預設的域名稱將是DefaultDomain.

關鍵屬性集組織物件名稱的第二部分.一個關鍵屬性是一個名稱-值對,名稱不需對應MBean的任意屬性或者操作.關鍵屬性集必須包含至少一個關鍵屬性.它可以包含任意數量的關鍵屬性,這些關鍵屬性的順序沒有意義.

例如,如果我們描述一個海豚為MBean,那麼一套物件名稱可以是

Animals:name=dolphin,kind=fish

在這個物件名稱中,字串Animals 組成域名稱, 關鍵屬性集由兩個關鍵屬性描述:名稱和型別,它們的值分別為dolphin和fish.

通用的物件名稱描述 如以下語法:

[domain name]:property=value[,property=value]

如果域名稱被省略, MBeanServer將提供一個預設的域名稱叫[DefaultDomain].至少必須包含一個關鍵屬性.任意數量的關鍵屬性都可以新增進來.

建立一個MBeanServer 例項

MBeanServer例項能夠用MBeanServerFactory類提供的方法獲取.MBeanServerFactory類提供了以下方法來獲取MBeanServer例項:

public static MBeanServer createMBeanServer()

public static MBeanServer createMBeanServer(String domain)

public static MBeanServer newMBeanServer()

public static MBeanServer newMBeanServer(String domain)

在以上宣告的方法中,字串domain描述物件名稱(object name)的域部分.createMBeanServer方法和newMBeanServer方法返回一個MBeanServer例項.這兩個方法的區別在於createMBeanServer返回一個MBeanServer例項並且儲存這個例項的關聯以便能夠用findMBeanServer方法訪問這個例項.newMBeanServer方法將不儲存這個被建立的MBeanServer的例項的任何關聯.

如果使用一個變數的構造器建立一個MBeanServer例項,這個字串變數將作為建立的MBeanServer例項的域名.如果沒有變數的構造器被用來建立MBeanServer例項,那麼域名稱將用字串DefaultDomain.

查詢一個MBeanServer 例項

MBeanServerFactory類提供一個方法叫findMBeanServer用於一個指定MBeanServer例項或者所有MBeanServer例項能夠被獲取的情況.這個方法的宣告為

public static ArrayList findMBeanServer(String id) 這裡字串id表明 MBeanServer 的標誌符. 如果這個字串為null, 那麼返回所有在此JVM中註冊的 MBeanServer . 如果想返回相應指定的MBeanServer例項,那麼必須提供這個MBeanServer例項的相應字串id. 這個字串id能夠通過 MBeanServerDelegateMBean 的StringId 屬性獲取.

MBeanServerDelegate MBean

無論一個MBeanServer何時被初始化,MBeanServerDelegate類被作為一個MBean註冊,名字為JMImplementation:type=MBeanServerDelegate. 這個MBean提供關於這個 MBean 伺服器的資訊.MBeanServerDelegate MBean 具有七個只讀屬性,名字為 MBeanServerId, SpecificationName, SpecificationVersion, SpecificationVendor, ImplementationName, ImplementationVersion 和ImplementationVendor.

XMOJO專案5 的MBeanServerDelegate MBean 提供的屬性的預設值為:

屬性名稱 屬性值
SpecificationVersion 1.0, Final Release
SpecificationVendor Sun Microsystems Inc.
ImplementationVersion 5
ImplementationVendor XMOJO (sponsered by AdventNet Inc.)
ImplementationName The XMOJO Project
MBeanServerId _1
SpecificationName Java Management Extensions Instrumentation and Agent Specification 

MBeanServerDelegate MBean 響應 MBeanServer 發出的廣播訊息.無論何時一個MBean被註冊或者被登出,MBeanServerDelegate MBean 廣播型別分別為jmx.mbean.created和jmx.mbean.deleted的訊息到所有註冊的監聽器.

需要記住的幾點

MBeanServer 維護一個註冊的MBean.每一個MBean由一個唯一命名的模式叫物件名稱(object name)區分.
MBeanServer 例項能夠用MBeanServerFactory類的靜態方法獲得.
MBeanServerDelegate MBean 是一個MBeanServer的描述,也是MBeanServer發出訊息的廣播者.


本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/zhangliulin/archive/2008/02/17/2100192.aspx

上一篇:8、編寫程式來連線MBean 下一篇:10、註冊 MBean

相關文章