【JMX】什麼是MBeanServer
什麼是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
相關文章
- 關於JMX中MBeanServer的invoke()方法BeanServer
- JConsole、VisualVM 依賴的 JMX 技術到底是什麼LVM
- 什麼是cookie,什麼是sessionCookieSession
- 什麼是DNS,什麼是HostsDNS
- 什麼是模式? 什麼是框架?模式框架
- 這是什麼這是什麼
- 什麼是WebAuthn、FIDO 是什麼?Web
- ITIL是什麼意思?ITIL是什麼?
- 什麼是跨域,什麼是同源跨域
- 什麼是.NET平臺、什麼是c#、什麼是ASP.NET。C#ASP.NET
- ftp是什麼,ftp是什麼東西?FTP
- Java是什麼_Java是做什麼的?Java
- 什麼是正向代理?什麼是反向代理?
- NLA是什麼?NLA的原理是什麼?
- ###什麼是Linux核心###什麼是MMULinux
- 【jmx】JMX最佳實踐與詳解
- 為什麼要有 Servlet ,什麼是 Servlet 容器,什麼是 Web 容器?ServletWeb
- 什麼是塊元素?什麼是行內元素?
- 什麼是API介面,具體是什麼意思?API
- 什麼是框架?為什麼說 Angular 是框架?框架Angular
- 什麼是Unicode,什麼是UTF-8Unicode
- 什麼是藍海?什麼是紅海?什麼是網際網路思維?
- nginx 是什麼,能幹什麼?Nginx
- 什麼是Django?有什麼用途?Django
- 怎麼在 JMX 中使用連線池
- AI三重問:什麼是AI?什麼是AI模型?什麼是AI大模型?AI大模型
- 什麼是重繪repaint?什麼是迴流reflow?AI
- DHCP是什麼?DHCP伺服器是什麼意思?伺服器
- 什麼是CDN?CDN的技術原理是什麼?
- 交換機是什麼,它的工作原理是什麼
- GNU是什麼?和Linux是什麼關係?Linux
- 域名是什麼?申請域名的流程是什麼?
- 什麼是雲端計算?什麼是公司網盤?
- 什麼是eval()?eval是用來幹什麼的?
- 什麼是 Nginx?Nginx
- 什麼是PHPPHP
- 什麼是PodcastAST
- 什麼是Flutter?Flutter