トップ
背景 レイアウト 記述子 統合

3. 配備の構成

3.1 背景

あなたのソースコードディレクトリの構成をどのようにするか説明する前に、 Webアプリケーションの実行時の構成について調べることは役に立ちます。 Servlet API仕様 2.2版より前では、サーバプラットフォーム間では一貫性はほとんどありませんでした。 しかし、2.2の仕様に適合したサーバでは、 以下に説明する標準形式のWebアプリケーションアーカイブを受け入れることが要求されます。

Webアプリケーションは、標準レイアウトのファイルとディレクトリ階層として定義します。 このような階層は、"unpacked"形式としてアクセスされ それぞれのディレクトリとファイルはファイルシステムで分割されて存在します。 また、"packed"形式は、Webアーカイブ(Web ARchive)またはWARファイルとして知られています。 開発時には前者の形式の方が便利ですが、後者の形式はあなたのアプリケーションを配布して、インストールするときに使用します。

あなたのWebアプリケーション階層のトップレベルディレクトリは、あなたのアプリケーションのドキュメントルートでもあります。 ここには、あたなのアプリケーションのユーザインタフェースを構成するHTMLファイルとJSPページの場所です。 システム管理者が、ある特定のサーバーにアプリケーションを配備するときには、 彼または彼女はコンテキストパス(context path)をあなたのアプリケーションに割り当てます。 つまり、システム管理者があなたのアプリケーションをコンテキストパスの/catalog/に割り当てた場合には、要求された/catalog/index.htmlを参照するURIは、ドキュメントルートからindex.htmlファイルを取り出します。

3.2 標準ディレクトリ・レイアウト

要求された形式でWebアプリケーションアーカイブファイルを作成することを容易にするために、 あなたのWebアプリケーションの"実行可能"版(つまり、アプリケーションの実行時にTomcatが実際に使用するファイル)を、 WARフォーマットが要求するものと同じディレクトリ構成にしておくと便利です。 これを行うためには、最終的に以下の内容をあなたのアプリケーションの"ドキュメントルート"ディレクトリに置きます。

Tomcat(または、他の2.2と互換性のあるサーバ)にアプリケーションをインストールするときには、 あなた自身のwebアプリケーションのために、 WEB-INF/lib/ディレクトリにあるJARファイルのすべての クラスだけでなく、 WEB-INF/classes/ ディレクトリ内のクラスを クラスパスに追加します。 つまり、必要なライブラリクラスのすべてを含んだものを、(もちろんあなたの利用するサードパーティライブラリの再配布権のライセンスを確認して)これらの場所のどこかにおけば、システムのクラスパスに変更を加える必要なしに、簡単にあなたのWebアプリケーションをインストールできます。

この情報の大部分は、Servlet API仕様 version 2.2の9章から抜粋してるので 詳細は、そちらで調べてください。

3.3 Webアプリケーション配備記述子

上記のように、WEB-INF/web.xmlファイルは、 あなたのアプリケーションのためのWebアプリケーション配備記述子を含んでいます。 ファイル名の拡張子が意味するように、このファイルはXMLドキュメントであり、(アプリケーションが配備されるときにシステム管理者が割り当てるコンテキストパスを除けば)サーバが必要とするあなたのアプリケーションについてのすべてを定義します。

完全な文法と配備識別子の意味は、Servlet API仕様バージョン2.2の13章で定義されています。 そのうち開発ツールがあなたに代わって配備識別子の作成と編集機能を提供するようになるでしょう。 しかし、当面の間は、出発点として基本的なweb.xml ファイルが提供されます。 このファイルは、それぞれの含まれている要素の説明のためのコメントを含んでいます。

3.4 Tomcatとの統合

Webアプリケーションを実行するためには、Servletコンテナに統合するか、インストールしなければなりません。 これは、開発期間中でも同じです。 実行環境を提供するために、Tomcatを使って説明します。 Webアプリケーションは、以下の3つの異なる方法のどれかを使って、 Tomcatに配備することができます。

Tomcatのserver.xmlファイルに新しく <Context> エントリを追加するためには、(Tomcat 3.2では)以下のステップが必要です。

あなたのアプリケーションを他のサーブレットコンテナに統合する方法は、 それぞのコンテナによって違いますが、Servlet API仕様(version 2.2)に互換性のあるすべてのコンテナは、 Webアプリケーションアーカイブファイルを受け入れる必要があります。

[訳注: これは熊坂祐二が翻訳しました。 日本語訳に対するコメントは、jajakarta-report@nekoyanagi.com宛に送って下さい。]