Strutsを読む ~1日目: ソースコードリーディングをする環境構築~
利用するツールとしては、「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以下に無いと動かないようだ。クラスローダの動きが分からないため、原因は不明。。。