【发布时间】:2013-08-14 10:00:55
【问题描述】:
我正在尝试将 MXBean 发布到 JMX,但是当我启动程序并且正在发布 bean 时,我得到了以下堆栈:
Caused by: java.io.InvalidObjectException: Do not know how to make a javax.management.openmbean.CompositeType from a CompositeData: no method from(CompositeData); no constructor has @ConstructorProperties annotation; does not have a public no-arg constructor; not an interface
at com.sun.jmx.mbeanserver.OpenConverter.invalidObjectException(OpenConverter.java:1403)
at com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter.makeCompositeBuilder(OpenConverter.java:891)
at com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter.checkReconstructible(OpenConverter.java:897)
at com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderCheckGetters.applicable(OpenConverter.java:1034)
at com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter.makeCompositeBuilder(OpenConverter.java:868)
... 48 more
现在我认为 MXBeans 只应该使用 the documentation 的 OpenMbean 类型,但我的班级只使用 java.lang.String 和 javax.management.openmbean.CompositeData,所以我不知道它为什么会失败。界面为:
import javax.management.MXBean;
import javax.management.openmbean.CompositeData;
@MXBean
public interface JmxAdministrationApi {
String synchronize(CompositeData clientInfo);
}
值得注意的是,直到我添加了CompositeData 参数(即没有参数),bean 才被正确发布,然后才出现此错误。
对此的任何帮助将不胜感激。
提前致谢,
罗伯
编辑:另外,我们正在使用 Spring JMX
【问题讨论】: