Pool de conexões

8 respostas
L

Estou utlizando um poolm de conexões e estranhamente a partir de um certo momento . Aparece no log da minha aplicação a seguinte mensagem de erro.

Erro ao criar uma conexão lógica: 17008.
Erro ao criar uma conexão lógica: Conexão Fechada.

Em minhas paginas jsps eu dou um

Connection connection = dbConnection.getConnection();

e no final da pagina dou um
dbConnection.closeConnection(connection);

alguém tem ideia do que possa ser.

8 Respostas

M

o pool funciona mas do nada ele se fecha? tente levantar em quais momentos isso acontece… tente fazer um teste de performance, bah, tem várias causas… tem q procurar o bixo morto no sistema mesmo…

A

Oi, pessoal !!
Verifique se o método “dbConnection.closeConnection(connection)” esta fechando a conexão em uso, ao invés de “devolvé-la”. Como todas as conexões do pool vão sendo fechadas, qdo ele tentar pegar uma conexao, vai acabar dando esse erro…
Espero ter ajudado…
T+

L

vou estar analisando e se consegui resolver posto no fórum . Alguém tem mais alguma dica?

L

debugando melhor encontrei este erro .
DriverManagerConnectionPoolConnection not closed, check your code!
Alguem ja deparou com este erro, antes ?

M

certifique-se de q vc esteja fechando as conexões com o pool após de usá-las em seus métodos!

L

estou
<%dbConnection.closeConnection(connection);%>
só que tem hora que ele nao consegue chamar este método , pois a conexao ja esta fechada.

public void closeConnection (Connection connection) {

try {

// Fechando a conexão lógica.

if (!connection.isClosed()) {

connection.close();

connection = null;

logger.debug(Fechando conexão lógica.);

//             logger.warn("Active size: " + this.getActiveSize() + " Avaliable Connections: " + this.getAvailableConnections() + " Cache Size: "  + this.getCacheSize());

}

}

catch (SQLException sqlEx){

TratamentoDeErro tratamentoErro = new TratamentoDeErro();

tratamentoErro.setLogMessage(Erro ao encerrar uma conexão física ao pool do banco de dados:);

tratamentoErro.setDBCode(sqlEx.getErrorCode());

tratamentoErro.setError(sqlEx);

tratamentoErro.registraErro();

}

}
L

eu conferei no codigo e nao tem outro lugar que dou o close a nao ser no final da pagina gostaria de saber se existe alguma razão pela qual possa estar fechando a conexão antes de ser chamado o método
<%dbConnection.closeConnection(connection);%>
no fianl da página

A

O problema é que vc está fechando todas as conexões do pool e quando vc utiliza o método para chamar a conexão, elas já se encontram fechadas…
o erro 17008 acontece quando vc esta chamando uma conexão já fechada.
pesquise outros métodos de pool de conexão …
T+

Criado 18 de abril de 2005
Ultima resposta 21 de abr. de 2005
Respostas 8
Participantes 3