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

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

6.2.13 前バージョンから09-50へ移行する場合のWebアプリケーションに関する注意事項

前バージョンから09-50へ移行する場合の,Webアプリケーションに関する注意事項を示します。

<この項の構成>
(1) Webコンテナがサポートするバージョン情報取得API
(2) javax.servlet.ServletException,およびjavax.servlet.jsp.JspExceptionで生成したオブジェクトに対するinitCause(Throwable)の呼び出しについて
(3) javax.servlet.ServletRequestインタフェースのsetCharacterEncodingメソッドを呼び出した場合の動作
(4) javax.servlet.GenericServletクラスが保持するServletConfigオブジェクトがnullの場合の動作
(5) javax.servlet.GenericServletクラスのinitメソッドとdestroyメソッドで出力するログ
(6) ライブラリJAR内のTLDファイルの検索
(7) cjjspcコマンドでのクラスパスに指定したJARファイル内のTLDファイルの検索
(8) HTTPセッションのセッションIDを示すHTTP Cookieの削除

(1) Webコンテナがサポートするバージョン情報取得API

次の表に示すServlet APIでは,WebコンテナがサポートするServlet仕様のバージョン情報を取得できます。

表6-38 Webコンテナがサポートするバージョン情報取得API

クラス名 メソッド名
javax.servlet.ServletContext getMajorVersion
getMinorVersion
javax.servlet.jsp.JspEngineInfo getSpecificationVersion

WebアプリケーションのバージョンがServlet 2.5/JSP 2.0以前であっても,WebコンテナがサポートするServlet仕様のバージョンは,Servlet 3.0/JSP 2.1となります。そのため,これらのServlet APIはServlet仕様のバージョンとしてServlet 3.0/JSP 2.1の情報を返します。なお,サーバの動作モードにも関係なく情報を取得します。

(2) javax.servlet.ServletException,およびjavax.servlet.jsp.JspExceptionで生成したオブジェクトに対するinitCause(Throwable)の呼び出しについて

次に示すオブジェクトに対して,initCause(Throwable)を呼び出すことができません。

initCause(Throwable)を呼び出したい場合は,簡易構築定義ファイルに互換用のプロパティを設定します。設定の方法については,「6.2.1(22) javax.servlet.ServletExceptionクラスのコンストラクタで指定した根本原因の例外の取得について」を参照してください。

(3) javax.servlet.ServletRequestインタフェースのsetCharacterEncodingメソッドを呼び出した場合の動作

javax.servlet.ServletRequestインタフェースのgetReaderメソッドを呼び出したあとでjavax.servlet.ServletRequestインタフェースのsetCharacterEncodingメソッドを呼び出した場合,getCharacterEncodingメソッドの戻り値が変更されません。詳細については,「6.2.4(8) javax.servlet.ServletRequestインタフェースのsetCharacterEncodingメソッドの呼び出しの無効について」を参照してください。

(4) javax.servlet.GenericServletクラスが保持するServletConfigオブジェクトがnullの場合の動作

javax.servlet.GenericServletクラスがインスタンス変数として保持するServletConfigがnullの場合,次に示すメソッドによってスローされる例外がバージョンごとに異なります。

これらのメソッドによってスローされる例外をバージョンごとに次に示します。

07-60以前
java.lang.NullPointerException

08-00以降
java.lang.IllegalStateException
例外のメッセージとして「ServletConfig has not been initialized.」が出力されます。

これらの例外は,次の二つの条件を両方満たす場合にスローされます。

(5) javax.servlet.GenericServletクラスのinitメソッドとdestroyメソッドで出力するログ

javax.servlet.GenericServletクラスのinitメソッドとdestroyメソッドをオーバーライドしていないサーブレットを初期化または終了すると,サーブレットログにログが出力されます。出力されるログについては「6.2.1(17) initメソッドおよびdestroyメソッドをオーバーライドしていない場合に出力されるメッセージ」を参照してください。

ただし,javax.servlet.GenericServletクラスがインスタンス変数で持つServletConfigがnullの場合の動作が07-60以前と08-00以降で異なります。バージョンごとの動作の差異を次に示します。

07-60以前
ログ出力に失敗し,java.lang.NullPointerException例外をスローする。

08-00以降
例外をスローしない。また,ログも出力しない。

(6) ライブラリJAR内のTLDファイルの検索

08-00以降では,ライブラリJARに含まれるTLDファイルを検索し,ライブラリJAR内のタグライブラリが使用できます。ライブラリJARにTLDファイルが含まれる場合,以前のバージョンでは使用できなかったTLDファイルが使用できるため,次に示す動作変更が発生します。

詳細は,「2.3.4 タグライブラリのJ2EEアプリケーションへの格納」を参照してください。

(7) cjjspcコマンドでのクラスパスに指定したJARファイル内のTLDファイルの検索

08-00以降では,cjjspcコマンドでのJSPコンパイル時に,-classpathオプションでクラスパスに指定したJARファイル内のTLDファイルを検索し,JARファイル内のタグライブラリが使用できます。クラスパスに指定したJARファイルにTLDファイルが含まれる場合,07-60以前では使用できなかったTLDファイルが使用できるため,次の現象が発生します。

詳細は,「2.3.4 タグライブラリのJ2EEアプリケーションへの格納」を参照してください。

(8) HTTPセッションのセッションIDを示すHTTP Cookieの削除

Webアプリケーション内でHTTPセッションを無効化した場合に,Webクライアントの保持するHTTP Cookieの情報についての動作が07-60以前と08-00以降で異なります。バージョンごとの動作の差異を次に示します。

08-00以降
Webクライアントの保持するHTTP Cookieの情報を削除します。また,無効化済みのHTTPセッションに対するセッションID送信を抑止します。

07-60以前
Webクライアントの保持するHTTP Cookie情報を削除しません。そのため,HTTPセッション無効化後も無効なセッションIDの送信が続く場合があります。

HTTP Cookieの削除については「2.7.4 Webクライアントが保持する無効なセッションIDの削除」を参照してください。

07-60以前のバージョンから08-00以降へアップグレードインストールをした場合,セットアップ済みのJ2EEサーバの設定に,次のパラメタの設定が追加されます。

webserver.session.delete_cookie.backcompat=true

この設定の追加によって,HTTP Cookie情報を削除しなくなり,07-60以前と同様の動作になります。パラメタについての詳細はマニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.4 usrconf.properties(J2EEサーバ用ユーザプロパティファイル)」を参照してください。