web-dev-qa-db-ja.com

@ViewScoped BeanはJSFでいつどのように破棄されますか?

@RequestScopedおよび@SessionScopedBeanマネージドBeanのライフサイクルは、基本的にHttpRequestおよびHttpSessionそれぞれ。 JSFは@ViewScopedBeanのライフサイクルをどのように管理しますか?ビューが作成されたときに作成され、別のビューへのポストバックがあるまで使用できることを私は知っています。しかし、その観点から移動した直後に収集されたガベージではないことがわかりました。

16
Geek

それはいつ破壊されます

  • null以外の結果のポストバックが実行されました。

  • または、セッション内の(論理)ビューの数を超え、特定のビューがLRUチェーンの最初のビューです(Mojarraでは、com.Sun.faces.numberOfViewsInSessionおよびcom.Sun.faces.numberOfLogicalViewsコンテキストパラメーターで構成可能で、それぞれデフォルト値があります15の)、

  • または、セッション内のアクティブビュースコープの数を超えました(Mojarraでは、ハードコードされた25の制限です)。 JSF 2.2メモリ消費:Mojarraが最後の25ビューのViewScoped Beanをメモリに保持するのはなぜですか?)

  • または、セッションの有効期限が切れています。

したがって、別のページへのGETリンクをクリックしたり、ページを更新したり、ブラウザタブを閉じたりした結果としてページがアンロードされても、notは破棄されません。 /窓。上記の条件のいずれかが満たされるまで、Beanは存続します。とにかくアンロード中にそれを破壊するには、代わりに OmniFaces @ViewScoped を使用することを検討してください。

31
BalusC