Tuvimos algunos problemas similares con una de nuestras aplicaciones y después de mucho investigar agregamos las siguientes propiedades que resolvieron todos nuestros problemas de conexión:
maxAge="180000"
testOnBorrow="true"
testWhileIdle="true"
validationInterval="0" //forces the connection pool to validate each time a connection is given to the application