Injeção de um Stateful (EJB) em Managed Bean (JSF) | HttpSession

2 respostas
S

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.

2 Respostas

maior_abandonado

ué… isso me parece super válido quando o escopo do managed bean é requisição, mas não vejo sentido quando o escopo é sessão (tanto no jsf 1 quanto no 2),eu posso estar enganado mas… se o objeto do managed bean chamado para cada usuário logado é diferente (outro objeto embora da mesma classe), o container não injetaria um objeto diferentedo statefull session bean também para cada instancia do managed bean usado?

nesse sentido me pareceu incoerente…

S

Obrigado cara, pela resposta.

Para mim a teoria é essa mesmo e imagino que funcione na prática também. Uma injeção do objeto Stateful, para cada instância de Managed Bean @SessionScoped. Até pelo motivo que o Managed Bean implementa HttpSession por baixo dos panos.

Gostaria de saber se alguém já usou na prática? Poderia apenas confirmar que pode-se mesmo trabalhar bem desta forma?

Criado 27 de setembro de 2011
Ultima resposta 27 de set. de 2011
Respostas 2
Participantes 2