2011-03-10 5 views
5

JBoss jmx-console에서 내 표준 MBean을 자세한 정보 표시로 만들고 싶습니다. DynamicMBean에는 getMBeanInfo()가 있습니다. 메소드는 MBean의 설명과 함께 MBeanInfo를 리턴합니다. 그러나 표준 MBean에 대해 동일한 작업을 수행하는 방법은 무엇입니까? 예 : 다음 구현 ...Standard MBean에 대한 설명

public interface MyMBean { 
    String f(); 
} 

: 나는 MBean의 인터페이스를 다음 한

public class My implements MyMBean { 
    public String f() { 
    return "test"; 
    } 
} 
예에 설명을 추가하기 위해 수행해야 무엇

?

감사 StandardMBeans를 들어

+0

Java 문서에서 MBeanInfo를 사용할 수 있음을 이해했지만 예제와 정의가 충분하지 않습니다. http://download.oracle.com/javase/1.5.0/docs/api/javax/management /MBeanInfo.html – Raman

답변

4

는 설명 또는 다른 메타 정보를 추가하는 방법이 없습니다. MBeanInfo의 JavaDoc을에서

: 표준 MBean의 MBeanInfo에의

나머지 세부 사항은 지정되지 않습니다. 여기에는 MBeanInfo와 포함 된 생성자, 속성, 작업 및 알림에 대한 설명이 포함됩니다. 및 생성자와 연산에 대한 매개 변수의 이름과 설명

이 정보를 지정하려면 최소한 DynamicMBeans (또는 ModelMBean 또는 OpenMBean)를 사용해야합니다. Annotation을 통해 DynamicMBeans를 생성 할 수 있기 때문에 Spring은 자신의 StandardMBeans를 작성하는 것보다 사용이 훨씬 간단합니다. 예제 (봄 문서에서) :

@ManagedResource(objectName="bean:name=testBean4", 
       description="My Managed Bean") 
public class AnnotationTestBean { 

    private int age; 

    @ManagedAttribute(description="The Age Attribute", currencyTimeLimit=15) 
    public int getAge() { 
     return age; 
    } 
} 

자세한 내용은 this article을 참조하십시오.

+4

이러한 주석은 Spring! 따라서 Spring을 사용하지 않는다면 주석을 사용할 수 없습니다. –

+0

질문은 JBoss jmx-console에 관한 내용이었습니다. –

1

기존 mbean 소스 코드를 수정할 필요없이 xmbean-descriptor를 통해이 작업을 수행 할 수 있습니다.

이에 대한 대답은 How to add description for MBean method to see it in jmx-console of JBOSS을 참조하십시오.

+0

JBoss 내에서 선언적으로 MBeans를 선언하고 프로그램 적으로 등록 할 때가 아니라면 이것이 작동하는 것 같습니다. MBeanServer에서 서블릿 내에서 직접 가져올 수 있습니다. –

+0

@Roland 예. 프로그래밍 방식으로하면 래퍼가 정보를 제공함에 따라 MBean 인터페이스와 DynamicMBean을 살펴봄으로써 속성/연산이 결정되는 기존 StandardMBean을 "래핑"할 수 있습니다. 이는 기본적으로 JBoss가 수행하는 작업입니다. 이 작업을 수행하는 JBossAS 내에서 클래스를 사용할 수도 있습니다. –

0

Spring Annotations @ Managed *에서 설명 정보를 얻는 방법은 MBean이나 MXBean이 아닌 표준 Spring "관리 Bean"을 선언하는 것입니다.

이렇게하려면 예제에서 "MBean"접미사로 인터페이스를 구현하면 안됩니다. 그런 다음 빈은 MBeanExporter가 BeanInstance (..)를 등록 할 때 표준 "관리 빈"으로 감지되며 속성, 작업, 매개 변수 등의 설명을 포함하여 모든 스프링 주석을 사용하여 ModelMBean으로 변환됩니다.

요구 사항으로

, 당신은 다음과 같이 간단하게 할 수 AnnotationJmxAttributeSource, MetadataNamingStrategy를MetadataMBeanInfoAssembler가 속성으로 MBeanExporter에 당신의 봄 컨텍스트에서 선언해야합니다 :

<bean id="mbeanExporter" 
    class="org.springframework.jmx.export.annotation.AnnotationMBeanExporter" /> 

또는

<context:mbean-export /> 
(롤랜드에 의해 설명)그리고 당신의 관리 빈은 다음과 같아야합니다

@Component("myManagedBean") 
@ManagedResource(objectName="your.domain.jmx:name=MyMBean", 
       description="My MBean goal") 
public class AnnotationTestBean { 

    private int age; 

    @ManagedAttribute(description="The age attribute", currencyTimeLimit=15) 
    public int getAge() { 
     return age; 
    } 

    @ManagedOperation(description = "Check permissions for the given activity") 
    @ManagedOperationParameters({ 
     @ManagedOperationParameter(name = "activity", 
            description = "The activity to check") 
    }) 
    public boolean isAllowedTo(final String activity) { 
     // impl 
    } 
} 

것은의 StandardMBean 것 MBean의 인터페이스를 구현하지 기억!