【问题标题】:Problem with JMX query of Coherence node MBeans visible in JConsoleJConsole 中可见的 Coherence 节点 MBean 的 JMX 查询问题
【发布时间】:2010-11-07 19:42:19
【问题描述】:

我正在使用 JMX 构建一个自定义工具,用于监控工作中的远程 Coherence 集群。我能够很好地连接并直接查询 MBean,并且我已经获得了几乎所有我需要的信息。但是,我在尝试查询 MBean 以获取集群中的特定缓存时遇到了问题,我可以在其中找到有关获取/放置总数、每个平均时间等的统计信息。

当我使用 JConsole 连接到远程进程时,我尝试以编程方式访问的 MBean 是可见的,并且具有如下名称:

Coherence:type=Cache,service=SequenceQueue,name=SEQ%GENERATOR,nodeId=1,tier=back

如果我可以动态获取特定节点 ID 的所有 type=Cache MBean 而无需指定所有缓存,它会更加灵活。我正在尝试像这样查询它们:

QueryExp specifiedNodeId = Query.eq(Query.attr("nodeId"), Query.value(nodeId));
QueryExp typeIsCache = Query.eq(Query.attr("type"), Query.value("Cache"));
QueryExp cacheNodes = Query.and(specifiedNodeId, typeIsCache);
ObjectName coherence = new ObjectName("Coherence:*");
Set<ObjectName> cacheMBeans = mBeanServer.queryMBeans(coherence, cacheNodes);

但是,无论我使用queryMBeans() 还是queryNames(),查询都会返回一个包含...的 Set

  • ...0 个对象如果我传递上面显示的参数
  • ...0 个对象如果我将null 传递给第一个参数
  • ...Coherence:* 域 (112) 中的所有 MBean,如果我将 null 传递给第二个参数
  • ...如果我为两个参数都传递了null,则每个 MBean (128)

前两个结果是出乎意料的,提示我路过的QueryExp有问题,但不知道是什么问题。我什至尝试将typeIsCachespecifiedNodeId 传递给第二个参数(coherencenull 作为第一个参数),但我总是得到 0 个结果。

我对 JMX 非常熟悉 — 对问题所在有什么见解吗? (仅供参考,监控工具将在 Java 5 上运行,因此 JMX 2.0 之类的东西目前对我没有帮助。)

【问题讨论】:

    标签: java jmx mbeans oracle-coherence


    【解决方案1】:

    只是想为后代发布我的解决方案......

    我已经能够通过一种更简单(但更陌生)的方法成功地检索到与指定特征匹配的 MBean 集。我仍然不知道为什么 QueryExp 方法不起作用,但这是起作用的方法(替换我问题中的最后一行代码):

    Set<ObjectName> cacheMBeans = mBeanServer.queryNames(new ObjectName("Coherence:type=Cache,nodeId="+nodeId+",*"), null);
    

    在 ObjectName 构造函数字符串中添加片段 service=SequenceQueue 以按 Coherence 服务(缓存)名称进行过滤时也可以使用。

    只要它以某种方式工作,就足以让我完成我的工作,但这似乎是 JMX 实现中的一个明显缺陷。不要让我开始使用 JMX 和 RMI 创建工作 JMXServiceURL 的过程......

    【讨论】:

      【解决方案2】:

      我和你走的一样,我认为 JDK 文档可能更清楚。

      Query.* 似乎只能匹配底层 MBean 的属性(即真正的 POJO getter),而 ObjectName 模式能够匹配 ObjectName 本身内的键/值。

      如果能够灵活地在 ObjectName 域中进行更复杂的查询,那就太好了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多