Mensaje de error intermitente con conexión JSP <-> Mysql

Tengo algunas páginas jsp que se conectan a una base de datos mysql e intermitentemente recibo el siguiente mensaje de error:

"El último paquete recibido con éxito del servidor fue hace 36,727,995 milisegundos. El último paquete enviado con éxito al servidor fue hace 36,733,072 milisegundos. Es más largo que el valor configurado de servidor de 'wait_timeout'. Debe considerar caducar y / o probar la validez de la conexión antes de usar en su aplicación, aumentar los valores configurados del servidor para los tiempos de espera de los clientes o usar la propiedad de conexión Connector / J 'autoReconnect = true' para evitar este problema "

El patrón de ocurrencia es bastante aleatorio, pero tiende a ocurrir con mayor frecuencia después de que no haya mucha actividad en el sitio web, como a primera hora de la mañana.

Encontré este hilo en stackoverflow que menciona el mismo error: Tomcat6 no se puede conectar a MySql (el controlador no ha recibido ningún paquete del servidor)

y la resolución final fue agregar esta línea:

permission java.net.SocketPermission "127.0.0.1:3306", "connect";

a

$TOMCAT-CONFIG/policy.d/04webapps.policy

Estoy ejecutando tomcat 7 en centOS 5.5 y no veo un directorio policy.d ni un archivo 04webapps.policy en ninguna parte. ¿Debo crear manualmente ambos o hay otra forma de resolver este problema?

Actualización: Aquí hay un ejemplo de cómo consulto la base de datos en uno de mis archivos jsp:

DBFunctions dbf = null;
boolean bException = false;
ArrayList<String[]> arrayListRows1 = new ArrayList<String[]>();
try
{
    dbf = new DBFunctions();
    dbf.db_run_query(query2);
    while (dbf.rs.next()) {
        String [] tmp = new String[6];

        tmp[0] = dbf.rs.getString("fact_data.entity_id");
        tmp[1] = dbf.rs.getString("date_begin");
        tmp[2] = dbf.rs.getString("value");
        tmp[3] = dbf.rs.getString("ticker");
        tmp[4] = dbf.rs.getString("full_name");
        tmp[5] = dbf.rs.getString("name");






        arrayListRows1.add(tmp);

    }
}
catch (SQLException sqle)
{

    out.println(PopulateSpreadsheet.createGoogleError(strReqId,"sql_exception",sqle.getMessage(),"PF ERROR CODE 2eh2-1"));
    bException = true;
}
finally
{
    if (dbf !=null) dbf.closeConnection();
    if (bException == true)
        return;
}

DBFunctions.java se encuentra en el directorio src / de la aplicación web, por lo que técnicamente no es una página jsp que consulta directamente la base de datos.

Volveré y comprobaré una vez más, pero intenté codificar todas las consultas de mi base de datos de la misma manera con la conexión cerrada inmediatamente después de terminar con ResultSet.

¿Alguna recomendación sobre la mejor manera de hacer un inventario en el grupo de conexiones para verificar periódicamente el estado de las conexiones?

Actualización: sigo teniendo problemas con este error. Agradezco las sugerencias sobre cómo mover la mayor parte de mi lógica de programación fuera de mis páginas jsp a un servlet / biblioteca, pero no creo que eso solucione este problema en particular.

Otras personas informaron haber visto este problema y es porque mysql está agotando las conexiones en el grupo de conexiones tomcat jdbc. Es extraño para mí que el grupo de conexiones tomcat no emplee algún tipo de mantenimiento para evitar este problema. Creo que eso sería parte de cada diseño de grupo de conexiones.

Respuesta 1

Tengo una vista que tiene varios botones de "bandera" (JToggleButton). Cuando el usuario hace clic en un botón de marca, quiero actualizar una matriz que realiza un seguimiento de qué botones están marcados. Esto es bastante simple y ...

Entonces, mi médico me pidió que implemente treeSort () y luego lo pruebe en int [1000000] y calcule el tiempo. Tengo la clase BSTree <E> que contiene los siguientes métodos: public void treeSort (E [] ...

Hola, estoy cargando un archivo al servidor usando el socket y necesito el porcentaje de archivo cargado, ¿cómo puedo hacer eso? Tengo el valor máximo, es decir, la longitud del archivo, ¿cómo puedo obtener la cantidad de archivo que se ha cargado? ...

En java estoy escribiendo algunos objetos DTO, que todos heredan de AllocationDTO. Luego se pasa una lista de estos objetos a un objeto DAO para guardar en la base de datos. Dependiendo de qué subtipo de ...