Receba notificações da api de Servlet via Listeners
4 minutos de leitura

Em alguns sistemas web precisamos barrar que o usuário efetue o login em mais de um computador. Mas a pergunta é, onde colocaríamos essa regra?
Pode ser feito logo quando o usuário logar, para saber se ja há algum usuário com aquele login, com uma sessão aberta. Claro, você pode se organizar e ter apenas uma classe concentrando a responsabilidade por trabalhar com a sessão do usuário. Nem sempre temos sorte de mexer com um código mais organizado, ou você pode trabalhar com um framework que está escondendo bastante coisa por baixo dos panos. Além disso, você pode estar interessado em ver as modificações na sessão do usuário por diversos motivos, não apenas no caso de login.
A especificação de Servlet do Java nos provê uma funcionalidade interessante, os listeners, onde podemos cadastrar diversos ouvintes para determinados eventos. Sempre que esses eventos ocorrerem, em qualquer lugar do sistema, seremos notificados.
Para isso a api possuí diversas interfaces para cadastrar novos listeners e uma delas é a HttpSessionAttributeListener, onde podemos saber quando um atributo foi adicionado, removido ou substituído da sessão do usuário.
Esses métodos recebem como paremetro um objeto do tipo HttpSessionBindingEvent e com ele podemos recuperar as informações do atributo da sessão, como o nome e o objeto passado no parametro ao [setAttribute]((java.lang.String, java.lang.Object) "setAttribute") da já conhecida classe . Eis o esqueleto da implementação:
Autor(a)
Diego Chohfi
Desenvolvedora de software e engenheira de computação.
Inscreva-se em nossa Newsletter
Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.


