Вы можете использовать аннотации описаний, предоставленные Spring Context @ Managed *:
. Для этого вы НЕ должны реализовывать интерфейс с суффиксом "MBean" или "MXBean", а также SelfNaming.Затем компонент будет обнаружен как стандартный «управляемый компонент» пружины, когда MBeanExporter зарегистрируетBeanInstance (..) и будет преобразован в ModelMBean с использованием всех пружинных аннотаций, включая описания атрибутов, операций, параметров и т. Д.
Как требование, вы должны объявить в своем весеннем контексте атрибуты MBeanExporter с AnnotationJmxAttributeSource , MetadataNamingStrategy и MetadataMBeanInfoAssembler что можно упростить так:
<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
}
}
Не забудьтереализует интерфейс MBean, который был бы StandardMBean, и интерфейс SelfNaming, который обходил бы управление именами Spring!