我一直无法使用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 = A 和 name = B
有人知道我有什么误解或遗失吗?
帮助或线索将受到高度赞赏,亲切的问候。
答案 0 :(得分: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);
虽然我不清楚使用依赖列表,但问题仍然存在。