c3p0.properties - o que há de errado?

1 resposta
adrianostanley

Olá pessoal, ficaria muito grato se pudessem me dar uma força.

Tenho uma aplicação rodando na web com a seguinte configuração do c3p0:

c3p0.minPoolSize=3
c3p0.maxPoolSize=40
c3p0.maxStatements=400
c3p0.acquireIncrement=3
c3p0.idleConnectionTestPeriod=0

c3p0.checkoutTimeout=0
c3p0.maxStatementsPerConnection=10
c3p0.acquireRetryDelay=1000
c3p0.acquireRetryAttempts=60
c3p0.maxIdleTimeExcessConnections=120
c3p0.numHelperThreads=6

c3p0.debugUnreturnedConnectionStackTraces=false
c3p0.unreturnedConnectionTimeout=180

Cheguei a esta configuração após ler muitos posts sobre o assunto.

Acontece que uma das minhas rotinas consiste em abrir uma Session no hibernate, realizar algumas buscas e executar uma carga pesada em arquivo que dura em torno de 40 segundos. Se essa manipulação retornar com sucesso faço o commit. Senão devo fazer rollback pra garantir a consistência dos dados.

Quando rodo localmente em uma máquina com bom processador tudo funciona perfeitamente.

Entretanto, quando é no servidor ele quebra pois diz que a conexão com o banco já foi fechada sendo que eu setei o idleConnectionTestPeriod pra zero pra não ter esse problema.

Alguém faz idéia de onde estou errando?

1 Resposta

davidpaniz

setar o idleConnectionTestPeriod significa que ele NUNCA vai verificar se a conexão ainda está aberta o que causa esse erro se o banco já fechou a conexão.
Faça um teste com um valor maior para verificar.

Outra coisa, essa configuração só vai funcionar para as conexões idle no pool. Se você já pegou ela do pool e o banco fechou depois, não é problema do c3p0. Verifique o timeout no banco também.

Criado 19 de setembro de 2011
Ultima resposta 20 de set. de 2011
Respostas 1
Participantes 2