リモートのTomcatで動作するWebアプリケーションを、Eclipseからデバッグする方法
本記事を書くことになった経緯
こんなことに遭遇したことはないだろうか。
WebアプリケーションをローカルPCで開発し、別環境にデプロイするも、動作確認するとなぜか期待通り動かない。ローカルでは動いているのに。。。
万が一、それが本番環境だったとしたら・・・冷や汗ですね。
原因は様々で、
- 環境差異
- データの問題
- 単純なバグ・・・
こんな時、Webアプリケーション開発者は思うだろう。
「ローカル環境以外で動くWebアプリケーションを、デバッグすることはできないだろうか」
本記事では、リモート環境のTomcat上で動作するWebアプリケーションを、Eclipseからデバッグする方法を記載する。
動作環境(古いとか言わないでください。。)
リモート環境
OS:Red Hat 4.1.2-50
jdk:1.6.0_45 64-Bit Server VM
Tomcat:Apache Tomcat/6.0.37
ローカル環境
Eclipse:3.7 Indigo
Tomcatの設定
起動シェルを変更
$TOMCAT_HONE/bin/startup.sh
【変更前】
exec "$PRGDIR"/"$EXECUTABLE" start "$@"
【変更後】jpdaを追加するだけ
exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"
jpdaってなんだ?
→Java Platform Debugger Architecture
https://docs.oracle.com/javase/jp/6/technotes/guides/jpda/architecture.html
ちなみに、
$PRGDIR/$EXECUTABLE は $TOMCAT_HONE/bin/catalina.sh
のことです。
catalina.shを見ると、下記の記述があることから、リモードデバッグする際のポートは”8000”だとわかります。
JPDA_ADDRESS="8000"
Eclipseの設定
- 実行 > デバッグの構成 を選択
- 左側のペインにある「リモート Java アプリケーション」を選択し、右クリック > 新規 を選択
- デバッグするプロジェクトを選択
(デバッグ対象のプロジェクトがインポートされていること前提) - リモートサーバのホスト(非公開情報のため隠しています)、ポート(8000)を入力
- 「適用」ボタン押下で登録完了
デバッグ実行
- 「デバッグ」ボタン押下で、いざデバッグ!!
デバッグ接続が完了すると、デバッグタブにスレッドツリーが表示されます。
ここでエラーが出る場合は、下記エントリを参考にしてみてください。(弊社同期の記事を宣伝!)
新米エンジニア(アプリ・インフラエンジニア問わず)に知っておいてほしいトラブルシューティング入門 実践編
あとはいつも通り、デバッグポイントを置いてブラウザからアクセス。
デバッグ成功!!
※リモートデバッグをしている間、他の開発者がその環境を触れなくなることがあります。(あれっ・・なぜかレスポンスが返ってこない?)
※必要な作業が終わったらデバッグ接続を切断しておくようにしましょう。
まとめ
リモート環境で動作するアプリケーションもデバッグが出来る。
デバッグしている間は他の利用者に迷惑が掛かる可能性があるため、必要な作業が終わったら接続断すること。