Pessoal estou com esse probleminha aqui no meu sistema, ele aparece o seguinte erro quando possui muitos resultados.
ERROR: HHH000319: Could not get database metadata
org.postgresql.util.PSQLException: FATAL: desculpe, muitos clientes conectados
at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:398)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:173)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
at org.postgresql.jdbc2.AbstractJdbc2Connection.(AbstractJdbc2Connection.java:136)
at org.postgresql.jdbc3.AbstractJdbc3Connection.(AbstractJdbc3Connection.java:29)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.(AbstractJdbc3gConnection.java:21)
at org.postgresql.jdbc4.AbstractJdbc4Connection.(AbstractJdbc4Connection.java:31)
at org.postgresql.jdbc4.Jdbc4Connection.(Jdbc4Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:393)
at org.postgresql.Driver.connect(Driver.java:267)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:190)
at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:193)
at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:194)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178)
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:503)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1788)
at Controle.HibernateUtil.getConexao(HibernateUtil.java:21)
at Controle.CandidatoDAO.BuscaAvancadaCanFA(CandidatoDAO.java:180)
at Visao.Busca.BuscaRefinada(Busca.java:90)
at Visao.Busca.BuscaAvancadaActionPerformed(Busca.java:418)
at Visao.Busca.access$300(Busca.java:28)
at Visao.Busca$5.actionPerformed(Busca.java:289)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Procurei na internet e em algumas postagens dizia que era por que eu nao estava fechando a sessao, mas no meu clientedao elas estão sendo fechadas.
Desde já agradeço pela ajuda de vocês
Muito obrigado
pelo jeito não esta fechando todas as sessoes nao, verifique seus daos, certifique-se que eles fecham as sessoes…
E não tem nenhum método passando por fora do DAO não? que poderia estar deixando a conexão aberta?
Tem não veja aqui como ta passando
[code]public List BuscaAvancadaCC(String CCConsulta) {
HibernateUtil hu = new HibernateUtil();
Session ss = hu.getConexao(new Candidato());
Transaction transacao = ss.beginTransaction();
Query listagem_query = ss.createQuery("FROM FormacaoAcademica WHERE to_ascii(upper(cursocomplementar),'LATIN1') like :cursocomplementar");
listagem_query.setParameter("cursocomplementar", "%" + CCConsulta + "%");
List<FormacaoAcademica> fa = listagem_query.list();
ss.getTransaction().commit();
ss.close();
return fa;
}[/code]
e esse fa é passado para a interface onde ele so faz popular a tabela. O codigo segue abaixo.
if (cursoComplementarSele.isSelected()) {
List<FormacaoAcademica> listaCC = cd.BuscaAvancadaCC(cursoComplementar);
for (FormacaoAcademica fa : listaCC) {
List<Candidato> listaCand = cd.BuscaAvancadaCanFA(fa.getId());
for (Candidato candidato : listaCand) {
modelo.addRow(new Object[]{candidato.getId(), candidato.getPessoa().getDadosPessoais().getNome(), candidato.getPessoa().getContato().getTelefone1(), candidato.getPessoa().getDadosPessoais().getIdade(), candidato.getPessoa().getEndereco().getBairro(), fa.getEscolaridade(), fa.getCursosSuperiores()});
}
}
}
O que vocês acham que pode ser.
Acho que o erro está ai. ss.beginTransaction(), deve retornar uma nova transação.
Pois quando você realiza o commit, faz:
[quote]ss.getTransaction().commit();
ss.close(); [/quote]
Se o beginTransaction retornar um novo objeto e não armazenar no getTransaction, pode ser que esteja trabalhando com transações diferentes.
Além do mais, só há garantia de execução do close se utilizar o finally:
HibernateUtil hu = new HibernateUtil();
Session ss = null;
Transaction transacao = null;
try {
ss = hu.getConexao(new Candidato());
transacao = ss.beginTransaction();
Query listagem_query = ss.createQuery("FROM FormacaoAcademica WHERE to_ascii(upper(cursocomplementar),'LATIN1') like :cursocomplementar");
listagem_query.setParameter("cursocomplementar", "%" + CCConsulta + "%");
List<FormacaoAcademica> fa = listagem_query.list();
transacao.commit();
} catch(Exception ex) {
transacao.rollback();
} finally {
ss.close();
}
return fa;
Olá Btafarelo
Tentei fazer isso que você me falou ai em cima só que continua dando o mesmo erro. Alguem mais sabe oq eu posso fazer?
Posta a configuração do hibernate/datasource
[quote]ERROR: HHH000319: Could not get database metadata
org.postgresql.util.PSQLException: FATAL: desculpe, muitos clientes conectados[/quote]
Conforme essas linhas, parece que a mensagem foi personalizada em um dos arquivos de configuração.
Pode ser que a quantidade de conexões foi alterada ou algum método anterior não está fechando as conexões.
<?xml version="1.0" encoding="UTF-8"?>
org.hibernate.dialect.PostgreSQLDialect
org.postgresql.Driver
jdbc:postgresql://localhost:5432/BancoDeEmpregos
postgres
marcelo2207
<property name="hbm2ddl.auto">create</property>
<property name="hbm2ddl.auto">update</property>
<mapping class="Modelo.Candidato"/>
<mapping class="Modelo.Pessoa"/>
<mapping class="Modelo.DadosPessoais"/>
<mapping class="Modelo.Endereco"/>
<mapping class="Modelo.Experiencia"/>
<mapping class="Modelo.Indicacao"/>
<mapping class="Modelo.Contato"/>
<mapping class="Modelo.CursosSuperiores"/>
<mapping class="Modelo.FormacaoAcademica"/>
<mapping class="Modelo.Referencia"/>
ai ta o arquivo de configuração do hibernate
Esse parametro irá fechar todas as conexões abertas sem uso, no intervalo especificado.
Isso pode resolver, mas deve haver conexões não encerradas em outros métodos. E isso deve estar causando o problema.
Há alguma conexão com o banco de dados antes desse seu método? Esses métodos anteriores funcionam?
Há também as propriedades
[code]property name="hibernate.c3p0.max_size">100</property>
<property name="hibernate.c3p0.min_size">10</property> [/code]
Para definir o tamanho do pool, pode ser necessário aumentar.
Ou ainda o arquivo de configuração postgresql.conf que também possui o parametro max_connections
Esse parametro irá fechar todas as conexões abertas sem uso, no intervalo especificado.
Isso pode resolver, mas deve haver conexões não encerradas em outros métodos. E isso deve estar causando o problema.
Há alguma conexão com o banco de dados antes desse seu método? Esses métodos anteriores funcionam?
Há também as propriedades
property name="hibernate.c3p0.max_size">100</property>
<property name="hibernate.c3p0.min_size">10</property>
Para definir o tamanho do pool, pode ser necessário aumentar.
Ou ainda o arquivo de configuração postgresql.conf que também possui o parametro max_connections
Adicionei essas linhas ao arquivo de configuração só que continua dando o mesmo erro 
Eai pessoal o que vocês acham ainda estou aqui empancado nesse erro afff 
Consegui pessoal graças a Deus.
é que eu organizei tudo aqui, e as conexões abertas também, por que ele estava abrindo uma conexão para cada usuario que era encontrado no banco ai depois de fazer isso, ficou tudo ok.
Agradeço também a todos aqueles que me ajudaram e aos que não ajudaram também
Obrigado 