【问题标题】:how to specify jmx mbean to render it as a tree in jconsole?如何指定 jmx mbean 以在 jconsole 中将其呈现为树?
【发布时间】:2011-09-14 03:13:13
【问题描述】:

我的应用程序有一组特定的键,我监控它们的值(最小值、最大值等)。它看起来与以下内容非常相似:

 public class Data implements Serializable{
    int max, min; //etc..
 }

 public interface HelloMBean{
     String [] getKeys();
     Data getDataForKey(String);
     Data [] getDatas();
 }

但是,我无法使用 jconsole 查看 Keys 或 Datas 属性(我总是看到这些属性的“不可用”值)。

我应该如何构造我的 bean 定义,以便它显示为值树?

HelloMBean
|- attributes
     |---- key1
     |---- key2

我也想将值(例如:key1.max 或 key2.min)显示为图表。这可能吗?如果是这样,实现它的最佳方法是什么?

谢谢!

【问题讨论】:

    标签: java jmx jconsole


    【解决方案1】:

    这不是你想要的javax.management.openmbean.CompositeData吗?

    它是“不可用的”,因为 jconsole 没有可用的 Data 类,它对这个类一无所知。

    或者,如果您想将每个“键”创建为单独的属性,您可以自己实现DynamicMBean,它返回具有基本类型的简单结构,例如int。例如。有example here。

    【讨论】:

    • 关于如何在 Spring 中使用 CompositeData 类的任何线索?
    • @Yaneeve 据我了解,如果您正确创建 MXBean,则会自动支持 CompositeData(但不支持 Map)。 docs.oracle.com/javase/tutorial/jmx/mbeans/mxbeans.html 文档有非常相似的例子。代码很简单,不需要Spring。如果您希望地图显示为属性列表,我认为您必须实现DynamicMBean,Spring 也不支持。
    • 我想使用 spring,因为它可以让我通过配置文件轻松配置 MBean 名称等。我想让消费者代码根据他们的需要设置这个文件。我从您写的内容中了解到 Spring 不支持 DynamicMBeans,但它是否支持 MXBeans?
    • @Yaneeve 代码很简单,你可以把 mxbean 的东西放在 spring config 里。但是,MBean 受类型的限制:MXBean 概念提供了一种简单的方法来编写仅引用一组预定义类型的 MBean
    • @Yaneeve 在一般情况下...并非所有东西都需要 Spring® Support™,任何合理设计的 java 类都可以由 Spring 配置。
    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 2019-04-30
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多