2.2.2 Webアプリケーションのデプロイとアンデプロイの注意事項
ここでは,Webアプリケーションをデプロイ,またはアンデプロイする場合の留意事項について説明します。
- 〈この項の構成〉
(1) サーブレット/JSPのデフォルトマッピングについて
クライアントがリクエストするURLに対してどのサーブレットが呼び出されるかの設定をサーブレットマッピングといいます。Servlet仕様では,サーブレットマッピングをDD(WEB-INF/web.xml)内に記述するように求めています。
これに対して,Webコンテナでデフォルトで定義されているマッピングをデフォルトマッピングといいます。Webコンテナでは,次に示すマッピングをデフォルトで定義しています。
URL |
取り扱い |
---|---|
*.jsp |
JSPファイルとして取り扱われます。 |
*.jspx |
Servlet 2.4以降の仕様に準拠したWebアプリケーションについては,JSPドキュメントとして取り扱われます。なお,Servlet 2.2およびServlet 2.3仕様に準拠したWebアプリケーションの場合は静的コンテンツとして扱われます。 |
/servlet/* |
WEB-INF/classes以下,またはWEB-INF/lib以下に配置されたJARファイルに含まれているサーブレットのクラスが実行されます。実行するサーブレットは,サーブレット名から検索されます。 URLに指定された「*」の部分がサーブレット名として定義されていない場合,サーブレットクラスが検索されます。URLの「*」の部分には,サーブレットの完全修飾クラス名,またはweb.xmlで定義したサーブレット名を指定できます。 サーブレットの完全修飾クラス名を指定した場合,指定したサーブレットが実行されます。サーブレット名を指定した場合,web.xmlで定義したサーブレットが実行されます。 |
サーブレットのデフォルトマッピングについては,簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内で,次のパラメタに有効または無効を指定します。デフォルトの設定では,無効になっています。
webserver.container.servlet.default_mapping.enabled
簡易構築定義ファイル,および指定するパラメタの詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「4.3 簡易構築定義ファイル」を参照してください。
(2) DD(WEB-INF/web.xml)内のタグが設定されていない場合のデフォルト値について
Webコンテナでは,次に示すタグがDD(WEB-INF/web.xml)に設定されていない場合,次に示すデフォルト値を使用します。
タグ名 |
設定されていない場合のデフォルト値 |
---|---|
welcome-file-list |
<welcome-file-list> <welcome-file> index.jsp </welcome-file> <welcome-file> index.html </welcome-file> <welcome-file> index.htm </welcome-file> </welcome-file-list> |
session-timeout |
30 |
mime-mapping |
拡張子とMIMEタイプとの対応づけ。 |
DD(WEB-INF/web.xml)にこれらのタグを設定している場合には,次の設定となります。
-
<welcome-file-list>タグに設定された値で,デフォルト値を上書きします。
-
<session-timeout>タグに設定された値で,デフォルト値を上書きします。
-
<mime-mapping>タグに定義した拡張子単位の設定で,デフォルト値を拡張子単位に上書きします。
なお,DD(WEB-INF/web.xml)のmime-mappingタグにデフォルトで設定されている拡張子とMIMEタイプの対応づけについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「付録B.1 拡張子とMIMEタイプの対応づけ」を参照してください。
(3) サーブレットのインスタンス作成数
Webアプリケーション単位に同じクラスのサーブレットのインスタンスを一つ作成します。SingleThreadModelを継承したサーブレットのインスタンスも,一般のサーブレットと同様にWebアプリケーション単位に一つ作成します。
ただし,同一のサーブレットおよびJSPに対して,デフォルトのマッピングとDDに記述したマッピングの両方でアクセスすると,インスタンスは次のように生成されます。
URL |
インスタンス |
---|---|
*.jsp |
DDに記述したマッピングでアクセスした場合とは別のインスタンスが生成されます。 |
*.jspx |
|
/servlet/* |
|
また,SingleThreadModelを継承した単一のサーブレットに対して,Webアプリケーション単位にリクエストが並列に複数到着した場合,各スレッドがオーバラップしないで1スレッドずつ順に実行するように制御します。
(4) サーブレットのinitメソッドおよびserviceメソッドの実行のタイミング
サーブレットのinitメソッドおよびserviceメソッドの実行のタイミングは,デフォルトマッピングかサーブレットマッピングかによって異なります。
-
デフォルトマッピングでサーブレットにアクセスした場合
サーブレットのinitメソッドおよびserviceメソッドは,該当するURLにマッピングされているフィルタの処理の延長で,実行されます。
-
サーブレットマッピングでサーブレットにアクセスした場合
initメソッドはフィルタの処理の前に,実行されます。serviceメソッドは,該当するURLにマッピングされたフィルタの処理の延長で,実行されます。