Estava fazendo uma leitura sobre JSP em um material relativamente antigo (5 anos) e encontrei a seguinte declaração:
Session: Session information can cross pages and servlets, session can be used to store objects [Sessão pode ser usada para armazenar/guardar objetos].
Surgiu a dúvida: É uma boa prática guardar objetos na session?
Exemplo:
Tenho uma aplicação (pequena);
Preciso fazer o controle de conexões (uma conexão para cada usuário conectado);
Posso guardar um objeto do tipo Connection na session da minha aplicão sem ter problemas? Dessa forma tenho uma unica conexão por usuário.
Quais riscos a aplicação poderia correr?
É possível “destrichar” uma session e conseguir suas informações sem (o atacante) conhecer a aplicação?
Fiz várias pesquisas sobre cuidados com segurança em aplicações web e encontrei o tema “Sequestro de sessão” e fiquei com dúvidas.
Você pode gravar objetos na sessão, mas o exagero pode levar a problemas de escalabilidade. Afinal de contas, é a memória do servidor que está sendo usada no armazenamento.
Definitivamente guardar um objeto representando a conexão do banco na sessão não é recomendado. Se você quer gerenciar as conexões de forma eficiente, use um pool de conexões. Se você estiver usando JDBC puro, o C3P0 é uma boa pedida.
Consegui fazer um pool de conexões no Tomcat (server_Resource.xml). Mas, o serviço de hospedagem que será disponibilizado não permitirá fazer alterações no Tomcat porque ele será compartilhado. Por isso surgiu a dúvida/problema porque também não terei tempo de criar um gerenciamento de conexões utilizando o Spring.
Vou ler sobre o C3P0. Mas de antemão ele se aplica à minha situação?
O C3P0 é ideal para sua situação, uma vez que você não terá acesso ao serviço fornecido pelo Tomcat. A configuração do C3P0 é realizada dentro da própria aplicação.