Eclipseでリモートデバッグをする方法
Tomcatを使用する場合と、OC4Jを使用する場合の両方で試してみた。
意外にサクサク動く。
Oracle Application Server(OC4J)を使用する場合の設定
$ cd $ORACLE_HOME/opmn $ vi conf/opmn.xml
... <ias-component id="oc4j01" status="enabled"> <process-type id="oc4j01" module-id="OC4J" status="enabled"> <module-data> <category id="start-parameters"> <data id="java-options" value="-server -Djava.security.policy=$ORACLE_HOME/j2ee/oc4j01/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false -XX:MaxPermSize=128M -Xms512M -Xmx1024M -XX:AppendRatio=3 -Dcom.sun.management.jmxremote"/> </category> ...
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
を追加する。
変更したら再起動する。
$ bin/opmnctl stopall ... $ bin/opmnctl startall ...
Eclipseの設定
Menu > Run > Debug Configurationsを開く。
Remote Java Applicationを追加して、以下の項目を入力する。
Debugボタンを押すとリモートデバッグが開始される。
(ローカルでのデバッグと違い、パースペクティブが切り替わらず空気のように始まる)
エラーが出る場合
以下のようなエラーが出る場合は、以前のコネクションが残ったままになってます。
複数人で使うサーバの場合、同時には1人だけしか接続できないという点に注意。
Failed to connect to remote VM. Connection refused. java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:520) at java.net.Socket.connect(Socket.java:470) at java.net.Socket.<init>(Socket.java:367) at java.net.Socket.<init>(Socket.java:180) at org.eclipse.jdi.internal.connect.SocketTransportService$2.run(SocketTransportService.java:136) at java.lang.Thread.run(Thread.java:595)