JConsoleに表示されるCoherenceノードMBeanのJMXクエリの問題
-
21-08-2019 - |
質問
JMXを使用して、リモートの
プログラムでアクセスしようとしているMBeanは、JConsoleを使用してリモートプロセスに接続すると表示され、次のような名前になります。 ジェネラコディセタグプレ
すべてのキャッシュを指定せずに、特定のノードIDのすべてのtype=Cache
MBeanを動的に取得できれば、より柔軟になります。私は次のようにクエリを実行しようとしています:
ジェネラコディセタグプレ
ただし、queryMBeans()
とqueryNames()
のどちらを使用するかに関係なく、クエリは...を含むセットを返します...
- ... 0個のオブジェクト上記の引数を渡すと
- ... 0個のオブジェクト最初の引数に
null
を渡した場合 - ... 2番目の引数に
Coherence:*
を渡した場合、null
ドメイン(112)内のすべてのMBean - ...両方の引数に
null
を渡すと、すべての単一のMBean(128)最初の2つの結果は予期しない結果です。渡した
QueryExp
に問題があることを示唆していますが、問題が何であるかわかりません。 2番目のパラメーターにtypeIsCache
またはspecifiedNodeId
を渡すだけでも(最初のパラメーターとしてcoherence
またはnull
を使用)、常に0の結果が得られます。私はJMXにかなり満足しています—問題が何であるかについての洞察はありますか? (参考までに、監視ツールはJava 5で実行されるため、現時点ではJMX 2.0のようなものは役に立ちません。)
解決
後世のために私の解決策を投稿したかっただけです...
より単純な(しかし見知らぬ)アプローチを通じて、指定された特性に一致するMBeanのセットを正常に取得することができました。なぜQueryExp
アプローチが機能しないのかはまだわかりませんが、機能するものは次のとおりです(質問の最後のコード行を置き換えます):
ジェネラコディセタグプレ
ObjectNameコンストラクター文字列にフラグメントservice=SequenceQueue
を追加して、Coherenceサービス(キャッシュ)名でフィルター処理する場合にも機能します。
それが何らかの形で機能する限り、私は仕事を終わらせるのに十分ですが、これはJMX実装の明白な欠陥のようです。そして、JMXとRMIを使用して機能するJMXServiceURLを作成するプロセスを開始しないでください...
他のヒント
私はあなたと同じ道をたどりました、そして私はJDKドキュメントがより明確であるかもしれないと思います。
Query。*は、基盤となるMBean(つまり、実際のPOJOゲッター)の属性にのみ一致するように見えますが、ObjectNameパターンは、ObjectName自体のキー/値に一致することができます。
ObjectNameドメイン内でより複雑なクエリを実行できる柔軟性があると便利です。