【问题标题】:Open Type MXBean issue打开类型 MXBean 问题
【发布时间】:2012-09-28 09:55:03
【问题描述】:

在启动 MXBean 时,我收到错误提示 Method SampleServiceMXBean.register 具有无法转换为开放类型的参数或返回类型。根据错误消息,很明显我的 MXBean 无法赶上复合类。

以更好的方式解释事情: 这是我的 MXBean 接口代码

 public interface SampleServiceMXBean {
      public boolean register(FileInfo fi) throws IOException;   //FileInfo is a not Open Type(Composite)
 }

启动 MXBean 服务器代码

 MBeanServer beanServer= ManagementFactory.getPlatformMBeanServer();
 ObjectName sampleName = new ObjectName("com.me.core.services:fileExt=SampleService");
 beanServer.registerMBean(sampleService,sampleName);

现在,据我所知,据说 mxbean 支持复合类型参数,而不是只支持开放类型的手段,那么为什么我会收到此错误?我想这不是使用复合类型对象的正确方法。任何想法如何启动......

【问题讨论】:

    标签: java javabeans jmx java-7 mbeans


    【解决方案1】:

    我猜你忘记序列化这些对象了。尝试这样做,因为据我所知开放类型由 MXBEAN 正确处理

    【讨论】:

      【解决方案2】:

      如果 FileInfo 是一个 Java bean,那么 JMX 应该能够处理它。但是,如果您要使数据成员成为最终成员并通过构造函数设置它们,则需要使用 ConstructorParameters 注释,例如

      public class FileInfo {
         private final String filename;
         private final String filetype;
      
         @ConstructorProperties({"filename", "filetype"})
         public FileInfo(String filename, String filetype) {
            this.filename = filename;
            this.filetype = filetype;
         }
      
         public String getFilename() {
           return filename;
         }
      
         public String getFiletype() {
           return filetype;
         }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-27
        • 2021-09-30
        • 1970-01-01
        • 2017-06-12
        相关资源
        最近更新 更多