前 | トップ | 次 |
背景 レイアウト 記述子 統合 |
あなたのソースコードディレクトリの構成をどのようにするか説明する前に、 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
ファイルを取り出します。
要求された形式でWebアプリケーションアーカイブファイルを作成することを容易にするために、 あなたのWebアプリケーションの"実行可能"版(つまり、アプリケーションの実行時にTomcatが実際に使用するファイル)を、 WARフォーマットが要求するものと同じディレクトリ構成にしておくと便利です。 これを行うためには、最終的に以下の内容をあなたのアプリケーションの"ドキュメントルート"ディレクトリに置きます。
WEB-INF/classes/
の下に反映しなければなりません。
たとえば、
com.mycompany.mypackage.MyServlet
という名前のJavaクラスは、
WEB-INF/classes/com/mycompany/mypackage/MyServlet.class
という名前のファイルとして格納する必要があります。
Tomcat(または、他の2.2と互換性のあるサーバ)にアプリケーションをインストールするときには、
あなた自身のwebアプリケーションのために、
WEB-INF/lib/
ディレクトリにあるJARファイルのすべての
クラスだけでなく、
WEB-INF/classes/
ディレクトリ内のクラスを
クラスパスに追加します。
つまり、必要なライブラリクラスのすべてを含んだものを、(もちろんあなたの利用するサードパーティライブラリの再配布権のライセンスを確認して)これらの場所のどこかにおけば、システムのクラスパスに変更を加える必要なしに、簡単にあなたのWebアプリケーションをインストールできます。
この情報の大部分は、Servlet API仕様 version 2.2の9章から抜粋してるので 詳細は、そちらで調べてください。
上記のように、WEB-INF/web.xml
ファイルは、
あなたのアプリケーションのためのWebアプリケーション配備記述子を含んでいます。
ファイル名の拡張子が意味するように、このファイルはXMLドキュメントであり、(アプリケーションが配備されるときにシステム管理者が割り当てるコンテキストパスを除けば)サーバが必要とするあなたのアプリケーションについてのすべてを定義します。
完全な文法と配備識別子の意味は、Servlet API仕様バージョン2.2の13章で定義されています。 そのうち開発ツールがあなたに代わって配備識別子の作成と編集機能を提供するようになるでしょう。 しかし、当面の間は、出発点として基本的なweb.xml ファイルが提供されます。 このファイルは、それぞれの含まれている要素の説明のためのコメントを含んでいます。
Webアプリケーションを実行するためには、Servletコンテナに統合するか、インストールしなければなりません。 これは、開発期間中でも同じです。 実行環境を提供するために、Tomcatを使って説明します。 Webアプリケーションは、以下の3つの異なる方法のどれかを使って、 Tomcatに配備することができます。
$TOMCAT_HOME/webapps/
ディレクトリ内のサブディレクトリに、
配備されているディレクトリ構造をコピーします。
Tomcatは、あなたの選んだサブディレクトリ名をベースにして、アプリケーションをコンテキストパスに割り当てます。
開発時にはこのテクニックがもっとも早く簡単なので。私たちは私たちが設定したbuild.xml
ファイルで使用します。
$TOMCAT_HOME/webapps/
ディレクトリにWebアプリケーションのアーカイブファイルをコピーします 。
Tomcatが起動したときに、自動的にWebアプリケーションアーカイブファイルを
配備して、アプリケーションを実行します。
この方法は、一般的に、あなたの内部開発スタッフやサードパーティベンダーによって提供されるアプリケーションを、インストール済のTomcatに対して、追加インストールする場合に使用します。
注意 - この方法を使って、あとであなたのアプリケーションを
更新したくなった場合には、Webアプリケーションアーカイブファイルを入れ替えて、
Tomcatが作成した配備ディレクトリを削除して、その変更を有効にするために
Tomcatをリスタートする必要があります。
server.xml
設定ファイルに、<Context>
エントリに追加する。
この方法は以下で簡単に説明しますが、
$TOMCAT_HOME/webapps/
ディレクトリ以外の場所に、
あなたのWebアプリケーションのドキュメントルートを設定することができます。
これを行うには、(Tomcat 3.2では)以下の手順が必要です。
Tomcatのserver.xml
ファイルに新しく <Context>
エントリを追加するためには、(Tomcat 3.2では)以下のステップが必要です。
$TOMCAT_HOME/conf/server.xml
ファイルをエディタで開きます。<Context>
要素の後ろです)。
<Context>
要素を追加します。
以下の属性がサポートされています。
あなたのアプリケーションを他のサーブレットコンテナに統合する方法は、 それぞのコンテナによって違いますが、Servlet API仕様(version 2.2)に互換性のあるすべてのコンテナは、 Webアプリケーションアーカイブファイルを受け入れる必要があります。
[訳注: これは熊坂祐二が翻訳しました。 日本語訳に対するコメントは、jajakarta-report@nekoyanagi.com宛に送って下さい。]