我用的是MYSQL +Resin
程序运行了一段时间后,就偶然会报出下面的错误:
[2007-03-31 22:49:33] com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 
[2007-03-31 22:49:33] 
[2007-03-31 22:49:33] ** BEGIN NESTED EXCEPTION ** 
[2007-03-31 22:49:33] 
[2007-03-31 22:49:33] java.io.EOFException
[2007-03-31 22:49:33] 
[2007-03-31 22:49:33] STACKTRACE:
[2007-03-31 22:49:33] 
[2007-03-31 22:49:33] java.io.EOFException
[2007-03-31 22:49:33]   at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)
[2007-03-31 22:49:33]   at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
[2007-03-31 22:49:33]   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
[2007-03-31 22:49:33]   at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
[2007-03-31 22:49:33]   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
[2007-03-31 22:49:33]   at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)
[2007-03-31 22:49:33]   at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)
[2007-03-31 22:49:33]   at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1266)
[2007-03-31 22:49:33]   at com.caucho.sql.UserPreparedStatement.executeQuery(UserPreparedStatement.java:108)
[2007-03-31 22:49:33]   at com.caucho.sql.UserPreparedStatement.executeQuery(UserPreparedStatement.java:108)
[2007-03-31 22:49:33]   at ayou.db.BASE.getDataWithException(BASE.java:301)
[2007-03-31 22:49:33]   at ayou.db.BASE.getData(BASE.java:274)
[2007-03-31 22:49:33]   at com.tom.tech.cms.analytics.ArticleIndexdb.getNewListAll(ArticleIndexdb.java:42)
[2007-03-31 22:49:33]   at com.tom.tech.cms.analytics.BackupActicle.getNewList(BackupActicle.java:46)
[2007-03-31 22:49:33]   at com.tom.tech.cms.analytics.BackupActicle.setAllNewList(BackupActicle.java:60)
[2007-03-31 22:49:33]   at _jsp._analytics._test__jsp._jspService(_test__jsp.java:41)
[2007-03-31 22:49:33]   at com.caucho.jsp.JavaPage.service(JavaPage.java:60)
[2007-03-31 22:49:33]   at com.caucho.jsp.Page.pageservice(Page.java:570)
[2007-03-31 22:49:33]   at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:179)
[2007-03-31 22:49:33]   at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:173)
[2007-03-31 22:49:33]   at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
[2007-03-31 22:49:33]   at com.caucho.server.hmux.HmuxRequest.handleRequest(HmuxRequest.java:420)
[2007-03-31 22:49:33]   at com.caucho.server.port.TcpConnection.run(TcpConnection.java:511)
[2007-03-31 22:49:33]   at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:520)
[2007-03-31 22:49:33]   at com.caucho.util.ThreadPool.run(ThreadPool.java:442)
[2007-03-31 22:49:33]   at java.lang.Thread.run(Thread.java:595)
[2007-03-31 22:49:33] 
[2007-03-31 22:49:33] 
[2007-03-31 22:49:33] ** END NESTED EXCEPTION **
[2007-03-31 22:49:33] 
[2007-03-31 22:49:33] 
[2007-03-31 22:49:33] 
[2007-03-31 22:49:33] Last packet sent to the server was 1 ms ago.
[2007-03-31 22:49:33]   at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2515)
[2007-03-31 22:49:33]   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
[2007-03-31 22:49:33]   at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
[2007-03-31 22:49:33]   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
[2007-03-31 22:49:33]   at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)
[2007-03-31 22:49:33]   at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)
[2007-03-31 22:49:33]   at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1266)
[2007-03-31 22:49:33]   at com.caucho.sql.UserPreparedStatement.executeQuery(UserPreparedStatement.java:108)
[2007-03-31 22:49:33]   at com.caucho.sql.UserPreparedStatement.executeQuery(UserPreparedStatement.java:108)
[2007-03-31 22:49:33]   at ayou.db.BASE.getDataWithException(BASE.java:301)
[2007-03-31 22:49:33]   at ayou.db.BASE.getData(BASE.java:274)
[2007-03-31 22:49:33]   at com.tom.tech.cms.analytics.ArticleIndexdb.getNewListAll(ArticleIndexdb.java:42)
[2007-03-31 22:49:33]   at com.tom.tech.cms.analytics.BackupActicle.getNewList(BackupActicle.java:46)
[2007-03-31 22:49:33]   at com.tom.tech.cms.analytics.BackupActicle.setAllNewList(BackupActicle.java:60)
[2007-03-31 22:49:33]   at _jsp._analytics._test__jsp._jspService(_test__jsp.java:41)
[2007-03-31 22:49:33]   at com.caucho.jsp.JavaPage.service(JavaPage.java:60)
[2007-03-31 22:49:33]   at com.caucho.jsp.Page.pageservice(Page.java:570)
[2007-03-31 22:49:33]   at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:179)
[2007-03-31 22:49:33]   at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:173)
[2007-03-31 22:49:33]   at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
[2007-03-31 22:49:33]   at com.caucho.server.hmux.HmuxRequest.handleRequest(HmuxRequest.java:420)
[2007-03-31 22:49:33]   at com.caucho.server.port.TcpConnection.run(TcpConnection.java:511)
[2007-03-31 22:49:33]   at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:520)
[2007-03-31 22:49:33]   at com.caucho.util.ThreadPool.run(ThreadPool.java:442)
[2007-03-31 22:49:33]   at java.lang.Thread.run(Thread.java:595)
请问这是怎么会事啊,是什么原因引起的
为什么有时候会报,有时候又正常了呢?

解决方案 »

  1.   

    在mysql关闭连接之前关闭自己持有的链接
      

  2.   

    我用的是JNDI上的连接池,而且每次执行完SQL,都关闭了连接的
    可是还是报这样的错误啊
    而且我使用的autoreconnect=true,24小时随时可以连接mysql的
      

  3.   

    难道是Resin对连接池支持不好?
      

  4.   

    也出现这个问题,请解决的朋友帮忙 msn [email protected]
      

  5.   

    原因1
    1是因为使用了数据库的连接池的原因!
    java数据库的连接池一直持有链接,
    但是mysql的链接有默认的设置:在24小时多,(具体的时间忘记了),如果这个链接没有活动,就会关闭!
    所以你的程序在过了很长一段时间没有人访问的时候,便会出现这种情况!
    配置连接池的探测功能,每隔1h探测一次,我去年的时候遇到过这个问题,
    原因2
    你的数据量太大了,设置延时时间,或者换高版本驱动
      

  6.   

    我也遇到此問題了. 請問如何是好? 我發現是LOCK_TABLE造成的. 但是要如何避掉呢?
      

  7.   

    我也遇到此問題了. 請問如何是好? 
    有解决者发给我好吗?  [email protected]
      

  8.   

    我也遇到了  我用的是JNDI  程序中自己写个一个连接Connection !!!!! 数据量太大了!