JSF - Problema com sessão

1 resposta
K

Bom dia meus caros, estou com um problema estranho.

Desenvolvo uma aplicação JSF 2.0, Apache MyFaces, PrimeFaces 3.0…

Meu problema acontece quando abro uma sessão dentro de um MBean(LoginBean) @SessionScoped :

Forma 1: ( Recuperando do objeto request do External Context)

FacesContext facesContext = FacesContext.getCurrentInstance();

		 HttpServletRequest request = (HttpServletRequest) facesContext.getCurrentInstance().getExternalContext().getRequest();

		 HttpSession session = request.getSession(true);

Forma 2: ( Recuperando direto do ExternalContext)

// Session Fixation Prevention
             HttpSession session = (HttpSession) externalContext.getSession(false);

             if (log.isDebugEnabled()) {
		     log.debug("Session before authentication request: " + session.getId());
	     }

             session.invalidate();
	     session = (HttpSession) externalContext.getSession(true);

             if (log.isDebugEnabled()) {
		    log.debug("Session after authentication request: " + session.getId());
	     }

Caso o login falhe, envio a mensagem assim:

FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR,"Este usuário ja se encontra logado.", null);
 FacesContext.getCurrentInstance().addMessage(null, facesMessage);

Porém a mensagem não é mostrada quando uso a ‘forma 2’ e o nome de usuário que é uma propriedade da classe LoginBean que
aparece na home, ‘Usuário Logado: xxxxxxx’ também deixa de aparecer.

Alguém consegue me dizer a diferença de se criar sessão de usuário pela ‘forma 1’ e ‘forma 2’ e porque na ‘forma 2’ acontece o problema descrito?
Como resolvê-lo?

Abraço e obrigado pela atenção!

1 Resposta

FernandoFranzini

Existem diferenças sim…http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getSession(boolean)
Use getSession();

Criado 31 de maio de 2012
Ultima resposta 31 de mai. de 2012
Respostas 1
Participantes 2