Olá pessoal, estou precisando fazer um controle dos usuários on-line na aplicação, assim quando um usuário efetua o login no sistema é criado um atributo em uma sessão para ele (chamada ‘login’ por exemplo) que armazena um objeto que o identifica, desta forma eu pretendo implementar uma tela onde eu visualize todos os usuários logados no sistema, e para isso eu pensei em buscar do servidor uma lista de todos os valores de atributos com o mesmo nome (no caso 'login) de sessões válidas, e assim eu poderia buscar desta lista as informações que desejo sobre todos os usuários logados no sistema e apresentá-las. No entanto, eu não sei se tem como buscar do servidor esta lista atributos, se alguém souber como trazer esta lista ou até mesmo sugerir outra solução estaria ajudando muito. Desde já mais uma vez agradeço a todos. Abraços …
Numero de sessões com o mesmo nome
6 Respostas
Oi,
Crie um classe utilitária com métodos para fazer login e logut. Quando fizer login, além de armazenar um referência no atributo da sessão para o tal objeto que identifica o usuário, coloque numa Collection em escopo de aplicação [disponível a todas as sessões] uma referência à este objeto identificador.
Só não se esqueça de utilizar um método na classe utilitária para fazer logoff que não só remova o atributo da sessão bem como da Collection que está guardade em escopo de alicação, se não você vai ter lixo em memória.
Na hora de lsitar os usuários, pegue o Collection em escopo de aplicação e msotre seu conteúdo.
Uhm…acho que ficou confuso, mas é isso aí! 
Oi Phillip, valeu pela resposta, mas é que eu penso que se implementar desta forma acaba que se o usuário fechar o browser pelo (x- onClose) do browser ou até mesmo se a máquina dele travar, enfim se ele perder a sessão, sair da aplicação de alguma forma que não seja clicando em logoff no menu para invalidar sua sessão e tirar sua referencia da Collection, eu acabo tendo lixo, por isso que eu pensei em buscar do servidor quais sessões válidas ele possui, pois se o usuário efetuar logoff eu já mato a sessão dele no servidor e se ele sair da aplicação de outro modo o servidor automaticamente já mata a sessão dele, não é? O que vc acha? Porque talvez eu não tenha entendido muito bem a sua sugestão.
Oi,
usa um listener na sua sessão 
http://edocs.bea.com/wls/docs81/webapp/app_events.html
http://www.onjava.com/pub/a/onjava/2001/04/12/listeners.html?page=1
[]s
Só um adendo: crie o nome dos atributos que colocará na sessão o mais especificos possiveis ( ex.: com.minhaclasse.IDcliente ).
Isso porquê se houver outra aplicação rodando na mesma máquina, no mesmo appserver, pode dar porcaria quando fizesse um simples getIDcliente, pois há a possibilidade das outras aplicações também estarem criando sessões e colocando atributos com este mesmo nome.
Olá a todos
Caro pcalcado, achei este tópico pesquisando o fórum sobre listeners. Achei ótimo o texto do link q vc postou. Mas tenho uma dúvida.
Há um trecho q diz:
Para eu usar um listener, é obrigatoriamente necessário ter um filtro definido antes? Ou seja, só posso usar listeners com filtros?
Obrigado
Bom, li o outro texto q vc postou e vi q não…
Me desculpem, vou procurar não me afobar mais antes d lançar um novo post… :roll: uheuheuheueh