Problemas com Session

4 respostas
M

Ola Pessoal boa noite!

Bem to com uma app rodando aparentemente tudo ok

porem no log do tom cat

esta gerando uma excessão

java.lang.IllegalStateException: setAttribute: Session already invalidated

at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1291)

at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1256)

at org.apache.catalina.session.StandardSessionFacade.setAttribute(StandardSessionFacade.java:130)

at com.sun.faces.taglib.jsf_core.ViewTag.doEndTag(ViewTag.java:266)

at org.apache.jsp.Page1_jsp._jspx_meth_f_005fview_005f0(Page1_jsp.java:141)

at org.apache.jsp.Page1_jsp._jspService(Page1_jsp.java:99)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

bom não sei como finalizar ou deixar valida esta sessão tenho um link de logout quer redireciona pra outra pagina porem
creio que a sessão não esta sendo finalizada da maneira correta se alguem puder me esclarecer o que acontecendo fico agradecido

4 Respostas

davidbuzatto

A exceção aponta que a sessão já está invalidada. Vc deve estar chamando session.invalidate() main de uma vez em uma mesma sessão.
Verifique isso.

[]´s

M

Ola! é veja bem vc pode me explicar por que a aplicação não trava?

outra coisa como eu posso fazer para acabar com a seção em um logout
para que o usuario ao sair não possa retorna sem login e senha?
se puder me ajudar agradeço!

davidbuzatto

Se vc postar seu código fica mais fácil de ajudar.

M
public Usuario obterPorLoginSenha(String login, String senha) {
      Query qry = em.createQuery("select u from Usuario u where u.login = :param1 and u.senha = :param2");
      qry.setParameter("param1", login);
      qry.setParameter("param2", senha);
      return (Usuario) qry.getSingleResult();
  }

este é me Dao

public Usuario obterUsuarioPorLoginSenha(String login, String senha) {
        UsuarioDao dao = new UsuarioDao();
        Usuario obj = dao.obterPorLoginSenha(login, senha);
        dao.close();
        return obj;
    }

estes eu utilizo para oberte o usuario
no Session bean eu crio um objeto do tipo usuariologado os get e sets
no Requet Crio um objeto do tipo Usuario e inicializo setUsuario(new Usuario());

na aplicação eu chamo

public String button1_action() {
        RetaguardaFocade focade = new RetaguardaFocade();
        Usuario uRq = getRequestBean1().getUsuario();
        Usuario usuario = focade.obterUsuarioPorLoginSenha(uRq.getLogin(), uRq.getSenha());
        if (usuario != null) {
            getSessionBean1().getUsuarioLogado();

        } else {
         
        }
        return "acessoliberado";



    }

assim esta o codigo como vc me aconselha a implementar o logout

Criado 30 de outubro de 2009
Ultima resposta 2 de nov. de 2009
Respostas 4
Participantes 2