App Engine - Cloud Sql - java.sql.SQLException: esta conexión está cerrada

Después de un tiempo recibí este error, entonces, ¿cómo me aseguro de que la conexión no esté muerta antes de dar mi singleton?

Aquí está mi código:

public static Connection getInstance() throws Exception {

    if(connection != null) {
        return connection;
    }

        DriverManager.registerDriver(new AppEngineDriver());
        connection = DriverManager.getConnection("jdbc:google:rdbms://"+instanceName+"/vidaao");

    return connection;

}

Stack trace:

java.sql.SQLException: esta conexión está cerrada.

Traté de usar isClosed() pero no funciona y parece que isValid() está funcionando pero ralentiza la conexión a la base de datos cada vez

preguntado el 06 de noviembre de 12 a las 19:11

Sin rastro de pila difícil de adivinar lo que está pasando. -

Aquí adjunto mi seguimiento de pila @Nambari -

1 Respuestas

llamar Conexión#isValid sería el mejor enfoque, pero sí, hace ping a la base de datos para garantizar que la conexión sea válida.

Me di cuenta de que no está utilizando el controlador mysql conector/j estándar dentro de AppEngine, le recomiendo que lo pruebe. No agotará el tiempo de espera de las conexiones en el servidor de la misma manera que lo hace el controlador anterior.

Ver https://developers.google.com/appengine/docs/java/cloud-sql/#Java_Connect_to_your_database para el nombre de clase de la clase de controlador JDBC que se usará dentro de AppEngine, así como la URL que se usará.

Espero que esto ayude, Rob

Respondido el 23 de diciembre de 13 a las 21:12

gracias, acabo de implementar esto, daré una oportunidad en producción durante unos días, ¡para ver si resuelve el problema! - Jerónimo Ansia

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.