リモートWindows XPでJava 6 JavaでVMアプリケーションを実行しています。jvisualvm.exeを実行して、実行中のアプリケーションに自動的に接続できます。
次に、ローカルコンピューターからそのアプリケーションを接続する必要がありますが、リモートコンピューターのJMXポート番号がわかりません。どこで見つけることができますか?または、ポート番号を指定するいくつかのVMパラメーターでそのアプリケーションを再起動する必要がありますか?
質問 サーバーでJMXポートを見つける方法 を読んだ後、リモートコンピューターでコマンドを実行しました
netstat -apn
しかし、何も得られませんでした。
次に、ローカルコンピューターからそのアプリケーションを接続する必要がありますが、リモートコンピューターのJMXポート番号がわかりません。どこで見つけることができますか?または、ポート番号を指定するいくつかのVMパラメーターを使用してそのアプリケーションを再起動する必要がありますか?
デフォルトでは、このページから引数を指定しない限り、JMXはポートで公開しません: How to activate JMX ...
-Dcom.Sun.management.jmxremote
-Dcom.Sun.management.jmxremote.port=9010
-Dcom.Sun.management.jmxremote.local.only=false
-Dcom.Sun.management.jmxremote.authenticate=false
実行している場合は、これらのシステムプロパティのいずれかにアクセスして、設定されているかどうかを確認できます。
if (System.getProperty("com.Sun.management.jmxremote") == null) {
System.out.println("JMX remote is disabled");
} else [
String portString = System.getProperty("com.Sun.management.jmxremote.port");
if (portString != null) {
System.out.println("JMX running on port "
+ Integer.parseInt(portString));
}
}
サーバーの接続方法によっては、次のパラメーターも指定する必要があります。初期JMX接続の一部として、jconsoleはRMIポートに接続して、JMXサーバーが実行されているポートを判別します。 JMX対応アプリケーションを最初に起動すると、アプリケーションは独自のホスト名を検索して、その初期RMIトランザクションで返すアドレスを決定します。ホスト名が/etc/hosts
にない場合、または間違ったインターフェイスアドレスに設定されている場合は、次のようにオーバーライドできます。
-Djava.rmi.server.hostname=<IP address>
余談ですが、私の SimpleJMXパッケージ では、 JMXサーバー と RMIポート の両方を定義するか、両方を同じポートに設定できます。 com.Sun.management.jmxremote.port
で定義された上記のポートは、実際にはRMIポートです。これは、JMXサーバーが実行されているポートをクライアントに伝えます。