Mi Java, que utiliza Hibernate y se aloja por Tomcat 6.0, obtiene la siguiente excepción después de un largo tiempo de inactividad cuando se trata de acceder a la base de datos:Tomcat, Hibernate y la aplicación java.io.EOFException
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.io.EOFException
STACKTRACE:
java.io.EOFException
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1963)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2375)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2874)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1403)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1812)
at org.hibernate.loader.Loader.doQuery(Loader.java:697)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2232)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
at org.hibernate.loader.Loader.list(Loader.java:2124)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
¿Algún consejo?
Gracias
bien a juzgar por el error, lo que esta página tiene que decir http://java.sun.com/j2se/1.4.2/docs/api/java/io/EOFException.html y el tiempo de espera prolongado que lo haría parece que por alguna razón su aplicación/hibernación no puede conectarse a su base de datos. Verifique la dirección URL, el puerto y los detalles de inicio de sesión. –
Parece que Hibernate no puede volver a conectarse a la base de datos cuando expira la conexión. Porque primero funciona, luego de una larga inactividad, se lanza la excepción. – Mark
ah ok esta es una opción de configuración. puedes obtener jdbc para volver a conectarte, pero fuera de la cabecera no sé la respuesta, prueba un google http://www.google.com/search?hl=es&q=jdbc+hibernate+reconnect –