Oi Ricardo, seus beans morrerão quando você realizar uma navegação através de actions
ou quando acessar diretamente a URL através do navegador teclando ENTER. Se você acessa uma página e fecha a aba, a view continuará viva um tempo. Não se preocupe que ela irá expirar.
Quer fazer um teste? Abra a view no seu navegador e vá tomar um café demorado. Quando você submeter o formulário dessa view receberá um ViewExpiredException
. Porém, não lembro de cabeça quando tempo a view ficará viva em memória.
JSF 2.X guarda apenas o delta (a diferença) da view, e não toda ela. Ele toma nota apenas do que mudou, tornando o uso de memória ainda menor no server.
Porém, se isso te incomoda muito, mas muito, você pode jogar o estado da view para o navegador. O padrão é server
, você pode trocar para client
. O ônus disso que é seu HTML ficará maior onerando um pouco a largura de banda do usuário, já que a view tem que ser enviada a cada requisição com o HTML do usuário.
No seu web.xml, pode colocar:
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
Depois, reinicie o servidor e carregue a página. Exiba o código fonte dela. Lá estará a view serializada. Aqui é uma questão de tradeoff: eu onero o server ou o client? O que ganho nos dois casos? Tem que avaliar.
Se ainda você estiver cabreiro, pode usar o StatelessView
do JSF 2.1/2.2 (não lembro qual versão entrou), Nela você não guarda estado na view e só pode usar escopo de requisição. Dá uma pesquisada nisso. Dê uma olhada em
http://www-01.ibm.com/support/knowledgecenter/SSRTLW_9.5.0/com.ibm.etools.jsf.doc/topics/tstatelessviewsinjsf2.2.html
No final, quem ditará se você terá problema ou não é o contexto de uso da aplicação.