标准MBean的描述

我想在JBoss jmx-console中使我的标准MBean详细。 DynamicMBean有getMBeanInfo()来做。 方法返回MBeanInfo,其中包含MBean的描述。 但是我怎么能为Standard MBean做同样的事情呢? 例如,我有以下MBean接口:

public interface MyMBean { String f(); } 

……以下实施:

 public class My implements MyMBean { public String f() { return "test"; } } 

在这样的例子中应该怎么做才能添加描述?

谢谢

对于StandardMBeans,无法添加描述或其他元信息。

MBeanInfo的JavaDoc:

未指定标准MBean的MBeanInfo的其余详细信息。 这包括MBeanInfo和任何包含的构造函数,属性,操作和通知的描述; 以及构造函数和操作的参数的名称和描述。

因此,您至少需要使用DynamicMBeans(或ModelMBean或OpenMBean)来指定此信息。 Spring可以帮助您,因为它允许通过注释创建DynamicMBeans,最后使用它比编写自己的StandardMBeans更简单。 示例(来自spring文档):

 @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; } } 

有关详细信息,请参阅此文

您可以通过xmbean-descriptor执行此操作,而无需修改现有的mbean源代码。

请参阅如何为MBean方法添加描述以在JBOSS的jmx-console中查看它以获得答案。

从Spring annotations @ Managed *获取描述信息的方法只是声明一个标准的Spring“托管bean”,而不是MBean或MXBean。

为此,在您的示例中,您不能使用“MBean”后缀实现接口。 然后,当MBeanExporter将registerBeanInstance(..)时,bean将被检测为标准的“托管bean”,并将使用所有spring注释转换为ModelMBean,包括属性,操作,参数等的描述。

作为一项要求,您应该在Spring上下文中声明带有AnnotationJmxAttributeSourceMetadataNamingStrategyMetadataMBeanInfoAssembler属性的MBeanExporter ,它们可以简化为:

  

要么

  

你的托管bean应该是这样的(正如Roland所解释的):

 @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 !!