Spring-MVC/ステップ・バイ・ステップ

2008/03/22からのアクセス回数 19465

mavenを使ったプロジェクトでは、

のサイクルはコンパクトに実行できるのですが、いざWebアプリケーションをデバッグしようと するとwarファイルをtomcatのwebappsにコピーしてEclipseのデバッガーを使ってデバッグした 経験はありませんか?

ここでは、jettyプラグインで起動したWebアプリケーションをEclipseでデバッグする方法を説明します。

mavenの実行プログラムのデバッグ設定

javaのVMには、外部からのリモートデバッグを可能にするオプションが提供されています。

例えば、xxx.jarを

$ java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -jar xxx.jar

これで、8000ポートを使って他のマシンからxxx.jarのプログラムをデバッグすることができるようになります。

mavenの設定

このリモートデバッグオプションを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の設定

つぎにEclipseのデバッガを設定します。

remote_application.jpg
remote_debug_setting.jpg

デバッグの例

では、実際にmvc-conventionのWebアプリケーションをデバッグしてみましょう。

ブレークポイントの設定

最初の一覧画面の表示でブレークポイントを設定してみましょう。

breakpoint.jpg

jettyプラグインの起動

つぎに、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/

を選択すると

デバッガがブレークポイントで停止します。

debug.jpg

コメント

この記事は、

選択肢 投票
おもしろかった 8  
そうでもない 0  
わかりずらい 1  

皆様のご意見、ご希望をお待ちしております。


(Input image string)

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc