2014-04-02 4 views
1

MXBeans를 Apache-Tomcat 7.0에 공개하려고합니다. MXBean이 성공적으로 등록되었지만 thoese MXBeans에 의해 공개 된 작업에 설명을 추가 할 수 없습니다.JMX MXBean에 설명을 추가하는 방법

등록 MXBean에

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); 
ObjectName m_mxbeanOName = new ObjectName("MyMXBean:type=" + "MyComponent"+",name=MyMXBean"); 
MyMXBean m_mxbean = new MyMXBean(); 
if(!mbs.isRegistered(m_mxbeanOName)) 
    mbs.registerMBean(m_mxbean, m_mxbeanOName); 

MyMXBean 인터페이스

public interface MyMXBean { 
    public int add (int x, int y);  
} 

MyMXBean 구현

import com.sun.org.glassfish.gmbal.Description; 
import com.sun.org.glassfish.gmbal.DescriptorFields; 
import com.sun.org.glassfish.gmbal.Impact; 
import com.sun.org.glassfish.gmbal.ManagedOperation; 

public class MyMXBeanImpl implements MyMXBean { 
    @ManagedOperation(impact=Impact.ACTION_INFO) 
    @Description("Integer Addition: First parameter is the augend and second parameter is the addend.") 
    @DescriptorFields({"p1=augend","p2=addend"}) 
    public int add(int x, int y) { 
     return x + y; 
    } 

주석 @ManagedOperation, @description는 @DescriptorFields는 jconsole을에 영향을주지 않습니다. JConsole은 계속 기본값을 표시합니다.

JConsole에서 MXBean 조작에 대한 설명을 표시하는 방법을 알려주십시오.

+0

정말 좋았을 것이다. –

답변

1

JMX에 등록한 실제 객체로 StandardMBean (또는 StandardEmitterMBean)을 사용하는 것이 가장 깨끗한 방법입니다. 다음에, StandardMBean를 서브 클래스 화해, 다양한 getDescription 메소드를 오버라이드 (override)합니다. 이러한 방법으로 설명이 포함 된 특수 효과를 읽으십시오.

0

@Descriptor 및 @Name 속성에 대한 코드와이를 처리하는 AnnotatedStandardMXBean 래퍼가있는 매우 훌륭한 블로그 항목을 발견했습니다. 이 사용

http://actimem.com/java/jmx-annotations/

샘플의 MXBean는 : 자바 8의 새로운 "바이트 코드에서 매개 변수 이름을 저장"기능이 자동으로 여기에 활용 된 경우

@MXBean 
    @Description("A test resource") 
    public interface SampleMXBean { 
     @Description("string#1") 
     String getString1(); 

     @Description("string#2") 
     String getString2(); 

     @Description("string#3") 
     String string3(@Description("int i") @Name("i") int i, @Description("long j") @Name("j") long j); 
    } 
관련 문제