Qual pool de conexões você está usando? A maioria permite que um comando de pulsação seja executado periodicamente para evitar que as conexões fiquem inativas.
EDIT:Olhando para a página de configuração DBCP , acho que você deve definir uma
validationQuery
apropriada (barata) . Você pode então dizer ao DBCP para testar isso ao despejar conexões inativas (testWhileIdle
) ou diga para testar antes de retornar a conexão (testOnBorrow
). O primeiro (espero!) manteria suas conexões ociosas vivas; o segundo não, mas não retornaria conexões quebradas (ou seja, se criaria uma nova, se necessário).