如何向mbean动态添加和注册新属性

时间:2013-02-12 12:28:13

标签: jboss jmx mbeans

是否可以动态添加和注册新属性到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中进行任何代码更改,这可以吗?

先谢谢。

1 个答案:

答案 0 :(得分:0)

如果没有看到DynamicMBean的代码,很难回答你的问题,但我怀疑你的问题的答案,条件是MBean中没有代码更改,是不是。但是,这是一种总体方法(对您的代码采取一些自由的假设):

  • 像这样的DynamicMBean通常会有一些地图,由属性名称键入,并且包含属性的值(简单),或者包含以下部分或全部内容的值对象获取/设置属性的值:
    • 目标调用对象
    • a method
    • 方法的参数数组
  • 当请求MBean的MBeanInfo时,提供的MBeanAttributeInfo应该引用此映射中的键(以及数据类型,可变性等)。您可以在每次请求MBeanInfo时都会飞,或者保留更新的MBeanAttributeInfo集合,每当您添加新属性时都会更新该集合。
  • 方法setAttributesetAttributes应该创建一个新属性(通过将新键和值插入到属性映射中),如果该组引用了一个尚不存在的属性。

由于你正在使用JBoss,如果你觉得你可能想要实现这样的东西,可以考虑扩展JBoss的ServiceDynamicMBeanSupport。它为你做了一些但不是全部的腿部工作。