2

私はビスタマシンを使用しています。これらのオプションを使用して tomcat 5.5.27 を開始しました。

CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=9003 \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false"

jconsole経由で接続し、次のサービスURLを追加すると

service:jmx:rmi:///jndi/rmi://localhost:9003/jmxrmi

接続しません。何か案は ?

4

5 に答える 5

6

わかりました、最初は op で指定された URL が間違っていると思っていましたが、そうではありませんでした。だから答えられない。

それでも、基本は次のとおりです。

を介した簡単な接続の場合jconsole

たとえば、接続先の JMX サーバーのRMI レジストリ ポートが 9003 であることがわかっている場合は、次を使用して接続します。

localhost:9003

代わりは。

そうでなければ、ここに私が最初から見つけたものがあります:

RMI レジストリ ポートが「RMI REGISTRY PORT」に、JMX RMI サーバー ポートが「JMX RMI 」にある「TARGET MACHINE」で実行されている JMX サーバー (別名「JMX エージェント」別名「接続先の JVM」) があるとします。サーバポート'。

ノート:

  1. RMI レジストリは、JMX クライアントに、JMX RMI サーバー ポートの場所を通知します。情報は key の下で取得できますjmxrmi
  2. RMI レジストリ ポートは、JVM の起動時にシステム プロパティを通じて設定されるため、一般的に知られています。
  3. 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
于 2011-08-10T20:21:18.530 に答える
4

OpenJDK 6 と Tomcat 6.0.29 を使用する Ubuntu 10.04 では、CATALINA_OPTS を使用して Java に渡したcom.sun.management.jmxremote.*オプションの数に関係なく、ローカル jconsole セッションで JMX をアクティブ化できませんでした。問題は-Djava.io.tmpdir設定で、デフォルトは$CATALINA_BASE/tempです。私は単に設定しなければなりませんでした:

CATALINA_TMPDIR="/tmp"

bin/ catalina.shの冒頭で、jconsole、jmap、jps などでローカルに接続できました。com.sun.management.jmxremote .*の設定はまったく必要ありませんでした。

于 2010-12-03T10:31:35.653 に答える
1

プロセスは同じユーザーで実行されていますか?

jps と jconsole を実行して確認することもできます (どちらも JDK_HOME/bin ディレクトリにあります)。

于 2009-04-14T10:34:20.870 に答える
0

これは OS X 10.7 aka Lion にも必要です。

于 2011-08-09T19:45:17.277 に答える