Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

4.2.2 Webアプリケーションを実行する場合の留意事項

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

<この項の構成>
(1) サーブレット/JSPのデフォルトマッピングについて
(2) DD(WEB-INF/web.xml)内のタグが設定されていない場合のデフォルト値について
(3) サーブレットのインスタンス作成数
(4) サーブレットのinitメソッドおよびserviceメソッドの実行のタイミング
(5) レスポンス送信時に使用されるサーブレットのバッファ
(6) クエリ文字列の解析について

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

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

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

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

URL 取り扱い
*.jsp JSPファイルとして取り扱われます。
*.jspx JSPドキュメントとして取り扱われます。なお,Servlet 2.2およびServlet 2.3の場合は静的コンテンツとして扱われます。
/servlet/* URLの「*」の部分には,サーブレットの完全修飾クラス名,またはweb.xmlで定義したサーブレット名を指定できます。サーブレットの完全修飾クラス名を指定した場合,指定したサーブレットが実行されます。サーブレット名を指定した場合,web.xmlで定義したサーブレットが実行されます。
実行するサーブレットのクラスは,WEB-INF/classes以下,またはWEB-INF/lib以下に配置されたJARファイルに含まれている必要があります。実行するサーブレットは,サーブレット名から検索されます。
URLに指定された「*」の部分がサーブレット名として定義されていない場合,サーブレットクラスが検索されます。

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

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

表4-3 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タイプの対応づけについては,マニュアル「Cosminexus リファレンス 定義編」を参照してください。

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

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

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

表4-4 デフォルトマッピングと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の?マーク以降に,"名前=値"の組が一つ以上組み合わさって構成されます。

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