2008/03/22からのアクセス回数 19465
mavenを使ったプロジェクトでは、
のサイクルはコンパクトに実行できるのですが、いざWebアプリケーションをデバッグしようと するとwarファイルをtomcatのwebappsにコピーしてEclipseのデバッガーを使ってデバッグした 経験はありませんか?
ここでは、jettyプラグインで起動したWebアプリケーションをEclipseでデバッグする方法を説明します。
javaのVMには、外部からのリモートデバッグを可能にするオプションが提供されています。
例えば、xxx.jarを
$ java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -jar xxx.jar
これで、8000ポートを使って他のマシンからxxx.jarのプログラムをデバッグすることができるようになります。
このリモートデバッグオプションをmavenに使用するために、環境変数MAVEN_OPTSを使います。 LinuxやMac OSXでは.bashrcに以下の行を追加します。Windowsの場合にはユーザの環境変数にセットしてください。
export MAVEN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
Mac OSXでターミナルを使用する場合には、ターミナルの起動後に以下のコマンドを実行してください。 (どうもターミナルの場合には、.bashrcが実行されないみたいです、どうしてでしょう?)
$ . ./bashrc
つぎにEclipseのデバッガを設定します。
では、実際にmvc-conventionのWebアプリケーションをデバッグしてみましょう。
最初の一覧画面の表示でブレークポイントを設定してみましょう。
つぎに、jettyプラグインでmvc-conventionのWebアプリケーションを起動します。
$ mvn jetty:run Listening for transport dt_socket at address: 8000 [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'jetty'. [INFO] ------------------------------------------------------------------------ [INFO] Building mvc-convention Maven Webapp [INFO] task-segment: [jetty:run] [INFO] ------------------------------------------------------------------------ --- 省略 2008-03-22 15:14:34.029::INFO: Started SelectChannelConnector@0.0.0.0:8080 [INFO] Started Jetty Server
最初にListening for transport dt_socket at address: 8000とあるのが、リモートデバッグが 可能であり、デバッグ用ポートが8000に設定されていることを示しています。
ブラウザーを起動し、
http://localhost:8080/mvc-convention/
を選択すると
デバッガがブレークポイントで停止します。
この記事は、
皆様のご意見、ご希望をお待ちしております。