突然のログアウトで問題が発生しています。バージョンスイッチが付属しており、以前のアプリケーションはJSF 1.2を実行していましたが、このアプリケーションはJSF2.1を実行していました。これは主要なリファクタリングであったため、特定のコード変更を追跡することは不可能です。しかし、コードのメジャーアップデートが行われました(ほとんどがビューであり、Beanではありませんが)。
セッションを無効にした場合、すべての場所を管理できます。セッションはログに記録され、原因ではありません。
認証にセッションBeanを使用し、を実装しHttpSessionBindingListener
ます。
valueUnboundをログに記録し、ログアウトがセッションの寿命の終了によって引き起こされたことを知ることができます。私たちは原因を見つけるのに苦労しています。
Tomcat 6.0.26のプロファイルが作成されており、すべてが正常に見えます。これは、負荷の少ない小規模なお客様にも発生します。
<session-timeout>
適切に30分に設定されています。
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
これが影響を与えるかどうかはわかりませんが、すべてクライアントを使用しています。
負荷分散をバイパスしようとしましたが、それでも問題は発生します。
どうしてランダムに私のセッションがnullになるのでしょうか?
提案されたフラグemptySessionPathを試しましたが、役に立ちませんでした。
さらに、提案されているようにリクエストヘッダーのログを記録する方法がわかりません。
私たちのアプリケーションでは、デバッグの理由でセッションCookieを強制終了しようとしました。
HttpServletResponse response = (HttpServletResponse) getFacesContext().getExternalContext().getResponse();
Map<String, Object> cookies = getFacesContext().getExternalContext().getRequestCookieMap();
Cookie cookie = (Cookie) cookies.get("JSESSIONID");
cookie.setValue("");
cookie.setPath("/");
cookie.setMaxAge(0);
response.addCookie(cookie);
破壊も再作成もされていないようです。また、ログイン中にブラウザでCookieを削除してみましたが、問題ありません。
これをさらにデバッグする方法に関する具体的なヒントを教えてください。基本的に今私たちが知っているのはvalueUnboundが突然呼び出されることだけです。
Tomcat 6.0.26
JSF 2.1.10
乾杯