Armazendando info dos users logados no site

3 respostas
Rafael_Steil

A situacao eh a seguinte:

Tenho um SessionListener que, ao ser notificado de uma nova sessao, incrementa um contador de usuarios online, e quando eh notificado sobre o fim da session, ele decrementa esse numero… Isso ta ok…
Tambem tenho um objeto chamado UserSession onde guardo informacoes gerais sobre o usuario, as quais desejo ter rapido acesso, como username e userid, horario que logou, a quanto tempo esta ativo etc… Uma instancia desse UserSession fica na sessao do usuario. Isso tambem esta ok…

O problema eh: em alguma pagina, desejo mostrar o nome dos usuarios logados no momento, mas to em duvida de como implementar… A informacao que eu preciso eh somente o userid e o username do usuario, nada mais. Entao pensei em ter uma lista no contexto da aplicacao com objetos contendo essas informacoes para mim, sendo que eu removeria os elementos assim que a session fosse destruida ( ou seja, indexaria o map pelo id da sessao )…

Como eh a melhor maneira ( ou, se preferirem, menos ruim / porca ) de fazer isso? criar um outro objeto auxuliar para guardar somente o username e o userid, ou usar exatamente o mesmo objeto UserSession que eh guardado na sessao do usuario? E, no caso de algum dizer “use o mesmo objeto”, eu continuo acesso os dados do usuario no resto do sistema via session ou via os objetos que estao no contexto? ( me parece mais correto continuar pegando da session dele ).

E ai?

Rafael

3 Respostas

dreamspeaker

Não entendi como vc usaria o mesmo objeto. Eu olho isso como um objeto auxiliar contendo um map de referências para os objetos de usuários criados. Quando vc precisar da informação do usuário atual, pega o objeto da sessão. Quando precisar de informações de outros usuários, pega desse objeto no contexto.

C

Aproveitando o tópico…

Havia pensado em fazer esta lista também, porém tem problema.

O Contexto da aplicação não migra entre VMs tal qual a Sessão.
Quando o sistema estiver em ambiente distribuído com servers rodando em cluster a lista de usuários colocada no contexto da aplicação listará apenas os usuários que foram adicionados ao contexto da VM corrente.

Como não era prioridade no momento, então não pensei ainda em como resolver este problema da melhor forma possível.

Alguém tem alguma idéia?

Obrigado.

Adilson

leonardo.nvm

ressuscitando o topico…

estou com um problema semelhante gostaria de saber se vcs jah chegaram a alguma conclusao sobre isso… pois eu tbm pensei numa soluçao parecida usando o SessionListener e o contexto da aplicação so que ai eu cai na situação q o chicoria falou, nao poder compartilhar o contexto e a sessao em duas vms…

se alguem tiver solução mais viavel…

[]s

Criado 11 de março de 2004
Ultima resposta 30 de mai. de 2008
Respostas 3
Participantes 4