Чтобы получить информацию описания из аннотаций Spring @Managed*, нужно просто объявить стандартный "управляемый компонент" Spring, а не MBean или MXBean.
Для этого в вашем примере вы не должны реализовывать интерфейс с суффиксом "MBean". Затем компонент будет определен как стандартный «управляемый компонент», когда MBeanExporter зарегистрируетBeanInstance(..) и будет преобразован в ModelMBean с использованием всех аннотаций Spring, включая описания атрибутов, операций, параметров и т. д.
В качестве требования вы должны объявить в контексте весны MBeanExporter с атрибутами AnnotationJmxAttributeSource, MetadataNamingStrategy и MetadataMBeanInfoAssembler, который можно упростить следующим образом:
<bean id="mbeanExporter"
class="org.springframework.jmx.export.annotation.AnnotationMBeanExporter" />
or
<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
}
}
Помните, что нельзя реализовывать интерфейс MBean, который был бы StandardMBean!!
person
Donatello
schedule
06.09.2012