メイン アプリケーションからベンダー ログイン ページに移動する必要があります。セッションが有効な場合、メイン アプリケーションで選択されたデータはベンダー ページに表示され、セッションにデータが保存されます。これを処理するために、Tomcat ではベンダー ログイン JSP の開始時に以下のコードがありました。
request.getSession().invalidate();
現在、Websphere Application Server に移行しています。同じコードが WAS では機能しません。IllegalStateException が発生しています。どこかで、WAS が Cookie を介してセッションを処理することを読みました。そのため、セッションがすでに無効化されている場合は IllegalStateException がスローされます。
WAS のコードを次のように変更しました。 userId は、メイン アプリケーションのセッションで保存しているユーザー ID です。
if ((request.getSession() != null) && (request.getSession().getAttribute("userId") != null)) { // Old session
request.getSession().invalidate();
}
制御が if 条件内にある場合でも、IllegalStateException が発生します。私たちの要件では、ベンダー ログイン JSP の開始時にすべてのセッション パラメータを削除して、何も渡されないようにする 1 つの代替手段があります。しかし、そのためには、各パラメーター (ほぼ 20 個あります) を 1 つずつ削除する必要があります。また、将来、セッションで保存する新しいパラメータがある場合は、この jsp を更新する必要があります。
古い場合、最初にセッション全体を無効にする解決策はありますか?