Manera correcta de mantener vivas las conexiones agrupadas (o suspenderlas y obtener nuevas) durante una inactividad más prolongada para MySQL, la aplicación Grails 2

Tengo una aplicación de griales que tiene mucha actividad, pero luego a menudo períodos de inactividad que pueden durar varias horas hasta pasar la noche. Me he dado cuenta de que los primeros usuarios de la mañana obtienen el siguiente tipo de excepción, y creo que esto se debe a que las conexiones en la agrupación se están quedando obsoletas y la base de datos MYSql las está cerrando.

He encontrado información conflictiva en Google sobre si usar una propiedad de conexión de Conector / J 'autoReconnect = true' es una buena idea (y si el cliente seguirá recibiendo una excepción incluso si se restaura la conexión), o si establecer otras propiedades que periódicamente desalojarán o actualizarán las conexiones inactivas, las probarán en préstamo, etc. Grails usa el DBCP debajo. Actualmente tengo una configuración simple como la que se muestra a continuación, y estoy buscando una respuesta sobre la mejor manera de garantizar que cualquier conexión extraída de la agrupación después de un largo período inactivo sea válida y no esté cerrada.

dataSource {
        pooled = true
        dbCreate = "update"
        url = "jdbc:mysql://my.ip.address:3306/databasename"
        driverClassName = "com.mysql.jdbc.Driver"
        dialect = org.hibernate.dialect.MySQL5InnoDBDialect
        username = "****"
        password = "****"
        properties {
          //what should I add here?
          }
    }

Excepción

    2012-06-20 08:40:55,150 [http-bio-8443-exec-1] ERROR transaction.JDBCTransaction  - JDBC begin failed
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 64,129,968 milliseconds ago.  The last packet sent successfully to the server was 64,129,968 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3851)
    ...... Lots more .......
Caused by: java.sql.SQLException: Already closed.
    at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:114)

Respuestas a la pregunta(2)

Su respuesta a la pregunta