從Spring annotations @ Managed *獲取描述信息的方法是聲明一個標準的Spring「託管bean」,而不是MBean或MXBean。
爲此,在您的示例中,您不得使用「MBean」後綴實現接口。 然後,當MBeanExporter將registerBeanInstance(..)並且將使用所有Spring註解(包括屬性,操作,參數等的描述)將其轉換爲ModelMBean時,該bean將被檢測爲標準的「託管bean」。
這樣的要求,你應該在你的Spring上下文聲明的MBeanExporter與AnnotationJmxAttributeSource,類MetadataNamingStrategy,並MetadataMBeanInfoAssembler的屬性,它可以簡化如下:
<bean id="mbeanExporter"
class="org.springframework.jmx.export.annotation.AnnotationMBeanExporter" />
或
<context:mbean-export />
和你的託管bean應該是這樣的(由羅蘭解釋):
@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!
正如我對MBeanInfo的Java Doc的理解所說,這是可能的,但沒有任何示例和定義足夠不清楚:http://download.oracle.com/javase/1.5.0/docs/api/javax/management /MBeanInfo.html – Raman 2011-03-10 14:44:02