【问题标题】:JMX Update TabularData valuesJMX 更新 TabularData 值
【发布时间】:2018-07-30 19:25:50
【问题描述】:

我的情况与以下类似 - 请耐心等待:

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

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

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

这是我的场景示意图:

Attributes
Name                            Value

Information                     Name        Value
                                name        processA
                                duration    109
                                id          1

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

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

【问题讨论】:

    标签: java jmx mbeans


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-15
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      相关资源
      最近更新 更多