軽くググッた限り、マルチインスタンス運用下のtomcatにリモートデバッグ設定する方法が見つからなかったので、備忘も兼ねて
環境
バージョン | |
---|---|
CentOS | 7.2 |
Tomcat | 7.0系 |
背景
- 通常、tomcatのリモートデバッグ設定は、catalina.shからjpda(Java Platform Debugger Architecture)を有効化する形で行う
catalina.sh jpda start
- だが、CentOS7にyumでtomcat7をインストールすると、catalina.shは生成されない。つまり、この方法は使えない ヽ(´ー`)ノ
前提
ポート類は事前に利用可能な状態にしておくこと
こちらの内容を前提とします(特に[tomcatサービスの管理])。大変詳しく解説されております
対処
1. tomcat用serviceファイル /usr/lib/systemd/system/[tomcat@.service]、項目[EnviromentFile]で指定したファイルに、以下の記述を追加する
JAVA_OPTS = '[元々の内容] -agentlib:jdwp=transport=dt_socket,address=[ポート番号],server=y,suspend=n'
JPDA_SUSPEND=y
JPDA_ADDRESS=[このホストのIP]:[ポート番号]
2.マルチインスタンス運用時は、このファイルが複数あるはずなので、すべてのファイルに追加する。ポート番号の重複に注意
3.tomcatを再起動する
systemctl restart [tomcat@.service]
4.リモートから、設定したポートに接続できることを確認する。"Connection refused"がでなければOK
telnet [さっき設定したIP] [さっき設定したポート番号]
5.Eclipseから接続する場合、メニュー[実行] -> [デバッグの構成] -> [リモートJavaアプリケーション]から、接続タイプ[標準(ソケット接続)」、ホスト[さっき設定したIP]、ポート[さっき設定したポート番号]を設定し、[デバッグ]ボタンを押す
解説
やっていることは、catalina.shで付加されるデバッグ設定オプション文字列を、EnviromentFileのオプション設定部に追加しているだけ
前述のページでも触れられているが、他ディストリビューションと環境が大きく異なる為、面食らった
参考
-
- JAVA_OPTSに付加した、jdwpについての解説有