ここでは、ソースアタッチについて説明します。 といっても、他のVMにリモートアタッチするわけではなく、 ソースにブレークポイントをかけステップ実行するための、 ふつうの?ソースアタッチです。
ソースにアタッチするには、ソースファイルが必要です。 TomcatやStrutsはオープンソースなので、ソースをダウンロードして 入手可能です。
Strutsのソースをダウンロードします。
以下から、strutsのソースをダウンロードします。
http://jakarta.apache.org/builds/jakarta-struts/release/v1.0.2/src/
パッケージエクスプローラーのstruts.jarを選択し、右クリック->プロパティー。
プロパティー画面でJavaソースの添付を選択。 アーカイブにダウンロードしたzipのパスを指定。
例:C:/download/jakarta/jakarta-struts-1.0.2-src.zip
ルートパスをブラウズし、ソースパスを指定。
例:jakarta-struts-1.0.2-src/src/share
OKボタンを押す。
パッケージエクスプローラ上でjarを開き(+を押し)、 クラスをダブルクリックして開きます。 ソースファイルが見えますね。
org.apache.struts.action.ActionServletのソースを開きます。
processメソッドの中でブレイクを設定します。
メソッドは(初期設定で)画面右側のアウトラインから選択すると便利です。
ブレイクはソースウィンドウ左側の灰色の部分をダブルクリックです。
Tomcatを起動し、Actionを呼ぶと、ブレイクがかかりましたね。
以下から、適当なzipをダウンロードします(中身はほとんど同じです)。
http://jakarta.apache.org/builds/jakarta-servletapi-4/nightly/src/
ServletAPIの場合は、struts.jarと若干設定が異なります(Tomcatプラグインだからか?)。
パッケージエクスプローラ上のservlet.jarを選択、右クリック->プロパティーを選択します。
Javaソースの添付を選択します。
変数パスのアーカイブの、変数ボタンを押します。
変数選択で、新規ボタンを押し、名前にはユニークな任意の名前、 パスにはダウンロードしたソースのzipファイル(あるいは解凍したフォルダ)を指定します。
例:
名前 SERVLET_SRC
パス C:/download/jakarta/jakarta-tomcat-4.0.4-src.zip
ルート変数パスの方も同様に設定します。ここではパスに何も指定しません。
例:
名前 SERVLET_ROOT
パス
ルート変数の拡張子ボタンを押し、zip内のソースパスを指定します。
例:(SERVLET_ROOT)/jakarta-servletapi-4/src/share
ちょっとこのあたりの設定の意味(変数が空で拡張子で設定?)が よくわかりませんが、とりあえずこの設定で動きます。
javax.servlet.HttpServlet#servlet()メソッドの中でブレイクをかけます。
ブラウザからリクエストを送ると、ブレイクがかかりましたね。
以下から、現在自分が使ってるバージョンのTOMCATのソースをダウンロードします。
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/
手順は上のソースアタッチと同じです。
jasper-runtime.jarの他に、 TOMCAT_HOME/server/lib/catalina.jar などにアタッチしておくと、コンテナ側の処理もステップ実行できます。
JDKは初期状態でアタッチ済です。 JDKの中までデバッグ可能です。
というわけで、ここでは日本語のJavaDocを設定してみましょう。 JDKの日本語ドキュメントを ダウンロードしてない人はダウンロードしましょう。
JRE_LIB...rt.jarを選択、右クリック->プロパテイーを選択。
Javadocロケーションを選択し、APIドキュメントのあるパスを設定します。
例:Javaロケーション: file:/C:/apps/j2sdk1.4.0_01/docs/ja/api/
F1キーから開くJavaDocはこのリンクへ飛べます。
でもF2ボタンで出てくるショートコメントはソースファイルから取得してるらしく。。。このJavaDocは反映されないようです。
えーいろいろソースアタッチしまくりましたが、実際使うのは、
自分たちが作成している部分について(struts.jarへのアタッチ)でしょう。
でも、まあ、servlet.jarの中とかJDKの中とかたまに追ってみるのも面白いっすよ。
(2002/10/4)