Instância de FacesContext injetada via @Inject em bean de escopo longo (ex: ViewScoped) perde a validade após primeiro request no JBoss EAP 6.2

Descrição

Em projetos baseados no arquétipo demoiselle-jsf, beans com escopo longo (ex: ViewScoped) que injetem uma instância de FacesContext como atributo de classe no JBoss EAP 6.2, ao voltar a esse bean em um segundo request a instância injetada continua existente mas é inválida, o JBoss dispara uma exceção em qualquer tentativa de acessar métodos dessa instância.

Isso acontece porque instâncias de FacesContext supostamente precisam estar associadas apenas ao request que as gerou. O CDI está respeitando o escopo do bean que injetou o FacesContext e mantendo a instância viva por mais tempo que o necessário.

A extensão demoiselle-jsf faz isso de injeção de FacesContext em AbstractPageBean e AbstractEditPageBean. A solução para esse problema será ou encontrar uma forma de forçar o CDI a injetar uma nova instância de FacesContext a cada request apesar do bean que contém a instância ter um escopo mais longo ou remover a injeção de FacesContext dessas classes e desestimular esse uso do FacesContext, talvez até remover completamente a capacidade de injetar FacesContext uma vez que não é difícil obter essa instância pelas vias normais do JSF.

Responsável

Julian Cesar

Criador

Danilo Costa Viana

Etiquetas

None

Git Pull Request

None

Versões de correção

Afeta as versões

Prioridade

Major
Configure