1
resposta

Como acessar as sessions direto no servidor?

Como vimos nos exemplos, sempre que vamos alterar alguma session, pegamos ela com o getSession() do cliente em questao... mas vamos supor, eu quero ver todas as sessions que estao armazenadas no servidor, como eu faço isso?

Tentando explicar melhor... me parece que, cada referencia "session" é declarada localmente nas classes... mas essas mesma session, é acessada em todas as classes (login, filtro e logout)... queria saber como funciona esse armazenamento da HttpSession

1 resposta

Oi Eduardo,

Cada usuário terá seu objeto Session que é gerenciado automaticamente pelo servidor.

Sempre que você acessar o objeto Session em alguma classe, será a mesma Session, que representa a sessão daquele usuário em específico.

A única maneira de você conseguir recuperar todas as sessões e criando um Listener e guardando numa lista as sessões novas que foram criadas.

Algo como:

@WebListener
public class RegistraSessions implements HttpSessionListener {

    private List<Session> sessoes = new ArrayList<>();

    @Override
    public void sessionCreated(HttpSessionEvent event) {
        //esse metodo sera chamado pelo servidor sempre que uma nova session for criada
        Session session = event.getSession();
        sessoes.add(session);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent event) {
        //esse metodo é chamado quando a sessão expira ou quando é destruida manualmente na aplicação
        Session session = event.getSession();
        sessoes.remove(session);
    }

    public List<Session> getSessoes() {
        return sessoes;
    }

}