alots_ssa:
Galera, qual a melhor forma de abrir sessoes no hibernate em ambiente web. Abrir num filtro e usa essa mesma sessao em todos os casos. Ou ficar abrindo e fechando sempre que necessario. Outra coisa, a locaweb me disponibilizou um datasource com um pool que permite 5 conexoes simultaneas. Isso eh pouco como eu acho ou as excessoes de pool “exhausted” eram advindas de falhas minhas na manipulacao da sessao do hibernate?
Valeu,
Alberto
Olha cara,
Eu tenho aberto a sessão, executado o comando e fechado a sessão. Mas isso por que eu parto do pré-suposto de que todos os meus comandos usarão banco de dados. Abrir e fechar uma sessão é uma operação barata, então não tem tanto problema.
O que eu recomendo é você colocar a sessão aberta numa ThreadLocal (sabe o que é isso? Eu não sabia até ler o livro do hibernate). Então, cada requisição http vai ter a sua própria sessão. Isso é bom pq a sessão possui um negócio chamado “cache de primeiro nivel”. Ou seja, se vc pegar um objeto por um comando e, depois, com a mesma sessao mas em outra requisição, pegar o mesmo objeto, você vai pegar o objeto no cache e não no banco de dados. Isso pode acabar dando conflitos entre o banco e o seu programa.
Outra coisa é que se a sessão fechar por algum erro interno, seu sistema vai pras cucuias. Pq ele depende unicamente daquela sessão. Então, abrindo e fechando a sessão, se uma delas der erro, uma única requisição vai dar erro, mas o sistema continuará intacto.
5 Conexões é o suficiente, dependendo do caso. O Hibernate faz um pool de conexões, ou seja, ele mantém as conexões abertas e distrubui entre as sessões (esse é um dos papéis da SessionFactory).
Eu imagino que esse erro deve ser por que o hibernate está tentando aumentar o pool de conexões. Então, altere o arquivo de configurações do hibernate para usar apenas 5 conexões. Não lembro a propriedade exatamente, mas isso você acha fácil. Blz? 
Boa sorte!
Pilot