0

我无法使用depends-list 在运行时了解系统管理员为特定主题定义了多少MBean。

我对bean的定义:

<mbean code="MyBean" 
      name="x:service=MyBean" xmbean-dd="">
    <xmbean>
    <class>x.MyBean</class>

    <depends-list optional-attribute-name="DynamicListBeans">
        <depends-list-element>y:service=DynamicBean,name=A</depends-list-element>
        <depends-list-element>y:service=DynamicBean,name=B</depends-list-element>
    </depends-list>
    <operation>
        <description>Refreshes dynamic beans that could be edited by the end user.
        </description>
        <name>refreshConfigurationFromJmxLists</name>
    </operation>
    </xmbean>
</mbean>

我的课:

公共类 MyBean 实现 MyBeanMXBean {

private List<ObjectName> dynamicListBeans;

@Override
public List<ObjectName> getDynamicListBeans() {
    return dynamicListBeans;
}

@Override
public void setDynamicListBeans(List<ObjectName> dynamicListBeans) {
    this.dynamicListBeans = dynamicListBeans;
}

public void refreshConfigurationFromJmxLists() {
    System.out.println(dynamicListBeans.size());
}

}

MyBeanMXBean 定义了 dynamicListBeans 的 getter 和 setter,以及 refreshConfigurationFromJmxLists 操作。

在执行期间,refreshConfigurationFromJmxLists 将列表的大小设为零,因此 JBoss 没有设置名称name=Aname=B

有人知道我是否有任何误解或遗漏吗?

帮助或线索将不胜感激,亲切的问候。

4

1 回答 1

0

当前的解决方法是使用命名模式并进行如下查询:

"y:service=DynamicBean,name=*"

代码示例:

ObjectName objectName;
try {
    objectName = new ObjectName("y:service=DynamicBean,name=*");
} catch (MalformedObjectNameException e) {
    throw new IllegalArgumentException(e);
} catch (NullPointerException e) {
    throw new IllegalArgumentException(e);
}

Set<ObjectName> names = jmxProvider.queryNames(objectName,null);

虽然我不清楚depends-list的使用,但这个问题仍然悬而未决。

于 2013-11-11T19:48:12.370 回答