私はmyFaces2.1.7を実行していて、Webアプリケーションのmmeoryの使用法を必死に減らしようとしています。基本的に、各ユーザーのセッションサイズは最大10MBであり、処理できません。
Descriptorに以下を追加してみました。
<context-param>
<param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION</param-name>
<param-value>3</param-value>
</context-param>
結果は問題なく、特定のユーザーのセッションサイズは1MBを超えていませんでした。ただし、変更後、多くのユーザーがログインできなくなります。何が起こっているのかというと、ログイン画面でViewExpiredExceptionがスローされ、ユーザーをログイン画面にリダイレクトするカスタムviewExpiredExceptionクラスを作成したため、基本的にログイン画面ループでスタックします。
try to log in ---> ViewExpiredException thrown ---> Custom ViewExpiredHandler ----> Forward user to Login Screen
<----------------------------------------------------------------------------------------------------------------
上記のcontext-paramを削除すると、問題が修正されます。私の質問は1つです-
1) why is the viewException is thrown when the NUMBER_OF_VIEWS_IN_SESSION is reduced from its default value
2) is it possible to work around the issue by using the custom ViewExpiredHandler class ? how?
3) am i doing something wrong in causing this issue?
PSは、これが発生する理由をテストしています。たとえば、IEを開いてすべてログインしようとすると問題ありませんが、別のブラウザ(たとえば、chrome)を開いて、上記の別のユーザー名を使用してログインしようとすると、上記の問題が発生します。ログインできる。
また、myFaces wikiのヒントに従って、記述子に以下を追加しましたが、問題の原因になるとは思われません。
<context-param>
<param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
<param-value>false</param-value>
</context-param>
アップデート:
私が提案したように、私たちが抱えているメモリの問題を解決するためにをに変更BalusC
します。すぐにすべてのUATテスターがすべてのページの読み込み速度で劇的な速度低下を報告したため、に設定した状態に戻す必要がありました。STATE_SAVING_METHOD
client
STATE_SAVING_METHOD
server
org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION
の値と現在の値6
(デフォルトの20セッションから70%の改善)で実験してきたので、ViewExpiredException
エラーは発生しなくなりました(この質問が最初に作成された理由)
しかし、ある意味で私はロシアンルーレットをプレイしています。org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION
3/4/5に設定した値が機能しなかった理由と、6が機能している理由がよくわかりません。そのため、説明できません。誰かが情報を提供できますか?