Strutsを読む ~1日目: ソースコードリーディングをする環境構築~

今更ながらStrutsソースコードリーディングを始めた。

 

利用するツールとしては、「Pleiades All in One」を利用するが、これは通常通りインストールすればOK。

作成する環境は、StrutsソースコードからEclipseのプロジェクトを作成し、

そのプロジェクトの中にサンプルコードも含ませるイメージ。

こうすることで、Strutsを弄りながらサンプルの挙動を確認できる。

ビルドするStrutsのプロジェクト(パッケージ)は下記2つ。

struts-core

struts-taglib

 

手順としては下記の通り。

1. Eclipseで動的プロジェクト作成

2. struts-core を上記プロジェクトにインポート

上記で作成されたsrcフォルダを右クリックし、

[展開フォルダ]\struts-1.3.10\src\core\src\main\java(orgフォルダの一個上の階層)をインポート 

3. ビルドエラー(Mock~)が出るので、クイックフィックス ⇒ 実装無しメソッド追加で解消

4. struts-taglib を同様にインポート

5. 静的コンテンツのデプロイ(tldファイル)

[展開フォルダ]\struts-1.3.10\src\taglib\src\main\resources\META-INF\tld

フォルダをプロジェクトのWEB-INF以下に置く。

6. 静的コンテンツのデプロイ(chain-config.xml)

 プロジェクト内に下記XMLを配置する。

[展開フォルダ]\struts-1.3.10\src\core\src\main\resources\org\apache\struts\chain

※これが無いと"org/apache/struts/chain/chain-config.xml に対するマッピング設定がありません"というエラーが出る。Javaソースはプロジェクトにインポートしたけど、静的コンテンツ等のリソースをインポートしていないため、XMLが有りませんよという意味のエラー。

 

7. サンプルコードをデプロイ

下記ページのものをそのままデプロイした。

http://www.zealseeds.com/SysDevTech/Struts/Struts/introduction/helloworld/index.html

 

※余談だが、今回作成したプロジェクトはStrutsもサンプルコードも全て同じプロジェクト内でビルドしたが、Eclipseの外部プロジェクト読み込み機能を利用して、サンプルとStrutsのプロジェクトを分離しようとしてみたところ、ActionServletが有りませんよエラーが発報した。どうやらActionServletはプロジェクトのWEB-INF/lib以下に無いと動かないようだ。クラスローダの動きが分からないため、原因は不明。。。