Boa noite a todos,
Sou novo no forum, e venho aqui tentar esclarecer um problema que estou tendo.
Estou tentando pegar valores de um Managed Bean com escopo de sessão dentro de um Session Bean Stateful. Inseri o objeto que eu desejo na sessão mas não estou conseguindo recuperá-lo no Session Bean
Vou tentar ser mais claro:
Método do meu Managed Bean onde estou setando o objeto na seção:
public void inserirSessao(){
FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
session.setAttribute("usuarioLogado", usuarioLogado);
}
Método do meu Session Bean Stateful onde estou tentando recuperar o meu objeto
public void usuarioLogado() {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpSession session = (HttpSession) request.getSession();
if(session != null){
this.usuario = (Login) session.getAttribute("usuarioLogado");
}
P.S: Quando eu verifico se a sessão é diferente de nulo, o teste passa, a sessão existe mas o objeto não é encontrado.
Por eu estar tentando pegar um objeto Managed Bean dentro de um EJB, há algum problema ? Se sim, por favor, me deem uma luz.
Pessoal, consegui resolver meu problema. Foi um erro de na minha implementação !!!
Por mais que não tenha aparecido alguma sugestão, mesmo assim, obrigado a quem pelo menos leu o tópico.
Ola,
gostaria de saber como resolveste o teu problema…
Eu quero fazer o inverso.
Quero pegar o user vindo do stateful no managedBean
Só uma ponderação:
Normalmente não é bom que a camada de EJB’s, que deveria ser negócio, tenha acesso a classes da camada de visão (objeto HttpServletRequest e outros). As camadas tem que ser o mais desacopladas possível, para inibir que mudanças em uma camada ocasione impacto em outras.
Imagina se por exemplo se surgir a necessidade de escrever um cliente desktop para o seu sistema, usando Swing ou JavaFX.
Se sua classe de negócio estiver completamente isolada da visão, você vai poder aproveita-la para todos os clientes (web e desktop). No seu caso entretanto, esse EJB só vai funcionar para clientes JSF. 
Abraços.
Ok… obrigado pelos esclarecimento…
O que me aconselhas no seguinte cenario:
Eu fiz uma aplicação, mais ao iniciar eu pretendo saber quantos users já estão logados, e dentro da aplicação eu pretendo pegar os users logados e terminar a sessão daqueles que eu qiser (sendo um administrador) … tentei fazer com este mecanismo mas não consegui… pois ele diz que a sessão do statefull foi encerrada …