わかりました、最初は op で指定された URL が間違っていると思っていましたが、そうではありませんでした。だから答えられない。
それでも、基本は次のとおりです。
を介した簡単な接続の場合jconsole
。
たとえば、接続先の JMX サーバーのRMI レジストリ ポートが 9003 であることがわかっている場合は、次を使用して接続します。
localhost:9003
代わりは。
そうでなければ、ここに私が最初から見つけたものがあります:
RMI レジストリ ポートが「RMI REGISTRY PORT」に、JMX RMI サーバー ポートが「JMX RMI 」にある「TARGET MACHINE」で実行されている JMX サーバー (別名「JMX エージェント」別名「接続先の JVM」) があるとします。サーバポート'。
ノート:
- RMI レジストリは、JMX クライアントに、JMX RMI サーバー ポートの場所を通知します。情報は key の下で取得できます
jmxrmi
。
- RMI レジストリ ポートは、JVM の起動時にシステム プロパティを通じて設定されるため、一般的に知られています。
- JMX RMI サーバーのポートは、JVM が無作為に選択するため (他の予防策が講じられていない場合)、通常は不明です。
次の URI は成功につながります (テスト済み)
service:jmx:rmi://<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
これは厄介に見えます。切り分けましょう。
この URI は RFC2609 の「Service Location Protocol URL」です (まあ、これは本当に URI ですよね?)
以下で構成されています。
service
- 定数
jmx:rmi
-抽象型とURL スキームで構成されるサービス型 jmx
rmi
- 残り -樹液(サービス アクセス プロトコル仕様)
樹液は次のように分解されます。
//<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>
- イプサイト
/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
- URL部分
十分な情報に基づいた JMX クライアントが「ipsite」に接続して、JMX-over-RMI 交換を行います。しかし、そのポートを知らない JMX クライアントはどうでしょうか? 忍耐...
URL 部分は次のように分解されます。
/jndi/
- これは、次の場所でルックアップ情報を取得できることを JMX クライアントに伝えているようです。
rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
- はい、RMI レジストリのルックアップ キーの下にある JMX RMI サーバーに関する情報を取得します。jmxrmi
SLP URL の後半部分で指定されたRMI レジストリに最初に連絡する必要があるため、これはいくぶん本命です。
直感的に頭を悩ませた後、試してみましょう:
service:jmx:rmi://<TARGET_MACHINE>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
はい、うまくいきます!JMX RMI サーバー ポートは、レジストリから適切に取得されます。考え直して、ターゲット マシンもレジストリから取得する必要があります。
service:jmx:rmi:///jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
さらに良いことに、それもうまくいきます!
参考文献:
1 download.oracle.com/javase/6/docs/api/javax/management/remote/rmi/package-summary.html
2 download.oracle.com/javase/6/docs/api/javax/management/remote/JMXServiceURL.html
3 mx4j.sourceforge.net/docs/ch03s04.html
4 download.oracle.com/javase/6/docs/technotes/guides/management/agent.html#gdevg
5 http://www.rfc-editor.org/rfc/rfc2609.txt