Java JBoss 5 JMX依赖于列表操作
我无法使用Dependes list来了解系统管理员在运行时为特定主题定义了多少MBean 我对bean的定义是: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
<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=a和name=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);