https://naba-san.hatenablog.com/


Servlet環境構築時の用語メモ

Struts1/Struts2のお仕事受けたのはいいけど、まじめにサーブレット環境構築した事なんてないぞ・・

とりあえず用語を並べてみる。設定ファイル大杉。。

Servlet

Javaを使ったサーバサイド処理の仕組みを決めた仕様。エンジンの実装は別で存在する。

コンテキスト

サーブレットエンジン上で動作させる、アプリケーションの単位のこと。
サーブレットエンジン(Tomcat)上では、複数のアプリケーションを同時に起動できる。
このとき、アプリケーション毎にセッションや設定(URLの解決等)を行っており、「コンテキスト」として管理する。

コンテキストルート

アプリケーションのルートに当たるディレクトリパス、またはそれに紐づくURL。

web.xml / デプロイメント ディスクリプタ(配置記述子)

サーブレットエンジンがコンテキストを初期化する際に必要となる、基本設定を書くところ。

Tomcat の場合、コンテキストルート内の /WEB-INF/web.xml に配置されたファイルを参照する。
※ デプロイメント ディスクリプタ自体は、Servlet の標準に則って配置するもの。

URLと各クラスのマッピング、メッセージ画面の定義などを記述する。
新しい画面を作成する場合、原則として編集が必要となる(または、WebServlet アノテーションでURLパターンを記述する)。

他にフレームワークを組み合わせる場合、ここでフレームワークの指定クラスを全URLパターンに紐づけたりする事も。

WEB-INF, META-INF

Servlet 上、クライアントから見せないディレクトリ。
設定ファイルなどを配置する場合、原則としてここに置く。

JVMの動作に必要なものは、原則として WEB-INF 以下に配置する。

[WEB-INF/classes] : コンパイル済み class ファイル (プロパティもここに配置する)
[WEB-INF/lib] 参照ライブラリ(jar)

Tomcat

言わずと知れたサーブレットエンジン。
Tomcatのバージョンにより、準拠しているServletのバージョンが異なる。

server.xml

Tomcat固有のサーバ環境設定ファイル。

原則として、Tomcat の環境毎に1つのみ存在し、待機ポートの指定、読み込むコンテキストなどを記述する。
コネクションプールを利用する場合、ここで Resource 要素を使ってDB資源を記述する。

※ 特定コンテキストのみに紐づく設定は、context.xml としてデプロイ対象に含めることが可能(Tomcat 5.5辺りから)。

context.xml

server.xml 同様、これも Tomcat 固有の設定ファイル。
/META-INF/context.xml に配置されたファイルを参照する。

server.xml から、 要素の中身をデプロイ対象のアプリケーションに吐き出したもの。
つまり対象アプリケーション(コンテキスト)固有の Tomcat に対する設定があれば、ここに書く。
(共用環境などでは、server.xml 側で許可されていない事もあるらしい。)

コネクションプールで使用するDB資源も、ここに記述可能。

Eclipse

ここもいろいろハマった。

動的Webプロジェクト

Tomcat と連携させた場合、プロジェクト名がそのままコンテキスト名になる。

WebContent/

Eclipseの動的Web プロジェクトを扱う場合のみ、ドキュメント ルートとなるディレクトリ(初期設定でそのようになっているだけ)。

デプロイの設定

プロジェクトのプロパティから「Web デプロイメント・アセンブリー」で変更可能。

動的にビルドされた、Tomcat が実際に利用するファイルは、
「workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps」
等に展開されるので、設定する際はココと突き合わせるとよい。(多少パスは変わるはず)