@PostConstruct de bean com @ViewController chamado várias vezes

Descrição

O problema ocorre quando você executa múltiplas requisições para a mesma página rapidamente. Por exemplo, salvar a URL como um favorito e clicar 2x no link. Quando você faz isso, o framework gera um viewID para cada requisição na classe FacesViewContextImpl, porém quando o método FacesViewBeanStore.getStore é chamado, caso o viewID seja diferente do lastViewId ele limpa o contexto, e como o lastViewId da classe tem escopo de sessão, as 2 requisições ficam trocando qual é o lastViewId, com isso o contexto é limpo várias vezes, o que faz com que o @PostConstruct do MB seja chamado também várias vezes.

Isso é um problema grave, pois caso o @PostConstruct faça acesso ao banco de dados, por exemplo, é disparada várias requisições, o que irá degradar muito a performance da aplicação.

Percebi o problema nas versões 2.4.2 e na 2.5.0. Na 2.3.4 isso não acontece.

Responsável

Danilo Costa Viana

Criador

Bruno Palaoro

Etiquetas

None

Git Pull Request

None

Afeta as versões

Prioridade

Major
Configure