#freeze
[[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(おもしろかった[6],そうでもない[0],わかりずらい[1])
#vote(おもしろかった[7],そうでもない[0],わかりずらい[1])

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

#comment_kcaptcha

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc