レスポンスヘッダに指定する文字コード
Jakarta EE 8では、印字可能なASCIIコード範囲外の文字をHTTPレスポンスヘッダに設定すると、半角空白に置き換えられてクライアントに返却されるようになりました。
そのため、HTTPレスポンスヘッダにContent-Dispositionヘッダを設定することによりファイルのダウンロードを行われる場合は、レスポンスヘッダのURLエンコードが必要です。
HttpServletRequest#setCharacterEncodingの呼び出し
「HttpServletRequest#setCharacterEncoding」メソッドを実行した場合に、
Java EE 6では、HTTPヘッダ「Content-Type」に「charsetパラメタ」が付加されません。
Jakarta EE 8では、HTTPヘッダ「Content-Type」に「charsetパラメタ」が付加されます。
ServletContext/ServletRequestの属性について
ServletContext/ServletRequestの属性について、予約されている属性名が異なります。
Java EE 6では、以下のプレフィックスで始まる属性が予約されていました。
java.
javax.
sun.
com.sun.
com.fujitsu.interstage.javaee.
Jakarta EE 8では、以下のプレフィックスで始まる属性が予約されています。
java.
javax.
sun.
com.sun.
com.fujitsu.appsrv.
ServletContext/ServletRequestの属性についての詳細は、「1.4.3 Webアプリケーションの注意事項」を参照してください。
Webアプリケーションのdeployment descriptorに不正なエンコードを指定した場合の動作について
glassfish-web.xmlのparameter-encoding、またはweb.xml(Servlet4.0以降)のrequest-character-encodingに、Javaでサポートされていない不正なエンコードを指定した場合に、Java EE 6では、リクエストは省略値(ISO-8859-1)で処理されていました。
Jakarta EE 8では、リクエストは処理されず、Content-Length: 0 のステータスコード200(白紙のページ)が返却されます。
詳細は「13.4 Webアプリケーションの開発・運用時の異常」を参照してください。
セキュリティロールマッピングについて
ロールベースのアクセス制限を設定したアプリケーションを利用する際、GlassFish Serverのdeployment descriptor(glassfish-application.xml、glassfish-web.xml、glassfish-ejb-jar.xml)のsecurity-role-mappingタグを定義しない場合に、Java EE 6では、デフォルトロールマッピングが無効のため、GlassFish Serverのdeployment descriptorのsecurity-role-mappingタグを定義していないリソースに対するリクエストは受け付けませんでした。
Jakarta EE 8では、デフォルトロールマッピングが有効になり、デフォルトのロール(グループと同名のロール)にアクセス許可のあるリソースに対するリクエストを受け付けます。
GlassFish Serverのdeployment descriptorのsecurity-role-mappingタグについては、「3.2.1.7 GlassFish Serverのdeployment descriptorのタグの説明」を参照してください。
HTTPレスポンスのデータ形式とヘッダについて
HTTP/1.1を使用してHTTPレスポンスにデータを書き込んだときに、HTTPレスポンスの形式がチャンク化されるかどうかは、Webコンテナのバージョンによって異なります。
HTTPクライアントを設計する場合は、送信データがチャンク化されることを想定した設計にしてください。
POSTリクエストの最大サイズについて
POSTリクエストの最大サイズについて、参照・設定する際に指定する定義項目名がJava EE 6とJakarta EE 8で異なります。Java EE 6とJakarta EE 8での定義項目名の違いを下表に示します。
定義項目 | Java EE 6 定義項目名 | Jakarta EE 8 定義項目名 |
---|---|---|
POSTリクエストの最大サイズ | ${clusterName_instanceName_configName}.network-config.protocols.protocol.${protocol-name}.http.max-post-size-bytes | ${clusterName_instanceName_configName}.network-config.protocols.protocol.${protocol-name}.http.max-form-post-size-bytes |
リクエストBODYの最大サイズについて
Jakarta EE 8では、リクエストBODYの最大サイズをバイト単位で指定できます。「POSTリクエストの最大サイズ」とは異なり、getInputStream/getReaderに対しても有効になります。
詳細については「リクエストBODYの最大サイズ」を参照してください。