2015-04-18 6 views
1

Im имея простой MBean, который реализует этот интерфейсНекоторые из методов в Mbean не отображаются в Jconsole?

public interface HelloMBean { 

    public void print(); 

    public void printHello(); 


    public int getInt(); 

    public String getName(); 
    public void setName(String s); 

} 

реализации является:

public class Hello implements HelloMBean{ 

    private String name; 

    @Override 
    public String getName() { 
     // TODO Auto-generated method stub 
     return this.name; 
    } 

    @Override 
    public void setName(String s) { 
     // TODO Auto-generated method stub 
     this.name=s; 
    } 

    @Override 
    public void print() { 
     // TODO Auto-generated method stub 

     System.out.println("heelp!"); 

    } 

    @Override 
    public void printHello() { 
     // TODO Auto-generated method stub 

     System.out.println("heelp!"+" "+this.name); 


    } 

    @Override 
    public int getInt() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

} 

и я начинаю зарегистрировать MBean с Сервером MBean,

MBeanServer server=ManagementFactory.getPlatformMBeanServer(); 
     ObjectName objectName=new ObjectName("richard:name=fuck"); 

     try { 
      server.registerMBean(new Hello(),objectName); 
     } catch (InstanceAlreadyExistsException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (MBeanRegistrationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (NotCompliantMBeanException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     try { 
      System.in.read(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

Однако, когда я проверьте Jconsole, у него есть только две операции: print() и printHello

enter image description here

Я не знаю, почему это происходит, так как его просто очень простой MBean ...

+0

Попробуйте это https://theholyjava.wordpress.com/2010/09/16/exposing-a-pojo-as-a-jmx-mbean-easily-with-spring/ – Rajesh

ответ

2

Правило гласит, что get*() и set*() являются (превратились в) аксессорах собственности. Таким образом, они отображаются в разделе атрибутов, а не в операциях.

Если присутствует геттер, свойство может быть прочитано JMX-клиентами, если присутствует сеттер, тогда его можно записать. Совершенно справедливо иметь только сеттеры или геттеры только на таком свойстве.

+0

Это правильный ответ! – Qing

Смежные вопросы