Duvida com abertura e fechamento de sessoes do hibernate

Alguem poderia me ajudar com a abertura e fechamento de sessoes do hibernate?
O que acontece:
Eu executo algumas vezes a query ele ele faz certo, na terceira vez ele nao executa e diz

java.sql.SQLException: Connections could not be acquired from the underlying database!

Veja meu codigo:

public List ListarSalasDisponiveis(){
		listaSalaDisponivel = new ArrayList<Sala>();
		Session session = null;
		try{
			session = new HibernateUtil().getSession();
			session.beginTransaction();
			aloca.setDiaSemana(diasemana);
			aloca.setHoraInicio(horainicio+":"+minutoinicio);
			aloca.setHoraFim(horafim+":"+minutofim);
			listaSalaDisponivel.clear();
			listaSalaDisponivel = new AlocaDao(session).listarSalaDisponivel(aloca);
			session.getTransaction().commit();
		}catch (Exception e) {
			System.out.println("Não foi possivel listar as salas disponiveis");
			e.printStackTrace();
		}finally{
			session.close();
		}
		return listaSalaDisponivel;
	}
Falta alguma coisa?Isso pode ser configuração no banco?O que pode ser?

Voce esta fechando a session!!

Opa!Obrigado por responder!
Mas me diz, qual é a maneira melhor de fazer uma pesquisa, sem que fique acontecendo esse problema de conexao???

Eu não preciso fechar a sessao para fechar os preparedstatements e resultsets?

Opa me desculpe a demora…
então voce deve manter a session aberta ate o momento que vc não for utilizar mais
em uma pagina web por exemplo onde o fluxo seja assim:
servlet> jsp
a conexao deve ser aberta no servlet deve ficar aberta ate o carreganto da jsp (pode preencher uma combo sei la).

Opa!vlw mais uma vez.
Entendi.Da maneira q eu citei acima, para preencher combo foi tranquilo, nao deu mais esse tipo de erro. Meu problema é quando eu uso em um formulario cheio de combos pre-carregadas, um botao no formulario com um actionlistener.Vou ser claro:
Tenhu um formulario de busca, nesse formulario tem 3 combos dinamicas, um commandbutton e um datatable.
depois de eu selecionar os dados para a pesquisa,nas combos, eu clico no commandbutton,que executa uma consulta com os dados das combos, que ira preencher a datatable com o resultado da query.
O botao tem um actionlistener que carrega o datatable sem mudar de pagina, mudando as informaçoes da mesma.
Mas qdo eu aperto o botao, alem dele atualizar o datatable, ele carrega as combos(não sei o porque), se eu apertar o botao para pesquisar mais vezes, ele dá o erro que eu citei acima.
Vc tem alguma dica que possa me dá???
Fui claro??? :roll: