0

是否可以向 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 中进行任何代码更改,可以这样做吗?

提前致谢。

4

1 回答 1

0

如果没有看到 DynamicMBean 的代码,很难回答您的问题,但我怀疑您的问题的答案是否定的,前提是 MBean 中没有代码更改。但是,这是一种总体方法(对您的代码进行一些自由假设):

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

由于您使用的是 JBoss,如果您觉得您可能想要实现类似的东西,请考虑扩展 JBoss 的ServiceDynamicMBeanSupport。它为您做了一些但不是全部的跑腿工作。

于 2013-02-12T14:43:19.670 回答