2013-02-12 51 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。它为你做了一些但不是全部的工作。