JMX接続の気持ち悪い挙動

JConsoleからリモートホストで動いているJVMに接続するときの挙動が気持ち悪い。推測の域を出ないのだけれど、リモートホスト上でホスト名から引いたIPアドレスとJConsoleが接続するリモートのポートのIPアドレスが等しいようなホスト名をリモートホストにつけないと接続できない。JMXによるリモート管理を有効にした状態で、ホスト名に対応するIPアドレスがhostsに定義されていないと起動時にエラーが出るのもこれがらみなのかしら。


たとえば、JConsoleから接続したいJVMが稼動するホストhogeのhostsが

::1     localhost
127.0.0.1       localhost
172.29.64.51    loghost        # JConsole起動ホストが接続しているネットワーク内
10.177.132.102  hoge hoge.nge1
10.177.133.203  hoge.nge2

となっている状態で、Javaアプリ起動後JConsoleで172.29.64.51にリモート接続を行うと、「接続しています。 〜… 失敗しました」のようなメッセージが出る。正しくは

::1     localhost
127.0.0.1       localhost
172.29.64.51    hoge loghost # JConsole起動ホストが接続しているネットワーク内
10.177.132.102  hoge.nge1
10.177.133.203  hoge.nge2

で、この状態で再びJConsoleからアクセスするとつながる。試した環境のリモートホストのOSはSolaris, ローカルホストはWindows.


参考:Oracle Technology Network for Java Developers