2013-02-12 45 views
0

是否可以動態地添加和註冊新屬性的MBean如何動態地添加和註冊新屬性的MBean

如:

<server> 

<mbean code="org.jboss.example.MyMbean" name="jboss:service=myMbean,name=MyMbeanExample"> 

<attribute name="attribute1">value1</attribute> 

<attribute name="attribute2">value2</attribute> 

<attribute name="attribute3">value3</attribute> 

<attribute name="attribute4">value5</attribute> 

<attribute name="attribute5">value5</attribute>... 

</mbean> 
</server> 

一個新的屬性中的jboss-service.xml的添加數量應動態地在MyMbean中註冊並在Mbean中進行任何代碼更改,可以這樣做嗎?

在此先感謝。

回答

0

在沒有看到DynamicMBean代碼的情況下很難回答您的問題,但我懷疑您的問題的答案,但條件是MBean中沒有代碼更改,不是。然而,這裏是一個總的方法(以你的代碼的一些開明的假設):

  • 一個DynamicMBean這樣通常會有某種形式的地圖,由屬性名稱作爲鍵,並且和包含屬性的任何值(容易),或包含一些或所有下列意在獲取值對象/設定的屬性的值:
    • 一個目標調用對象,
    • 的參數的method
    • 陣列的方法
  • 當請求MBean的MBeanInfo時,提供的MBeanAttributeInfo應引用此映射中的鍵(以及數據類型,可變性等)。您可以在每次請求MBeanInfo時動態生成這些鍵,或者保存每次添加新屬性時更新的MBeanAttributeInfo的更新集合。
  • 如果該集合引用一個尚不存在的屬性,則方法setAttributesetAttributes應該創建一個新屬性(通過將新的鍵和值插入到屬性映射中)。

既然你使用的是JBoss,如果你覺得你可能想要實現這樣的東西,可以考慮擴展JBoss的ServiceDynamicMBeanSupport。它爲你做了一些但不是全部的工作。