さて、WEB-INFディレクトリの直下には、設定ファイルweb.xmlを配置する決まりになっています。同ファイルはDD(Deployment Descriptor)ファイルとも呼ばれ、主に以下の設定情報をWebコンテナに伝える役割を担います。
以下の例では、サーブレットTestServletにURLを割り当てています。
<?xml version="1.0"?> <web-app> <servlet> <servlet-name>TestServlet</servlet-name> <servlet-class>sample.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> </web-app>
ここでは、サーブレット・クラスsample.TestServletに対して、/testというURLを割り当てています。よってWebブラウザからは、以下のURLでアクセス可能になります。
http://<ホスト名>/<Webアプリケーションのパス>/test
また、以下のように記述することで、特定のHTTPステータスコードや例外が発生した場合に表示するエラー・ページを指定できます。
<error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page> <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/error.jsp</location> </error-page>
そのほか、web.xmlを利用した初期化パラメータ指定やセキュリティ設定については、サーブレット仕様に詳しく記載されています。
Java EEのWebアプリケーションは、以上のようなディレクトリ構成でまとめておくことで、TomcatをはじめさまざまなJava EEサーバ製品に簡単に配置して動作させることができます。
さらに、Webアプリケーションのディレクトリ全体をJARファイルに圧縮し、拡張子を「.war」とすることで、「WAR(Web ARchive)ファイル」と呼ばれるファイル形式にまとめられます。
例えば、Webアプリケーションの成果物すべてを「foo.war」という1つのWARファイルに収めておけば、同ファイルをTomcatのwebappsディレクトリにコピーするだけで、Tomcatがそれを自動展開してWebアプリケーション「foo」の動作を開始します。
Java EEでは、このようなWARファイルの作成とWebコンテナへの配置を、それぞれ「パッケージング」と「デプロイ」と呼びます。このパッケージング&デプロイの仕組みによって、Webアプリケーションのポータビリティが高まり、特定のWebコンテナへの依存度を抑えることが可能です。
ちなみに実際の開発では、ソースコードのコンパイルからWARファイルのパッケージング、そしてWebコンテナへのデプロイまでの一連の作業を、「Ant」などのビルドツールで自動化する方法が一般的です。
以上、今回はJava EEにおけるWebアプリケーションのパッケージング方法を紹介しました。本連載はこれにて終了となりますが、これまでご愛読いただきありがとうございました。
Copyright © ITmedia, Inc. All Rights Reserved.