Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 保守/移行編


12.3.2 Servletの変更点

〈この項の構成〉

(1) Servlet 3.0の非サポートAPIの扱い

アプリケーションサーバ 11-20では,09-87で非サポートだった一部のServlet 3.0 APIがサポート対象になっています。そのため,アプリケーションサーバ 09-87では該当するAPIを使用するとUnsupportedOperationException例外がスローされる仕様となっていましたが,アプリケーションサーバ 11-20ではServlet 3.0仕様に従って動作します。

該当するAPIを次の表に示します。もし,これらのAPIから常にUnsupportedOperationException例外がスローされることを期待しているアプリケーションだった場合は,例外がスローされない前提の実装となるようにアプリケーションの改修が必要です。

表12‒4 アプリケーションサーバ 11-20からサポートされるようになったServlet 3.0 API

パッケージ

クラス

メソッド

javax.servlet

AsyncContext

すべてのメソッド

AsyncListener

すべてのメソッド

ServletRequest

startAsync

isAsyncStarted

isAsyncSupported

getAsyncContext

getDispatcherType

AsyncEvent

すべてのメソッド

ServletRequestWrapper

startAsync

isAsyncStarted

isAsyncSupported

getAsyncContext

getDispatcherType

Registration

setAsyncSupported

また,アプリケーションサーバ 11-20で引き続き非サポートとなるAPIについても,アプリケーションサーバ 09-87ではUnsupportedOperationException例外がスローされていましたが,アプリケーションサーバ 11-20ではデフォルトでは例外がスローされません。該当するAPIを次の表に示します。

表12‒5 アプリケーションサーバ 11-20でも非サポートのServlet 3.0 API

パッケージ

クラス

メソッド

webserver.servlet_api.unsupported.throwUnsupportedOperationExceptionの指定値に対する動作

false(デフォルト)

true

javax.servlet

ServletContext

getJspConfigDescriptor

nullが返ります

UnsupportedOperationException例外がスローされます

もし,これらのAPIから常にUnsupportedOperationException例外がスローされることを期待しているアプリケーションだった場合は,例外がスローされない前提の実装となるようにアプリケーションを改修するか,または次の定義をJ2EEサーバ用ユーザプロパティに追加してください。

webserver.servlet_api.unsupported.throwUnsupportedOperationException=true

(2) コンテキストルートにマッピングする動的サーブレット追加処理について

アプリケーションサーバ 09-87では,javax.servlet.ServletRegistrationのaddMappingメソッドの引数にコンテキストルートを示す”/”を指定した場合,すでにデフォルトサーブレットがマッピング済みであるためにマッピングの上書きができませんでした。

アプリケーションサーバ 11-20では,同一ServletContextに対して1度だけ,コンテキストルートに対するマッピングを上書きできます。これによって,デフォルトサーブレットの代わりにユーザ定義サーブレットをコンテキストルートにマッピングできます。

もし,アプリケーションサーバ 11-20の動作を期待しておらず,addMappingメソッドがマッピングの上書きを拒否することを期待しているアプリケーションだった場合,コンテキストルートにマッピングするaddMappingメソッドの呼び出しをしないようにアプリケーションの改修が必要です。アプリケーションを改修しないでアプリケーションサーバ 11-20に移行すると,デフォルトサーブレットへのマッピングがユーザサーブレットへのマッピングに上書きされるおそれがあります。