Tenho uma aplicação Java Web Servlet e gostaria de saber se há a possibilidade de declarar variáveis globais ou Singletons que possam ser acessadas somente dentro da própria sessão?
Para exemplificar, a aplicação é acessada por vários usuários ao mesmo tempo e para cada acesso é criada uma sessão, que dá exclusividade para cada usuário. Porém, seu eu implementar uma variável global, dentro de uma classe controller que extende de um HttlServlet, e que esta variável esteja fora dos métodos doGet ou doPost, elas ficam expostas e qualquer sessão acaba acessando estas variáveis.
Gostaria de saber se há alguma forma de implementar estas variáveis globalmente, porém que estejam vinculadas somente a sessão aberta e que possam ser acessadas em qualquer classe da sessão.
Antigamente eu fazia isso através de um multiton.
Um multiton é praticamente um singleton onde tu obtém a instância única a partir de uma chave.
No caso eu usava o id da sessão como chave pra obter a instância.
Pelo que entendi, as sessões ficam gravadas no Map instancias, ou seja, à cada sessão nova criada, esta fica gravada no Map instancias.
Isto com o tempo não ficará com muitos registros?
Como posso fazer para limpar as instancias e liberar as sessões que não estão mais sendo utilizados?