J2EE環境からJakarta EE 8環境へ移行したWebアプリケーションにおいて、J2EE環境ではCookieの変更/削除ができていましたが、Jakarta EE 8環境では変更/削除できません。
Interstage Application Serverのよくあるご質問を検索できます。
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 | ||||||
---|---|---|---|---|---|---|---|
製品・サービス情報 |
|
||||||
アンサー種別 | 構築(導入/移行) |