私は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_METHODclientSTATE_SAVING_METHODserver
org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSIONの値と現在の値6(デフォルトの20セッションから70%の改善)で実験してきたので、ViewExpiredExceptionエラーは発生しなくなりました(この質問が最初に作成された理由)
しかし、ある意味で私はロシアンルーレットをプレイしています。org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION3/4/5に設定した値が機能しなかった理由と、6が機能している理由がよくわかりません。そのため、説明できません。誰かが情報を提供できますか?