MBean

描述一個可管理的資源。是一個java對象,遵循以下一些規則:1.必須是公用的,非抽象的類 2.必須有至少一個公用的構造器 3.必須實現它自己的相應的MBean接口或者實現javax.management.DynamicMBean接口4.可選的,一個MBean可以實現javax.management.NotificationBroadcaster接口MBean的類型

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能夠用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被註冊,MBeanServer創建一個類型為 jmx.mbean.created 的訊息. MBeanServerDelegate MBean 廣播這個訊息到所有註冊的監聽者.
MBeanRegistration接口提供註冊和註銷過程監控的鉤點.

相關詞條

相關搜尋

熱門詞條

聯絡我們