Perda de conexão com o db2

6 respostas
G

OLá pessoal…
bem, vamos ao que interessa.
Tenho uma aplicação rodando em cima do struts,
o datasource está configurado com as propriedades conforme abaixo:

<set-property property="driverClass" value="com.ibm.db2.jcc.DB2Driver" />
<set-property property="maxCount" value="100" />
<set-property property="minCount" value="0" />
<set-property property="autoReconnect" value="true"/>
<set-property property="maxWait" value="-1" />	
<set-property property="loginTimeout" value="-1" />.

Utilizamos o servidor DB2400. O sistema inicializa normalmente, e funciona ok, mas ao passar um certo tempo ocioso, em média 20 min, dá a seguinte mensagem:

...
com.ibm.db2.jcc.b.DisconnectException: A communication error has been detected. Communication protocol being used: {0}. Communication API being used: {1}. Location where the error was detected: {2}. Communication function detecting the error: {3}. Protocol specific error codes(s) {4}, {5}, {6}. TCP/IP SOCKETS Reply.fill() InputStream.read() Connection reset * 0
...
com.ibm.db2.jcc.b.SQLException: invalid operation: connection closed
...

Alguém por favor pode me ajudar.
grato
Fábio

6 Respostas

T

O seu pool de conexões (não sei o que você está usando!) tem de ter alguma propriedade que efetua um “polling” na conexão para mantê-la ativa. Uma conexão que fica aberta por mais de 20 minutos fatalmente será encerrada pelo banco de dados.

G

sei…
pode me dizer que propriedade pode ser esta? Estou configurando o pool pelo struts.

T

Credo (é a primeira vez que vejo alguém usar o GenericDataSource do Struts), mas veja “pingCommand” e “pingQuery” neste documento:

http://struts.apache.org/1.0.2/api/org/apache/struts/util/GenericDataSource.html

Não sei que comando você poderia mandar para o DB2 que executasse super-rápido - aí é por sua conta.

G

e se eu quiser usar o pool do tomcat, como faria?

T

Outra boa pergunta. Só olhando a documentação do Tomcat.

G

mudei para o pool do tomcat… alguma sugestão?

Criado 11 de julho de 2006
Ultima resposta 11 de jul. de 2006
Respostas 6
Participantes 2