Olá a todos, estava dando uma revisada na parte de boas práticas do livro “EJB3 in Action” que, resumidamente, diz o seguinte:
“Deve-se evitar injetar um Session Bean Stateful em alguma classe (gerenciada pelo container) que compartilhe instâncias, como Servlets e um Managed Bean do JSF”.
O motivo é óbvio, você não vai querer disponibilizar o estado específico de um Session Bean Stateful, em uma classe multithread, para vários usuários.
A alternativa que o o livro fornece seria encapsular o seu objeto Stateful em um HttpSession (javax.servlet.http). Ele fornece um exemplo disso. Dentro de um Servlet:
meuHttpSession.setAttribute(“meu_session_bean”, meuSessionBean);
Agora, eu gostaria de opiniões em relação ao JSF. Seria necessário utilizar o HttpSession dentro de um Managed Bean do JSF 2? Sobretudo no que diz respeito aos tipos de escopos diferentes do Managed Beans, @RequestScoped e @SessionScoped.