JMX CompositeDataSupport属性在JConsole中是否始终是只读的?

时间:2011-02-13 13:44:50

标签: java jmx jconsole

关注MXBeans in Java SE 6: Bundling Values Without Special JMX Client Configurations我设法实现了一个MXBean,它公开了一个Map<String, String>的配置参数列表。它按预期显示在JConsole中,但所有值都是只读的。

在MXBEans文章中,此图显示了一个示例,其中属性是只读的,因为它们是内存使用值。

enter image description here

有没有办法让属性在JConsole中可编辑?

3 个答案:

答案 0 :(得分:0)

尝试使用Spring MBeanExporter 我不确定,这是否适合你。
但这很容易。 Here是一个非常好的例子。

感谢。

答案 1 :(得分:0)

要使JConsole中的属性可写,您还需要在MBean接口中公开setter方法。

package com.example; 
public interface HelloMBean { 

public void sayHello(); 
public int add(int x, int y); 

public String getName(); 

public int getCacheSize(); 
public void setCacheSize(int size); 

}

此名称为readOnly,读取cacheSize并启用写入。

答案 2 :(得分:0)

我不认为你可以使各个元素可写(从远程API角度考虑它,复合类型只是一个DTO,mbean是远程接口),但我认为你可以做到整体复合属性可写,例如:

public Map<String,String> getConfig() {}

public void setConfig(Map<String,String> newConfig) {}

说,我不确定jconsole 是否支持编辑复合属性,即使它们是可写的。