启动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类型对象的正确方法。知道如何发起......
答案 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;
}
}