最高のデバッガーをリモート Glassfish インスタンスに接続しようとしています (リモートとは、同じ VM 内だけでなく、同じ物理マシン上で実行されていないことを意味します)。
私のglassfishドメイン構成は「デバッグ」フラグがチェックされており、起動中にserver.logが報告します
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9009
これは、(私の考えでは)デバッグが実際に有効になっていることを示しています。
ただし、デバッガーを接続しようとすると失敗します。次のセッションは例です (PuTTy で実行):
$ jdb -connect com.sun.jdi.SocketAttach:port=9009
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:385)
at java.net.Socket.connect(Socket.java:529)
at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:204)
at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:98)
at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:72)
at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:358)
at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:168)
at com.sun.tools.example.debug.tty.Env.init(Env.java:64)
at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1010)
Fatal error:
Unable to attach to target VM.
その動作の原因は何ですか?
編集
この jdb コマンドラインは、Web での Glassfish デバッグ テストの例として提供されていることに注意してください。これを使用した理由は次のとおりです。
また、この jdb デバッグ セッションをローカルで実行していることにも注意してください (つまり、PuTTy を使用してそのマシンに接続しているため、Glassifh が実行されているマシンで jdb を呼び出しています)。