1

アプリケーションにSUNJSF1.2、WebSphere 7.0を使用していますが、負荷テスト中にのみViewExpiredExceptionが発生します

私は以下のリンクを通過しました

javax.faces.application.ViewExpiredException:ビューを復元できませんでした

ほとんどのものをフォローしました、

  1. コンテキストパラメータの設定、

    com.sun.faces.enableRestoreView11Compatibility true

  2. すべてのJSPページの先頭に以下のコードを追加して、動的JSFページをキャッシュしないようにブラウザに指示しました。

        res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 
        res.setHeader("Pragma", "no-cache");
        res.setDateHeader("Expires", -1); 
    

アプリケーションを手動で参照しても、例外は発生しません。私は問題を理解することができません。

親切にアドバイス。

4

1 に答える 1

2

ビューはセッションに保存されます。セッションに保存されるビューのデフォルトの最大量は 15 です。これは、com.sun.faces.numberOfViewsInSessionコンテキスト パラメータによって設定可能な Mojarra にあります。

エンドユーザーが同じセッションで少なくとも 16 の異なるブラウザー タブ/ウィンドウでフォーム (事実上 1 つのビュー) を含むランダムな JSF ページを開く状況を想像してください。最初に開いたタブ/ウィンドウでフォームを送信すると、 がスローされViewExpiredExceptionます。おそらく、負荷テスト中に同じことが起こっています。負荷テストでは、別のセッションを作成したほうがよいでしょう。

自分で見つけた回答で述べたように、これに対する唯一の修正は、JSF 状態保存メソッドをclientではなく に設定することですserverViewExpiredExceptionブラウザー キャッシュを無効にすると、エンドユーザーがブラウザー キャッシュから取得したページで発生することが防止されます (たとえば、[戻る] ボタンを押すなどによって)。

于 2012-07-31T11:03:11.370 に答える