Olá pessoal,
Tenho um sistema JAVA/Struts utilizando HIBERNATE com PostgreeSQL.
Constantemente ocorrem problemas de ‘too many clients’.
Porém, todos os métodos que acessam a base de dados possui o bloco Try-Finally, sendo que no bloco Finally eu fecho a sessão do Hibernate.
Em tese, o métido Close fecha a conexão com o banco de dados. Porém, o erro ‘too many clientes’ persiste.
Ex:
/**
* Busca um registro através de um ID como parâmetro.
*
* @param idArea chave-básica e obrigatória para a busca da área.
*
* @throws HibernateException
* @throws SQLException
*/
public static AreaHB buscaPorId(Integer idArea)
throws HibernateException, SQLException{
AreaHB areaHB = new AreaHB(); // BEAN do Hibernate
Session session = null;
try {
session = HibernateManager.getSession();
session.load(areaHB, idArea);
session.flush();
} finally {
if (session != null) {
session.close();
session = null;
}
}
return (areaHB);
}
Os detalhes do erro estão abaixo.
Caused by: net.sf.hibernate.JDBCException: Cannot open connection
at net.sf.hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:281)
at net.sf.hibernate.impl.SessionImpl.connect(SessionImpl.java:3297)
at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3277)
at net.sf.hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl.java:65)
at net.sf.hibernate.loader.Loader.prepareQueryStatement(Loader.java:704)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:185)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
at net.sf.hibernate.loader.Loader.doList(Loader.java:955)
at net.sf.hibernate.loader.Loader.list(Loader.java:946)
at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:834)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1536)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1513)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1509)
at com.diaup.bossassistant.gestaoempresarial.dadoscadastrais.hibernate.service.AreaService.busca(AreaService.java:195)
at com.diaup.bossassistant.gestaoempresarial.dadoscadastrais.struts.action.AreaAction.carregaLista(AreaAction.java:377)
... 37 more
Caused by: org.postgresql.util.PSQLException: Inicialização do Núcleo (Backend) falhou: FATAL: Sorry, too many clients already
Peço ajuda para resolver este problema.
Muito obrigado
Bruno Paz