2

启动 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 支持复合类型参数,而不是只支持开放类型的手段,那么为什么我会收到这个错误?我想这不是使用复合类型对象的正确方法。任何想法如何启动...

4

2 回答 2

0

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

于 2013-04-04T07:45:03.383 回答
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;
   }
}
于 2013-07-26T05:19:59.600 回答