Я, кажется, испытываю исключение в моей заявке в одночасье.
Моя среда - это веб-приложение на Java, использующее Tomcat, написанное на Java6 и работающее на MySQL, а Hibernate3 используется для подключения к базе данных (с использованием коннектора MySQL 5.0.3 - mysql-connector-java-5.0.3-bin. банка)
Существует запланированное задание, которое выполняется в одночасье (с использованием кварца в качестве планировщика), и при запуске в 3 часа ночи при попытке доступа к базе данных оно дает следующее исключение (обратите внимание, я переименовал биты трассировки стека с помощью "xxx" «поскольку это внутренний код компании, в которой я работаю):
03:00:00 ERROR bernate.transaction.JDBCTransaction: JDBC begin failed
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:1913)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3118)
at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5215)
at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:331)
at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:317)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:63)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
at xxx.HibernateSession.beginThreadTransaction(HibernateSession.java:75)
at xxx.HibernateSession.beginTransaction(HibernateSession.java:141)
at xxx.TestCaseManager.runAllTestsInBackground(TestCaseManager.java:228)
at xxx.scheduler.Job.execute(Job.java:42)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
** END NESTED EXCEPTION **
Last packet sent to the server was 0 ms ago.
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2515)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3118)
at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5215)
at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:331)
at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:317)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:63)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
at xxx.HibernateSession.beginThreadTransaction(HibernateSession.java:75)
at xxx.HibernateSession.beginTransaction(HibernateSession.java:141)
at xxx.TestCaseManager.runAllTestsInBackground(TestCaseManager.java:228)
at xxx.scheduler.Job.execute(Job.java:42)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
03:00:00 ERROR bernate.transaction.JDBCTransaction: JDBC begin failed
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
Утром при входе в приложение (которое также требует доступа к базе данных) выдается аналогичное исключение, но после ожидания около 5 минут и повторной попытки мы можем попасть в приложение.
Я проверил базу данных и могу выполнять простые SELECT для таблиц, к которым она пытается подключиться. Любая помощь будет оценена.