我正在使用JMX構建自定義工具,以監視工作中的遠程集羣Coherence。我能夠很好地連接並直接查詢MBean,並且已經獲得了我需要的幾乎所有信息。然而,當我試圖查詢MBeans在集羣中的特定緩存時遇到了一個問題,在這裏我可以找到關於get/puts的總數,每個平均時間等的統計信息。JConsole中可見的Coherence節點MBean的JMX查詢問題
MBeans I 「M試圖訪問編程是可見的,當我使用JConsole中連接到遠程的過程,有一個像這樣的名字:
Coherence:type=Cache,service=SequenceQueue,name=SEQ%GENERATOR,nodeId=1,tier=back
這將使我是否可以動態地抓取所有type=Cache
MBean的特定節點ID更靈活而不指定所有的緩存。我試圖查詢它們是這樣的:
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()
,該查詢返回一個包含集...
- ... 0對象如果我通過上述
- ... 0對象所示的參數如果我通過
null
爲第一個參數 - ...在
Coherence:*
域(112)的所有MBean如果我通過null
作爲第二個參數 - ...每單個MBean(128)如果我通過
null
對於兩個參數
前兩個結果是意想不到的,並提出QueryExp
我正在通過一個問題,但我無法弄清楚問題是什麼。我甚至嘗試傳遞第二個參數typeIsCache
或specifiedNodeId
(coherence
或null
作爲第一個參數),我總是得到0個結果。
我用JMX很綠 - 任何洞察問題是什麼? (僅供參考,監控工具會在Java 5上運行,所以像JMX 2.0絕不會幫我在這一點上。)