Limpar sessão usando Servlet

4 respostas
R

Pessoal estou com um problema numa aplicação que ela faz um request simultaneo de processos um atraz do outro acontece que quando a aplicação faz um response ela não pega o ultimo processo e sim o antipenultimo a aplicação deveria pegar por exemplo o processo 1 fazer um request e depois response limpar da sessão esse processo para depois pegar o proximo e assim por diante mais ela não esta limpando da sessão para pegar o proximo processo.
Essa aplicação esta bem ruim para dar uma manutenção para ser ter uma ideia a classe onde preciso de fazer essa manutenção tem 3200 linhas.

4 Respostas

R

pra invalidar uma sessão use session.invalidade();

R

Então rissato não seria exatamente invalidar da sessão preciso apenas limpar tem alguma outras opção tipo
session.destroy(); acho que isso mesmo né ? teria alguma outra solução ?

O

Não existe session.destroy(). Segundo a especificação quando você quer limpar a sessão deve-se usar o session.invalidate(), essa é a recomendação.

Havia um bug há algum tempo no tomcat com esse código:

session.setAttribute("x", new Integer(1)); session.invalidate(); session.getAttribute("x");

O correto era retornar null, pois a sessão sendo invalidada deveria remover todos atributos, porém o tomcat não fazia isso. Não sei se foi corrigido.

Mas se você quer digamos que apenas limpar tudo sem invalidar a sessão, você pode fazer uma gambiarrazinha:

Enumeration<String> en = session.getAttributeNames();
        while(en.hasMoreElements()) {
            String name = en.nextElement();
            session.removeAttribute(name);
        }
R

Blz galera valeu isso mesmo.

Criado 10 de março de 2009
Ultima resposta 10 de mar. de 2009
Respostas 4
Participantes 3