Cosminexus 機能解説
Servlet 2.4仕様で追加,変更された仕様を,Cosminexus上で使用するときの注意事項を示します。Servlet 2.4仕様およびServlet 2.3仕様については,それぞれの仕様書(Servlet 2.4仕様書,Servlet 2.3仕様書)を参照してください。
Servlet 2.4仕様で追加されたX-Powered-Byヘッダはレスポンスに追加されません。
javax.servlet.ServletRequestクラス,およびjavax.servlet.ServletContextクラスのgetRequestDispatcherメソッドで取得したjavax.servlet.RequestDispatcherクラスのforwardメソッドを実行すると,リクエストオブジェクトには次のキーの属性が追加されます。ただし,javax.servlet.ServletContextクラスのgetNamedDispatcherメソッドで取得したRequestDispatcherオブジェクトのforwardメソッドでは追加されません。
これらの属性は,Webコンテナによって追加されます。javax.servlet.ServletRequestAttributeListenerに属性追加のイベントは通知されません。追加される属性の値については,Servlet 2.4仕様書を参照してください。
javax.servlet.SingleThreadModelインタフェースは,Servlet 2.4仕様から非推奨となっています。
Cosminexusでは,Webアプリケーションのバージョンに関係なく,javax.servlet.SingleThreadModelインタフェースを使用できます。ただし,Servlet 2.4仕様を参照し,非推奨となった理由に注意して使用してください。
javax.servlet.ServletResponseクラスのsetLocaleメソッドによって,HTTPレスポンスのContent-Typeヘッダに文字エンコーディングが設定されます。Servlet 2.4仕様では,設定される文字エンコーディングが有効となる条件が変更されています。
Cosminexusで有効となる条件を,Servlet 2.4とServlet 2.3に分けて示します。
javax.servlet.UnavailableException例外は永久的に利用できないことを示します。javax.servlet.UnavailableException例外をthrowしたサーブレット,JSPにアクセスした場合のHTTPレスポンスコードの仕様が,Servlet 2.4仕様で追記されています。
Cosminexusでこの例外をthrowしたサーブレット,JSPにアクセスした場合のHTTPレスポンスコードを,Servlet 2.4とServlet 2.3に分けて示します。
javax.servlet.http.HttpSessionListenerインタフェースのsessionDestroyedメソッドを呼び出すタイミングが,Servlet 2.4仕様で変更されています。
Cosminexusでこのメソッドを呼び出す場合のタイミングを,Servlet 2.4とServlet 2.3に分けて示します。
なお,セッションタイムアウトが無効のとき,次の順序でセッションに関するリスナが通知されます。Webアプリケーションのバージョンごとに,順序を示します。
javax.servlet.http.HttpServletResponseクラスのsendRedirectメソッドを使用する条件が,Servlet 2.4仕様で変更されています。
Cosminexusでこのメソッドを正常に実行するには,次の条件をすべて満たす必要があります。
この条件を満たさない場合のエラー制御を,Servlet 2.4とServlet 2.3に分けて示します。
Servlet 2.4仕様では,HTTPステータスコードの302を示す定数として,javax.servlet.http.HttpServletResponseクラスに「SC_FOUND」が追加されています。また,下位互換性のため,Servlet 2.3仕様で定義されていた「SC_MOVED_TEMPORARILY」はそのまま使用できます。
Cosminexusでは,Webアプリケーションのバージョンに関係なく,「SC_FOUND」および「SC_MOVED_TEMPORARILY」を使用できます。
なお,ステータスメッセージの「Found」がWebコンテナで使用されるのは,次の場合です。
Servlet 2.4仕様では,サービスメソッド実行中のjavax.servlet.http.HttpSessionクラスでのタイムアウトについて仕様が追記されています。
Cosminexusでは,Webアプリケーションのバージョンに関係なく,Webアプリケーションでのリクエスト処理を実行している間は,HttpSessionはタイムアウトされません。
また,Webアプリケーション単位またはURLグループ単位の同時実行スレッド数制御によって,リクエストが実行待ち状態の場合も,HttpSessionはタイムアウトされません。ただし,Webコンテナ単位での同時実行スレッド数制御による実行待ち状態の場合は,HttpSessionはタイムアウトされるので注意してください。
Servlet 2.4仕様では,リスナで例外が発生した場合についての記述が追加されています。
Cosminexusを使用している場合で,リスナで例外が発生した場合の制御を,Servlet 2.4とServlet 2.3に分けて示します。
Webアプリケーションで外部のライブラリを使用する場合に記載するMANIFESTファイルの扱いについて,Servlet 2.4仕様では記述が変更されています。
Cosminexusでは,Webアプリケーションのバージョンに関係なく,MANIFESTファイルの存在,およびMANIFESTファイルの内容は確認されません。
サーブレットのバージョンが異なるWebアプリケーション間で,クロスコンテキストを使用したリクエストをforwardしたあとの動作,およびincludeしたあとの動作を,次の表に示します。
表4-50 forward後およびinclude後の動作
項番 | Servlet 2.4仕様の追加機能/Webアプリケーションのバージョンで違いのある機能 | リクエストのforward先/include先の動作 | |
---|---|---|---|
2.4から2.3にforward/include※1 | 2.3から2.4にforward/include※2 | ||
1 | forward時またはinclude時のフィルタ適用 | forward後/include後のサーブレット,またはJSPから,さらにforwardまたはincludeする場合,Servlet 2.4仕様が適用され,フィルタは使用できます。 | forward後/include後のサーブレット,またはJSPからさらにforwardまたはincludeする場合,Servlet 2.3仕様が適用され,フィルタは使用できません。 |
2 | javax.servlet.ServletRequestAttributeListenerの呼び出し | Servlet 2.4仕様が適用され,リクエストへの属性追加時にリスナが使用できます。 | Servlet 2.3仕様が適用され,リクエストへの属性追加時にリスナは使用できません。 |
3 | JSPのコンパイル | Servlet 2.3に対応したアプリケーションとしてJSPコンパイルを実行します。 | Servlet 2.4に対応したアプリケーションとしてJSPコンパイルを実行します。 |
4 | javax.servlet.ServletResponseクラスのsetLocaleメソッド | Servlet 2.4仕様が適用され,次に示す条件をすべて満たす場合,文字エンコーディングの設定が有効となります。
|
Servlet 2.3仕様が適用され,レスポンスがコミットされる前である場合,文字エンコーディングの設定が有効となります。 |
5 | 永久的に利用できないことを示すjavax.servlet.UnavailableException例外をthrowしたサーブレット,JSPへのディスパッチ | Servlet 2.3仕様が適用され,ステータス503を設定したレスポンスが返されます。 | Servlet 2.4仕様が適用され,ステータス404を設定したレスポンスが返されます。 |
6 | javax.servlet.http.HttpSessionListenerインタフェースのsessionDestroyedメソッド | Servlet 2.4仕様が適用され,HTTPセッションが破棄される前に実行されます。 | Servlet 2.3仕様が適用され,HTTPセッションが破棄されたあとに実行されます。 |
7 | javax.servlet.http.HttpServletResponseクラスのsendRedirectメソッドに不正なURLを指定 | Servlet 2.4仕様の仕様が適用され,java.lang.IllegalStateException例外がthrowされます。 | Servlet 2.3の仕様が適用され,ステータス404がレスポンスに設定されます。 |
8 | 使用するリスナ定義 | 次に示すリスナの場合,forward先またはinclude先のアプリケーションで定義されたリスナが動作します。
|
次に示すリスナの場合,forward先またはinclude先のアプリケーションで定義されたリスナが動作します。
|
9 | 該当するイベントを処理するリスナがweb.xmlで複数定義されていた場合に,forwardもしくはinclude先のアプリケーション内でリスナが例外を発生したときの動作 | 次に示すリスナの場合,Servlet 2.4仕様が適用され,例外を発生したリスナ以降のリスナは実行されません。
|
次に示すリスナの場合,Servlet 2.4仕様が適用され,例外を発生したリスナ以降のリスナは実行されません。
|
10 | web.xmlで指定されたエラーページを表示したレスポンスのステータスコード | Servlet 2.4仕様が適用され,エラー発生時のステータスコードのレスポンスが返されます。 | Servlet 2.3仕様が適用され,ステータス200のレスポンスが返されます。 |
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.