Numero de sessões com o mesmo nome

6 respostas
spranta

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 …

6 Respostas

pcalcado

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í! :stuck_out_tongue:

spranta

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.

pcalcado

Oi,

usa um listener na sua sessão :wink:
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

_fs

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.

tnaires

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

tnaires

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

Criado 24 de março de 2004
Ultima resposta 19 de ago. de 2004
Respostas 6
Participantes 4