Java JBoss 5 JMX依赖于列表操作

Java JBoss 5 JMX依赖于列表操作,java,jboss,jmx,mbeans,Java,Jboss,Jmx,Mbeans,我无法使用Dependes list来了解系统管理员在运行时为特定主题定义了多少MBean 我对bean的定义是: <mbean code="MyBean" name="x:service=MyBean" xmbean-dd=""> <xmbean> <class>x.MyBean</class> <depends-list optional-attribute-name="DynamicListBea

我无法使用Dependes 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>

x、 蚕豆
y:service=DynamicBean,name=A
y:service=DynamicBean,name=B
刷新可由最终用户编辑的动态bean。
refreshConfigurationFromJmxLists
我的班级:

公共类MyBean 实现MyBeanMXBean {

私有列表dynamicListBeans;
@凌驾
公共列表getDynamicListBeans(){
返回dynamicListBeans;
}
@凌驾
公共void setDynamicListBeans(列出dynamicListBeans){
this.dynamicListBeans=dynamicListBeans;
}
public void refreshConfigurationFromJmxLists(){
System.out.println(dynamicListBeans.size());
}
}

MyBeanMXBean正在定义dynamicListBeans的getter和setter,以及来自JMXLists的操作refreshConfigurationFromJmxLists

在执行过程中,refreshConfigurationFromJmxLists将列表的大小设置为零,因此JBoss没有设置名称name=aname=B

有人知道我有没有误解或遗漏什么吗


非常感谢您的帮助或提示。当前的解决方法是使用命名模式和查询,如下一步:

"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);
ObjectName ObjectName;
试一试{
objectName=newobjectname(“y:service=DynamicBean,name=*”;
}捕获(格式错误的对象名异常e){
抛出新的IllegalArgumentException(e);
}捕获(NullPointerException e){
抛出新的IllegalArgumentException(e);
}
Set name=jmxProvider.queryNames(objectName,null);
虽然我不清楚的用法取决于列表,但问题仍然悬而未决

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);