Conectando no banco de dados

4 respostas
J

Estou com um pequeno problema, estou querendo conectar no banco postgresql com este método:

public static Connection connect() throws SQLException{
                try {
                        System.out.println("URL: " + URL);
                        System.out.println("USERNAME: " + USERNAME);
                        System.out.println("PASSWORD: " + PASSWORD);
                        Class.forName("org.postgresql.Driver").newInstance();
                        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
                } catch (ClassNotFoundException e) {
                        throw new SQLException(e.getMessage());
                 } catch(InstantiationException e) {
                        LOGGER.error(e.getMessage());
                   } catch(IllegalAccessException e) {
                        LOGGER.error(e.getMessage());
                     }
                return null;
        }

Sendo que quando executo o mesmo nada acontece.
Estou usando o tomcat como servidor e java 6.

4 Respostas

V

Qual a mensagem de erro que aparece no Console?Connection refuse?

J

Desculpe o erro era outro, pq antes a aplicação usava um pool e eu esqueci de mudar.
Aproveitando quando eu usava o pool depois de um tempo eu recebia este erro:

cannot get a connection pool error timeout waiting for idle object

Você saberia explicar pq? Sendo que eram abertar várias conexões com o banco ao mesmo tempo através de threads.
Pq eu tenho q pegar várias linhas do banco e ir atualizando as mesmas conforme o banco iria recebendo dados novos, ou seja, se em um select retonar 100 linhas vão ser abertas 100 conexões e por ai vai…

eltonk

isso ai me cheira a deadlock

100 conexões, executando 100 comandos ao mesmo tempo, na mesma tabela da base de dados…

Verifique se algumas dessas execuções não estão dando lock no banco…

Abraços

F

Sua conexão me parece correta.

Bem provável que essa mensagem de erro seja devido a grande quantidade de conexões que devem está sendo abertas, ultrapassando o limite de conexões (pool).

Duas coisa coisas podem ser feitas:

  1. Verificar todos os objetos que usam algum recurso de conexão com o banco, talves tenha deixado algum objeto de conexao aberto (Resultset,PreparedStatement,etc…); (close() neles)
  2. Aplique o conceito Singleton em sua classe de conexao para deixar uma única conexão ativa, evitando assim problemas de excesso de conexões abertas junto ao banco.

Abraço,

[]´s
Fábio Heleno Costa
Analista / Desenvolvedor
Nuvvo - Sistemas Corporativos

Criado 9 de janeiro de 2009
Ultima resposta 14 de jan. de 2009
Respostas 4
Participantes 4