java - 在 JConsole 中可见的 Coherence 节点 MBean 的 JMX 查询问题

标签 java jmx mbeans oracle-coherence

我正在使用 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:* 域中的所有 MBean (112) 如果我为第二个参数传递 null
  • ...如果我为两个参数传递 null,则每个 MBean (128)

前两个结果出乎意料,提示我传递的QueryExp有问题,但我想不通是什么问题。我什至尝试只为第二个参数传递 typeIsCachespecifiedNodeId(第一个参数为 coherencenull ) 而我总是得到 0 个结果。

我对 JMX 很陌生 — 对问题是什么有任何见解吗? (仅供引用,监控工具将在 Java 5 上运行,因此此时 JMX 2.0 之类的东西对我没有帮助。)

最佳答案

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

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

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

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

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

关于java - 在 JConsole 中可见的 Coherence 节点 MBean 的 JMX 查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1077359/

相关文章:

java - 为什么我的程序不从 arrayList 中绘制房屋?

Java将系统的当前日期时间转换为纪元引用的秒数

java - LibGDX 应用内购买和 Gradle

java - 使用 Nashorn 查找 JMX MBean

java - 以表格形式显示表格 mbean 属性

java - 在 Java VisualVM 中添加远程 VM

java - 如何在远程 jmx URL 的 java 中获取所有垃圾收集器 MX bean?

java - 重构: Clean dao code for a query with multiple optional params

java - 自定义 MBean HTML 页面

java - 从 JNDI 自定义资源中检索附加属性