【问题标题】:java.io.InvalidObjectException with JMX MXBean with CompositeDatajava.io.InvalidObjectException 与 JMX MXBean 与 CompositeData
【发布时间】: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.Stringjavax.management.openmbean.CompositeData,所以我不知道它为什么会失败。界面为:

import javax.management.MXBean;
import javax.management.openmbean.CompositeData;

@MXBean
public interface JmxAdministrationApi {

    String synchronize(CompositeData clientInfo);

}

值得注意的是,直到我添加了CompositeData 参数(即没有参数),bean 才被正确发布,然后才出现此错误。

对此的任何帮助将不胜感激。

提前致谢,

罗伯

编辑:另外,我们正在使用 Spring JMX

【问题讨论】:

    标签: jmx mbeans


    【解决方案1】:

    您不应该直接使用CompositeData,即使文档听起来您应该这样做。 MXBean 将负责将专有数据类型转换为 CompositeData 实例并自动返回。

    查看documentation 中提供的示例,了解您应该如何使用@ConstructorProperties 注释使您的数据类型与复合数据和MXBean 很好地配合。

    -JB-

    【讨论】:

    • 谢谢,在 bean 上使用 @ConstructorProperties 可以工作。也更好看! (顺便抱歉回复慢了,我有一个长周末)
    • 非常感谢您的回答!关于 JMX 的 Java 文档没有得到很好的解释,我一直在努力创建自己的 CompositeData,但它从来没有奏效。这个解决方案简单、干净,而且效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    相关资源
    最近更新 更多