【问题标题】:JMX - monitor complex attribute of MBeanJMX - 监控 MBean 的复杂属性
【发布时间】:2014-08-21 06:11:40
【问题描述】:

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

我尝试过:

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

还有其他建议吗?

【问题讨论】:

    标签: java jmx jconsole mbeans


    【解决方案1】:

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

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

    【讨论】:

    • 我的 MXBean 不是 DTO,而是一个容器类。例如:我监视“MyService”类的一个实例。 MyService 包含一个“MemoryUsage”类型的复杂字段(DTO),它通过 MyServiceMXBean 接口公开。 MemoryUsage 几乎没有公共整数字段。我无法在 JConsole 中显示 MemoryUsage 内部字段。
    猜你喜欢
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多