Não sei quão mal-performático isso fica em um sistema com muitos usuários logados, mas a princípio poderia ter um Map<Integer, Usuario>, em que a chave Integer eh o id da sessão dele (aí você adiciona e remove do mapa no login e logout, respectivamente).
Daí da pra saber quantos usuários estão logados, bem como recuperar as informações deles.
H
Hebert_Coelho
Você poderia criar um listener de http. Toda sessão criada ele seria chamado e toda sessão finalizado ele tb seria chamado.
Mas não é nada bom isso não. É um resultado aproximado. [=
A
alandiniz
Rendrys:
Não sei quão mal-performático isso fica em um sistema com muitos usuários logados, mas a princípio poderia ter um Map<Integer, Usuario>, em que a chave Integer eh o id da sessão dele (aí você adiciona e remove do mapa no login e logout, respectivamente).
Daí da pra saber quantos usuários estão logados, bem como recuperar as informações deles.
tem razão, desse jeito ai da pra fazer… + achei que o JAAS tinha algo pronto já… agora sei pq eu pesquisei e não achei rsrs… . + realmente em questão de performance pode não ser viável, + foi só uma ideia que surgiu e fiquei curioso…
R
raf4ever
alandiniz:
tenho um sistema:
hibernate, jsf, jaas, jboss, bla bla…
tem como eu contar quantas sessões estão ativas?
tpow eu sou administrador do sistema e quero ver quantas pessoas estão logadas…
e aproveitando, tem como saber quais pessoas? ^^ (aqui já é demais rsrs)
Por coincidencia ja implementei isso que vc quer.Usei um listener,segue o código:
@Component("usuarioListener")@Scope("singleton")publicclassUsuarioListenerimplementsHttpSessionAttributeListener{staticintusuarios;@OverridepublicvoidattributeAdded(HttpSessionBindingEventevt){if(evt.getName().equalsIgnoreCase("usuario"))usuarios++;}@OverridepublicvoidattributeRemoved(HttpSessionBindingEventevt){if(evt.getName().equalsIgnoreCase("usuario"))usuarios--;}@OverridepublicvoidattributeReplaced(HttpSessionBindingEventarg0){// TODO Auto-generated method stub}publicintgetUsuarios(){returnusuarios;}}
A
alandiniz
raf4ever:
alandiniz:
tenho um sistema:
hibernate, jsf, jaas, jboss, bla bla..
tem como eu contar quantas sessões estão ativas?
tpow eu sou administrador do sistema e quero ver quantas pessoas estão logadas...
e aproveitando, tem como saber quais pessoas? ^^ (aqui já é demais rsrs)
Por coincidencia ja implementei isso que vc quer.Usei um listener,segue o código:
@Component("usuarioListener")@Scope("singleton")publicclassUsuarioListenerimplementsHttpSessionAttributeListener{staticintusuarios;@OverridepublicvoidattributeAdded(HttpSessionBindingEventevt){if(evt.getName().equalsIgnoreCase("usuario"))usuarios++;}@OverridepublicvoidattributeRemoved(HttpSessionBindingEventevt){if(evt.getName().equalsIgnoreCase("usuario"))usuarios--;}@OverridepublicvoidattributeReplaced(HttpSessionBindingEventarg0){// TODO Auto-generated method stub}publicintgetUsuarios(){returnusuarios;}}
cara, perfeito, mto obrigado mesmo, fds vou tentar implementar no meu código...
e vc acha que consome muito da aplicação? não vai deixar mais lento?
R
raf4ever
alandiniz:
raf4ever:
alandiniz:
tenho um sistema:
hibernate, jsf, jaas, jboss, bla bla..
tem como eu contar quantas sessões estão ativas?
tpow eu sou administrador do sistema e quero ver quantas pessoas estão logadas...
e aproveitando, tem como saber quais pessoas? ^^ (aqui já é demais rsrs)
Por coincidencia ja implementei isso que vc quer.Usei um listener,segue o código:
@Component("usuarioListener")@Scope("singleton")publicclassUsuarioListenerimplementsHttpSessionAttributeListener{staticintusuarios;@OverridepublicvoidattributeAdded(HttpSessionBindingEventevt){if(evt.getName().equalsIgnoreCase("usuario"))usuarios++;}@OverridepublicvoidattributeRemoved(HttpSessionBindingEventevt){if(evt.getName().equalsIgnoreCase("usuario"))usuarios--;}@OverridepublicvoidattributeReplaced(HttpSessionBindingEventarg0){// TODO Auto-generated method stub}publicintgetUsuarios(){returnusuarios;}}
cara, perfeito, mto obrigado mesmo, fds vou tentar implementar no meu código...
e vc acha que consome muito da aplicação? não vai deixar mais lento?
Controle das sessões criadas e destruídas, nesse exemplo só controla a quantidade, você pode alterar para guardar o nome do usuário, id ou um objeto que represente o usuário.