【JMX】什麼是MBeanServer

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