Sessão JSF

Amigos,

qual a melhor forma de “matar” os objetos de sessão do JSF ao recarregar uma pagina,por exemplo?

Os Managed Beans são administrados pelo faces, então o ideal é definir seu escopo (request, session ou application) e simplemesmente usá-los. Mas se você quer algo diferente, vejo três alternativas:

  1. Bibliotecas de terceiros que implementam escopos diferentes do usual, existem os chamados dialog ou conversation (MyFaces Trinidad, Shale, Seam) que definem um ponto incial e final da existência de um manage bean; ou então flash (MyFaces Orchestra) que mantém um objeto entre duas requisições; dá uma googlada sobre eles.

  2. Coloque o objeto fora de contexto faces, faça tudo à mão como se fosse apenas JSP e Servlet. Use no managed bean:

Map<String, Object> session = FacesContext
                                                    .getCurrentInstance()
                                                    .getExternalContext()
                                                    .getSessionMap();
  1. Crie seus proprios escopos programaticamente estendendo a javax.el.ELResolver. A idéia é que você defina alguns critérios, e coloque um objeto na sessão quando for desejável. E use também um PhaseListener ou um NavigationHandler para tirar o objeto quando desejado. Lembrando que essa alternativa é a mais complicada.

O que pensei foi uma solução hibrida,ou seja declarando os managed beans
no faces config e retirando da sessão programaticamente quando necessário,isso é possivel?