to fazendo um site… e nele eu keria q tivessem listadas as pessoas q estao online no momento. (as que estao com sessao aberta).
entao eu usei um SessionListener e para cada sessao criada ele adiciona o Id da sessao no banco de dados… e qdo o usuario loga, ele reconhece a sessao com o id do usuario.
Enfim… isso tá funcionando perfeitamente… o problema é que… quando a sessao é encerrada, ele retira o id da sessao do banco de dados.
só que o evento SessionDestroyed só está sendo gerado com o tempo limite da sessao do servidor.
A sessao nao deveria ser terminada quando o usuario fecha o browser?? ou isso é uma configuraçao do tomcat?
alguém tem alguma ideia?? tenho q acrescentar algum codigo??
O SessionDestroyed() somente eh invocado qdo a sessao expira mesmo. Nao ha um meio “seguro” de vc conseguir alterar os dados no momento em que o browser fecha ou o usuario sai da pagina…
Vc pode tentar alguma trick usando frames, onde, no body onunload vc invoca algum window.open que chama um codigo para desregistrar a sessao…mas eh mto suscetivel a erros, de qq maneira.
Você pode tratar isso usando um tempo de sessão de 5min por exemplo e utilizando um sistema de cookies para que o usuário seja reconectado caso o prazo ultrapasse 30min assim você terá uma informação um pouco (no máx 5min) desatualizada, mas um pouco mais segura.