Hitachi

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


8.2.3 Servlet 4.0仕様で追加,変更された仕様についての注意事項

Servlet 4.0仕様で追加,変更された仕様を,アプリケーションサーバ上で使用するときの注意事項を示します。

〈この項の構成〉

(1) APIについて

Servlet 4.0仕様で追加されたAPIを使用できます。APIの詳細については,Servlet 4.0の仕様書を参照してください。

(2) HTTP/2の注意事項

(3) Servlet Mapping APIの注意事項

web.xmlのservlet-mappingのurl-pattenに空文字を指定することはできません。空文字を指定した場合は,「/」に変換されます。このとき,HttpServletMapping APIのgetMappingMatch()の値はDEFAULTが設定されます。

なお,javax.servlet.ServletRegistrationインタフェースのaddMapping()メソッドを使用した場合は,空文字を指定した場合でも空文字が「/」に変換されません。その場合は,HttpServletMapping APIのgetMappingMatch()の値にはCONTEXT_ROOTが設定されます。

(4) デフォルトコンテキストパスの注意事項

cjaddappコマンドでの,default-context-pathの設定はサポートしていません。cjaddappコマンドにWARファイルを指定する場合,WARファイルに含まれるweb.xmlでデフォルトコンテキストパスを指定しても,無視されます。

(5) Webアプリケーション単位のデフォルト文字エンコーディングの設定の注意事項

Servlet 4.0から導入された,次のメソッドまたはタグに不正なエンコーディングを設定した場合,アプリケーションサーバの「デフォルトの文字エンコーディング設定機能」の指定があればその指定値,なければServletの仕様で規定された文字エンコーディングが設定されます。

(6) HTTP Trailerの注意事項

java.servlet.http.HttpServletRequestインタフェースのsetTrailerFields()メソッドは,レスポンスがすでにコミットされているか,HTTP Trailerがサポートされていない(例えばHTTP/1.0や,HTTP/1.1のchunkedではない)場合にjava.lang.IllegalStateExceptionを投げる仕様ですが,アプリケーションサーバではchunkedかどうかに関係なく,次の条件の場合にjava.lang.IllegalStateExceptionをthrowします。

(7) そのほかの注意事項

Servlet 3.0/JSP 2.2以降は,Webコンテナがweb.xmlと共にタグライブラリ・ディスクリプタ(TLDファイル)を解析してリスナを登録します。

addListener(Servlet 3.0以降)でリスナを登録した場合,「ServletContextListener#contextInitializedメソッド内で使用できないServletContextのメソッド」をTLDファイルで宣言したリスナで使用したとしても,java.lang.UnsupportedOperationExceptionは発生しません。