请教下关于jdbc的rollback产生的异常的问题
昨天跑程序发现了个以前一直没碰到过的异常.
2008-10-10 04:40:28,708 <WARN> [main] (CommonDAO.java:63) : Can not rollback
2008-10-10 04:40:28,709 <WARN> [main] (CommonDAO.java:64) : com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.
2008-10-10 04:40:28,710 <WARN> [main] (CommonDAO.java:63) : Can not rollback
2008-10-10 04:40:28,757 <WARN> [main] (CommonDAO.java:64) : com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.
2008-10-10 04:40:28,758 <WARN> [main] (MultiThreadCrawler.java:231) : 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.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1169)
at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:693)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1404)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1318)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1303)
at com.mnv.dao.MDBMovieDAO.saveOrUpdateMovie(MDBMovieDAO.java:68)
at com.mnv.core.crawlers.MultiThreadCrawler.startCrawler(MultiThreadCrawler.java:203)
at com.mnv.core.crawlers.mainentries.CrawlerMainEntry.crawlerMain(CrawlerMainEntry.java:53)
at com.mnv.core.crawlers.mainentries.Main.main(Main.java:26)
** END NESTED EXCEPTION **
Last packet sent to the server was 815930 ms ago.
2008-10-10 04:40:28,758 <WARN> [main] (CommonDAO.java:23) : Can not start transaciton
2008-10-10 04:40:28,758 <WARN> [main] (CommonDAO.java:24) : com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.
2008-10-10 04:40:28,758 <WARN> [main] (CommonDAO.java:23) : Can not start transaciton
2008-10-10 04:40:28,759 <WARN> [main] (CommonDAO.java:24) : com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.
2008-10-10 04:40:28,759 <WARN> [main] (CommonDAO.java:63) : Can not rollback
2008-10-10 04:40:28,760 <WARN> [main] (CommonDAO.java:64) : com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.
2008-10-10 04:40:28,760 <WARN> [main] (CommonDAO.java:63) : Can not rollback
2008-10-10 04:40:28,760 <WARN> [main] (CommonDAO.java:64) : com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.
2008-10-10 04:40:28,760 <WARN> [main] (MultiThreadCrawler.java:231) : com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:
** BEGIN NESTED EXCEPTION **
com.mysql.jdbc.CommunicationsException
MESSAGE: 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:3170)
at com.mysql.jdbc.Connection.rollbackNoChecks(Connection.java:5191)
at com.mysql.jdbc.Connection.rollback(Connection.java:5099)
at com.mnv.dao.CommonDAO.rollback(CommonDAO.java:53)
at com.mnv.core.crawlers.MultiThreadCrawler.startCrawler(MultiThreadCrawler.java:226)
at com.mnv.core.crawlers.mainentries.CrawlerMainEntry.crawlerMain(CrawlerMainEntry.java:53)
at com.mnv.core.crawlers.mainentries.Main.main(Main.java:26)
** END NESTED EXCEPTION **
Last packet sent to the server was 0 ms ago.
STACKTRACE:
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:3170)
at com.mysql.jdbc.Connection.rollbackNoChecks(Connection.java:5191)
at com.mysql.jdbc.Connection.rollback(Connection.java:5099)
at com.mnv.dao.CommonDAO.rollback(CommonDAO.java:53)
at com.mnv.core.crawlers.MultiThreadCrawler.startCrawler(MultiThreadCrawler.java:226)
at com.mnv.core.crawlers.mainentries.CrawlerMainEntry.crawlerMain(CrawlerMainEntry.java:53)
at com.mnv.core.crawlers.mainentries.Main.main(Main.java:26)
** 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:3170)
at com.mysql.jdbc.Connection.rollbackNoChecks(Connection.java:5191)
at com.mysql.jdbc.Connection.rollback(Connection.java:5099)
at com.mnv.dao.CommonDAO.rollback(CommonDAO.java:53)
at com.mnv.core.crawlers.MultiThreadCrawler.startCrawler(MultiThreadCrawler.java:226)
at com.mnv.core.crawlers.mainentries.CrawlerMainEntry.crawlerMain(CrawlerMainEntry.java:53)
at com.mnv.core.crawlers.mainentries.Main.main(Main.java:26)
** END NESTED EXCEPTION **
说我在rollback前把连接关闭了...可是我关闭连接明明是在rollback后面啊.