JMX - 监视MBean的复杂属性

时间:2014-08-21 06:11:40

标签: java jmx jconsole mbeans

我有一个简单的第三方对象 - 只有10个以上公共字段的DTO(它作为原子操作填充)。我希望能够在JConsole中监视它,而无需编写大量的样板代码。

我试图:

  • 使用MXBean - 得到异常(NotCompliantMBeanException)
  • 使用基于反射的实用程序库(如apache.common.lang3.ReflectionToStringBuilder)将DTO转换为String,但效果不佳,因为JConsole不支持多行字符串,而且效率不高。

还有其他建议吗?

1 个答案:

答案 0 :(得分:0)

如果您发布了MXBean代码失败,那将会很有帮助。通常,您只需要定义 DTOMXBean 接口,让DTO实现它,然后注册DTO。 (对于DTO来说,这听起来像是一个奇怪的生命周期,因为它们通常是相当短暂的,但这是一个针对不同问题的主题)。

请记住,MXBean属性不应返回javax.management.openmbean.OpenType.ALLOWED_CLASSNAMES_LIST中未定义的类型的值,否则您将获得NonCompliant异常。如果必须公开无法表示为其中一种类型的类型,则需要定义新的复合类型以将它们公开为。