Dúvidas sobre Session no Servlet

8 respostas
J

Galera :cool:
como posso criar uma sessão no sistema onde todos os outros usuários que logarem possa ver o que tem nela ?

estou já tentei req.getSession() - mas ela se refere a sessão para Cada usuário que usa seu Request e REsponse.
mas estou precisando de algo que seja Global.

Podem me ajudar por favor ?
:grin:

8 Respostas

B

Ola,

Algo que todos que estão no site possam ver seria o contexto, que é representado pelo ServletContext, que vc recupera de dentro do servlet invokando o :this.getServletContext();, nele tem a situação de atributos, como numa session.

B

Esqueci de mencionar que, no teu caso, vc deve trabalhar em conjunto com a session, para verificar se o usuário está logado.

J
Legal bruno Obrigado !! fiz aqui e funcionou está com os objetos armazenados  assim:

this.getServletContext().setAttribute(usuario1, usuarioBean);

this.getServletContext().setAttribute(usuario2,usuarioBean);

só que para remover ele não remove definitivamente !
estou usando :
this.getServletContext().removeAttribute(“usuario1”);

mas na verdade ainda fica lá !!

eu postei novamente a mensagem e com mais detalhes:
http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&p=156758#156758

B

Põ, mas questões relacionadas ao usuário, que deve ser um cliente do site, ou algo do etilo, é melhor ser tratado pela session, pois ae a estrutura garante que vc não ira tratar um achando que é outro…

J

Sim eu concordo mas é que o sistema tem um meio pelo Swing de verificar quem está online… se eu visitar o site pelo URLConnection do Java (via Desktop ) eu precisaria ver quem esta lá em tempo real…
e pela sessão não consigo ver pq ao visitar a pagina via URLConnection estou tendo o meu Request e naõ visualizaria a Sessão de outras pessoas.

por isso que usei esse getServletContext()

mas quanto a minha duvida de removeAttribute naõ tem como então remover definitivamente ?

ou vc tem outra alternativa ?

será bem vinda !

B

Em relação ao removeAttribute, eu fiz umas paradas e ele funcionou legal, sem problemas… dá uma conferida no nome do atributo… pode que ser que tenha algo diferente…

Mas em relação a saber quem está on-line vc pode criar um “repositorio” de suário, que poderia ser gerenciado por um HttpSessionListener… acho que ficaria mais “elegante”.

J

Legal Bruno vou fazer essa de Repositório de Usuario gostei !

como ficaria para adicionar esses usuarios ?
vc quer dizer assim ?
req.getSession().setAttribute(“usuario1”, usuariobean);

mas se for assim o da aplicação swing naõ consegueria enxergar essa sessão certo ?

B

Ola,

Seguinte, crie uma classe que implemente o HttpSessionListener, esta classe tem que ter um construtor default, sem argumentos, esta interface define dois metodos,

void sessionCreated(HttpSessionEvent se)
Notification that a session was created.
void sessionDestroyed(HttpSessionEvent se)
Notification that a session is about to be invalidated.

Como vc pode ver na descrição, vc será notificado quando uma sessão for criada e quando uma sessão for destruida, ache um modo desta tua classe ficar disponivel para o resto da aplicação, e crie os metodos de acesso desejado.... pronto, vc criou um repositorio...

Só esqueci, acho que vc tem que declarar este listener no seu DD, assim:
<web-app...

<listener>
  <listener-class>my.path.to.listener.class</listener-class>
</listener>
Criado 10 de outubro de 2007
Ultima resposta 11 de out. de 2007
Respostas 8
Participantes 2