java - JMX 更新 TabularData 值

标签 java jmx mbeans

我的情况类似于以下内容 - 请耐心等待:

我有一个 mbean,其中包含一个名为“信息”的属性。此属性的值由名为“data”的 TabularDataSupport 类的实例表示。 “数据”由 CompositeData 类的实例组成。

CompositeData 的每个实例显然都需要一个 CompositeType。这是我定义“表”的地方,它包含三部分数据:名称、持续时间和 id。

基本上,我有 10 个以特定时间间隔发生的唯一命名的进程。我希望每个进程都由一个 CompositeData 对象表示,存储在“数据”中。每次进程完成运行时,我想更新与其关联的持续时间和 ID。

这是我的场景图:

Attributes
Name                            Value

Information                     Name        Value
                                name        processA
                                duration    109
                                id          1

目前,当我想要更新这些值时,我只需将一个新的 CompositeData 对象(包含名称、持续时间和 id)放入我的“数据”对象中。这在 processA、processB 等第一次运行时有效,但之后就不起作用了。

我使用“name”作为索引,所以我不知道如何简单地更新与现有名称关联的持续时间和 ID。任何帮助将不胜感激!

最佳答案

啊,我最终找到了解决方法。基本上,我有一个方法负责更新“数据”对象中的 CompositeData(它存储名称、进程和 id)。我想检查“data”是否已包含一个 CompositeData 对象,其用作索引的键的值(在我的例子中,键“name”的值)与 CompositeData I 的键的值匹配正在尝试更新。 (例如,如果我想更新“processA”的信息,与我的索引“name”匹配的键的值“processA”是否存在?)如果是这种情况,我会删除该对象。

然后,我继续将新的 CompositeData 对象放入列表中。

所以基本上,每次想要更新 CompositeData 对象时都会删除并重新添加它,这并不理想。不过很简单。

这里令人困惑的部分是,您需要传入一个包含用作索引的键的数组,即使它只有一个键(如我的示例中所示)。

关于java - JMX 更新 TabularData 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51600982/

相关文章:

java - 将对象或类链接到 GoogleMap 标记

java - 如何从PNG图片构建个人JFrame

java - 从gradle文件读取变量到库

java - 如何连接到另一个本地进程中的 mBeanServer?

java - 如何将客户端环境传递给 MBean 方法调用

Java 在 C 中的 volatile ?

IBM Websphere 中的 Java VisualVM JMX 连接

java - 当使用注释声明 bean 时,JMX MBean 不会显示在 JConsole 上

java - 插入 MBean 拦截器

java - 如何在运行时获取 .ear 文件大小?