Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)


2.2.2 Webアプリケーションのデプロイとアンデプロイの注意事項

ここでは,Webアプリケーションをデプロイ,またはアンデプロイする場合の留意事項について説明します。

〈この項の構成〉

(1) サーブレット/JSPのデフォルトマッピングについて

クライアントがリクエストするURLに対してどのサーブレットが呼び出されるかの設定をサーブレットマッピングといいます。Servlet仕様では,サーブレットマッピングをDD(WEB-INF/web.xml)内に記述するように求めています。

これに対して,Webコンテナでデフォルトで定義されているマッピングをデフォルトマッピングといいます。Webコンテナでは,次に示すマッピングをデフォルトで定義しています。

表2‒3 Webコンテナで定義されているサーブレット/JSPのデフォルトマッピング

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で定義したサーブレットが実行されます。

なお,サーブレットはweb.xmlにマッピング定義が必要なため,web.xmlが省略されたWebアプリケーションの場合,サーブレットのデフォルトマッピングは有効になりません。

サーブレットのデフォルトマッピングについては,簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内で,次のパラメタに有効または無効を指定します。デフォルトの設定では,無効になっています。

webserver.container.servlet.default_mapping.enabled

簡易構築定義ファイル,および指定するパラメタの詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「4.3 簡易構築定義ファイル」を参照してください。

(2) DD(WEB-INF/web.xml)内のタグが設定されていない場合のデフォルト値について

Webコンテナでは,次に示すタグがDD(WEB-INF/web.xml)に設定されていない場合,次に示すデフォルト値を使用します。

表2‒4 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)にこれらのタグを設定している場合には,次の設定となります。

なお,DD(WEB-INF/web.xml)のmime-mappingタグにデフォルトで設定されている拡張子とMIMEタイプの対応づけについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「付録B.1 拡張子とMIMEタイプの対応づけ」を参照してください。

(3) サーブレットのインスタンス作成数

Webアプリケーション単位に同じクラスのサーブレットのインスタンスを一つ作成します。SingleThreadModelを継承したサーブレットのインスタンスも,一般のサーブレットと同様にWebアプリケーション単位に一つ作成します。

ただし,同一のサーブレットおよびJSPに対して,デフォルトのマッピングとDDに記述したマッピングの両方でアクセスすると,インスタンスは次のように生成されます。

表2‒5 デフォルトマッピングとDDに記述したマッピングの両方でアクセスする場合のインスタンスの生成

URL

インスタンス

*.jsp

DDに記述したマッピングでアクセスした場合とは別のインスタンスが生成されます。

*.jspx

/servlet/*

  • サーブレットの完全修飾クラス名を指定した場合

    DDに記述したマッピングでアクセスした場合とは別のインスタンスが生成されます。

  • web.xmlで定義したサーブレット名を指定した場合

    DDに記述したマッピングでアクセスした場合と同じインスタンスが生成されます。

また,SingleThreadModelを継承した単一のサーブレットに対して,Webアプリケーション単位にリクエストが並列に複数到着した場合,各スレッドがオーバラップしないで1スレッドずつ順に実行するように制御します。

(4) サーブレットのinitメソッドおよびserviceメソッドの実行のタイミング

サーブレットのinitメソッドおよびserviceメソッドの実行のタイミングは,デフォルトマッピングかサーブレットマッピングかによって異なります。

(5) レスポンス送信時に使用されるサーブレットのバッファ

レスポンス送信時に使用されるサーブレットのバッファは,リクエスト処理スレッドの数だけ保持されます。javax.servlet.ServletResponseのsetBufferSizeメソッドを使用してバッファサイズを変更する場合は,バッファサイズ×リクエスト処理スレッド数分のメモリが確保されることを考慮した上で,メモリ使用量を見積もってください。

(6) クエリ文字列の解析について

クエリ文字列は,URLの?マーク以降に,"名前=値"の組が一つ以上組み合わさって構成されます。

アプリケーションサーバでは,"名前=値"の部分に複数の"="がある場合,最初の"="より前の文字列が名前,後ろの文字列が値となります。例えば,URLが「http://host/examples?a=b=c」の場合は,「名前"a"の値は"b=c"」と解析されます。