打开Type MXBean问题

时间:2012-09-28 09:55:04

标签: java javabeans jmx java-7 mbeans

启动MXBean时,我收到错误提示方法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支持复合类型参数,而不是只支持开放类型的手段然后我收到此错误的原因?我想这不是使用Composite类型对象的正确方法。知道如何发起......

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果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;
   }
}