J2EE環境からJakarta EE 8環境へ移行したWebアプリケーションにおいて、J2EE環境ではCookieの変更/削除ができていましたが、Jakarta EE 8環境では変更/削除できません。

Interstage Application Server の技術情報はこちら

J2EE環境からJakarta EE 8環境へ移行したWebアプリケーションにおいて、J2EE環境ではCookieの変更/削除ができていましたが、Jakarta EE 8環境では変更/削除できません。
原因と対処方法を教えてください。
Servlet仕様上、「javax.servlet.http.HttpServletRequest#getCookies()」で返されるCookie配列オブジェクトの細部は規定されていないため、実行環境の実装に依存します。 Interstage Application Serverでは、以下のとおりです。

<javax.servlet.http.HttpServletRequest#getCookies()>
 ・Jakarta EE 8
  メソッドが呼び出される毎、新たにnewされたオブジェクトが返却されます。
 ・J2EE
  当該リクエスト中、同じオブジェクトが返却されます。

Jakarta EE 8環境では、getCookies()メソッドの呼び出し毎に異なるオブジェクトが返却されるため、ある時点で取得した値への操作は、以降に呼び出したgetCookies()メソッドの復帰値には反映されません。
アプリケーションによる操作結果を以降のgetCookies()メソッドの復帰値に反映したい場合は、HttpServletRequestWrapperをextendしたラッパークラスでgetCookies()メソッドを実装します。
以下にHttpServletRequestWrapperの実装例を示します。
また、HttpServletRequestWrapperを利用するためのフィルタクラスを実装してください。

製品・サービス区分 Interstage
製品・サービス情報
対象製品 Interstage Application Server
バージョン V13
プラットフォーム Windows, Solaris, Linux
アンサー種別 構築(導入/移行)
このページの先頭へ