HttpSessionListener

dae galera…

eu tenho um site q o usuario se loga, a sessão eh criada, tem um botao pra faze logoff td bonitinho… o problema eh qdo ele fecha o navegador ou simplismente da um reset, por exemplo!

Depois q a sessao do usuario fica invalida, eu tenho q altera um campo no meu Banco de Dados! Me falaram pra implementar o HttpSessionListener, mas como seria exatamente o código? Como ele atuaria? Estaria constantemente analisando as sessões e qdo elas se tornassem invalidas atualizaria meu BD?

Valeu!

blz, mas eu quero saber como faço pra depois q a sessão expira (seja de QUALQUER forma) eu possa rodar um trexo de codigo atualizando meu BD.

Se o browser for fechado, o meu JSP eh morto o BD fica desatualizado, o q naum pode acontece de jeito nenhum!!!

o problema eh q pra atualiza-lo, eu necessito da identificação do usuario q estava logado (seu “nick”) e jah q a sessão tah inválida, como posso sabe qual usuario acabou de sair?!

Antes de mais nada, quero registrar aqui minha satisfação em entrar nessa comunidade. Espero que possamos trocar muitas idéias!

Vamos ao problema:
Criei o exemplo com a class Listener e ela funciona. No meu caso, a função dessa classe é simplesmente fechar a conexão com o BD ao terminar a sessão - utilizo uma design pattern para manter uma única conexão aberta com o BD durante toda a sessão. A minha pergunta é: será que a melhor maneira de fechar a conexão com o BD é através de um Listener? Claro que não estou utilizando pool do servidor, nem tão pouco frameworks de persistência.

Obrigado!

qual a vantagem de deixar a conexão aberta durante td a sessão?
no meu caso, sempre qdo tenho q fazer algo no BD, crio uma nova conexão e logo depois já fecho!

mas será q vale a pena implementa um Listener soh pra isso??

Dá uma olhada nessa Thread: http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&t=4454

Vc deu uma olhada lá?
No método public void sessionDestroyed(HttpSessionEvent arg0), você chama um método para atualizar o seu bd.

Na classe HttpSessionEvent tem o método getSession().

[]'s

Acho que sim!

[quote=“gustavoknz”]qual a vantagem de deixar a conexão aberta durante td a sessão?
no meu caso, sempre qdo tenho q fazer algo no BD, crio uma nova conexão e logo depois já fecho![/quote]
A vantagem é não ficar criando e descriando novas conexões o tempo todo! :wink:

[quote=“gustavoknz”]mas será q vale a pena implementa um Listener soh pra isso??[/quote] Tudo depende da aplicação que vc está fazendo.
Mas o que mais se usa, é um pool de conexões.