Pegar objeto Managed Bean na sessão dentro de um EJB Stateful

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. :slight_smile:

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 …