Проблема с открытым типом MXBean

При запуске 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 поддерживает параметр составного типа, а не средства, которые поддерживают только открытые типы, тогда почему я получаю эту ошибку? Я предполагаю, что это неправильный способ использования объекта составного типа. Любая идея, как инициировать...


person Community    schedule 28.09.2012    source источник


Ответы (2)


Я думаю, вы забыли сериализовать эти объекты. Попробуйте сделать это, потому что, насколько я знаю, открытый тип правильно обрабатывается MXBEAN.

person abhi    schedule 04.04.2013

Если FileInfo является компонентом Java, то 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;
   }
}
person Mark Butler    schedule 26.07.2013