[[Spring-MVC/ステップ・バイ・ステップ]] 2008/03/22からのアクセス回数 &counter; #contents mavenを使ったプロジェクトでは、 -- コンパイル -- テスト -- 実行 のサイクルはコンパクトに実行できるのですが、いざWebアプリケーションをデバッグしようと するとwarファイルをtomcatのwebappsにコピーしてEclipseのデバッガーを使ってデバッグした 経験はありませんか? ここでは、jettyプラグインで起動したWebアプリケーションをEclipseでデバッグする方法を説明します。 ** mavenの実行プログラムのデバッグ設定 [#za541cbf] javaのVMには、外部からのリモートデバッグを可能にするオプションが提供されています。 例えば、xxx.jarを #pre{{ $ java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -jar xxx.jar }} これで、8000ポートを使って他のマシンからxxx.jarのプログラムをデバッグすることができるようになります。 *** mavenの設定 [#tb2d2738] このリモートデバッグオプションをmavenに使用するために、環境変数MAVEN_OPTSを使います。 LinuxやMac OSXでは.bashrcに以下の行を追加します。Windowsの場合にはユーザの環境変数にセットしてください。 #pre{{ export MAVEN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" }} Mac OSXでターミナルを使用する場合には、ターミナルの起動後に以下のコマンドを実行してください。 (どうもターミナルの場合には、.bashrcが実行されないみたいです、どうしてでしょう?) #pre{{ $ . ./bashrc }} *** Eclipseの設定 [#c5302a48] つぎにEclipseのデバッガを設定します。 -- JavaのPackage Explorereからデバッグしたいプロジェクトを選択(ここでは、mvc-convention) -- Runメニューから"Debug..."を選択します -- Remote Java Applicationを選択し、右クリックでNewを選択します #ref(remote_application.jpg); -- Name:がmvc-convention、Project:にmvc-conventionが設定されていることを確認します -- Host, Portがデバッグ対象のホストマシンのIPアドレスとポートを指定します。同一マシンの場合localhost, 8000とします。 #ref(remote_debug_setting.jpg); -- Closeボタンで保存します ** デバッグの例 [#mc8c83ee] では、実際にmvc-conventionのWebアプリケーションをデバッグしてみましょう。 *** ブレークポイントの設定 [#r676466c] 最初の一覧画面の表示でブレークポイントを設定してみましょう。 #ref(breakpoint.jpg); *** jettyプラグインの起動 [#ge045b27] つぎに、jettyプラグインでmvc-conventionのWebアプリケーションを起動します。 #pre{{ $ 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に設定されていることを示しています。 *** デバッガの起動 [#db4dcf5f] -- ブラウザーをDebug perspectiveにセットします -- Eclipseのrunメニューからdebug...を選択し、Remote Java Applicationのmvc-conventionを選択し、Debugボタンを押します。 *** ブラウザーの起動 [#r190f44e] ブラウザーを起動し、 #pre{{ http://localhost:8080/mvc-convention/ }} を選択すると デバッガがブレークポイントで停止します。 #ref(debug.jpg); ** コメント [#m1f474a6] この記事は、 #vote(おもしろかった,そうでもない,わかりずらい) 皆様のご意見、ご希望をお待ちしております。 #comment