複製鏈接
請複製以下鏈接發送給好友

MBean

鎖定
描述一個可管理的資源。是一個java對象,遵循以下一些規則:1.必須是公用的,非抽象的 2.必須有至少一個公用的構造器 3.必須實現它自己的相應的MBean接口或者實現javax.management.DynamicMBean接口4.可選的,一個MBean可以實現javax.management.NotificationBroadcaster接口MBean的類型
外文名
MBean
類    型
標準MBean、動態MBean等
性    質
描述一個可管理的資源
註冊方法
2個

MBeanMBean的類型

標準MBean
動態MBean
模型MBean
開放MBean

MBean註冊 MBean

一個MBeanServer的主要職責是在一個JMX代理中維護一個MBean的註冊表.能夠以下面兩個方法中的任意一個註冊:
(1) 創建一個MBean實例並註冊它到MBeanServer用方法:
public ObjectInstance registerMBean(Object object, ObjectName name) 這裏,object是創建的MBean實例,name部分是MBean的一個唯一標誌符.
(2) 使用createMBean 方法中的一個:
createMBean方法使用java自省來創建一個MBean實例.對所有的createMBean方法,有兩個變量是通用的.
String classname -- 要創建的MBean的實例的類名.
ObjectName name -- MBean要註冊的對象名稱.
如果用兩個變量的createMBean構造器,缺省的類裝載器(class loader)用來裝載MBean類,MBean被使用缺省的構造器初始化.如果MBean已經被初始化,這個實例將被MBeanServer用第二個變量的對象名稱註冊.如果你想使用指定的類裝載器,那麼可以使用三個變量的構造器.這個類裝載器將被MBeanServer註冊為一個MBean.這個類裝載器的對象名稱將用做第三個變量.
當實例化一個類,如果任何參數必須傳入,那麼可以使用四個參數的createMBean方法.這個createMBean方法的最後的兩個參數分別包含對象數組(類的初始化必須的)和他們的署名.如果MBean類必須用其他指定的類裝載器裝載,那麼應該使用五個參數的構造器.

MBean註銷MBean

MBean能夠用MBeanServer 的下面方法註銷:
public void unregisterMBean(ObjectName name) 這裏name 是這個MBean實例註冊的對象名稱.
註銷MBean後, MBeanServer將不再保存任何這個MBean實例的關聯.
控制MBeanRegistration
JMX定義了一個接口叫MBeanRegistration.這個接口的目的是允許MBean開發者對在MBeanServer上註冊和註銷進行一些控制.這通過MBean實現javax.management.MBeanRegistration接口來達到.
MBeanRegistration接口定義註冊控制機制的行為.它定義了以下四個方法:
  • public ObjectName preRegister(MBeanServer mbs, ObjectName name)
  • public void postRegister
  • public void preDeRegister
  • public void postDeRegister
所有以上的方法都是回調方法,
MBeanServer將在恰當的時機調用這些方法.
如果一個MBean實現MBeanRegistration並且這個MBean被註冊,MBeanServer在註冊前調用 preRegister方法.這個方法返回的對象名稱將在MBean註冊過程中使用.在成功完成MBean註冊後,MBeanServer調用postRegister方法.
如果以上的MBean被註銷,在註銷前MBeanServer調用preDeRegister方法.如果註銷成功,MBeanServer調用postDeRegister方法.

MBean注意事項

於一個單一MBean類,多個實例能夠被創建,並能夠被註冊為註冊時MBean提供的對象名稱.
無論何時一個MBean被註冊,MBeanServer創建一個類型為 jmx.mbean.created 的消息. MBeanServerDelegate MBean 廣播這個消息到所有註冊的監聽者.
MBeanRegistration接口提供註冊和註銷過程監控的鈎點.