java.sql.SQLException: No operations allowed after

news/2024/5/19 0:21:13 标签: Java, SQL, Hibernate, MySQL, JDBC
情况是这样的,我使用tomcat5.0.28+hibernate2+mysql4,在M$的系统下没出现过任何问题,但将系统装到linux上以后(redhat9及as3),发现过一段时间后就没有办法连接上数据库,查看日志,内容如下:
ERROR http-8080-Processor22 net.sf.hibernate.util.JDBCExceptionReporter - Could not execute query
java.sql.SQLException: No operations allowed after connection closed.


Connection was closed due to the following exception:


** BEGIN NESTED EXCEPTION **


java.sql.SQLException
MESSAGE: Communication link failure: java.io.IOException, underlying cause: Unexpected end of input stream


** BEGIN NESTED EXCEPTION **


java.io.IOException
MESSAGE: Unexpected end of input stream


STACKTRACE:


java.io.IOException: Unexpected end of input stream
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1405)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1775)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1020)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1109)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2030)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1563)
        at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:87)
        at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:800)
        at net.sf.hibernate.hql.QueryTranslator.iterate(QueryTranslator.java:848)
        at net.sf.hibernate.impl.SessionImpl.iterate(SessionImpl.java:1601)
        at net.sf.hibernate.impl.QueryImpl.iterate(QueryImpl.java:27)
省略...........



后来发现,原来是长时间不用这个连接后,JDBC会自动将连接释放,然后就无法连接上,只有重新启动tomcat方可解决,查找资料后,发现如下方法可以解决此问题。


使用hibernate:
<property name="connection.autoReconnect">true</property>  <!--这个是最主要的-->
<property name="connection.autoReconnectForPools">true</property>
<property name="connection.is-connection-validation-required">true</property>
加入以上property,可解决此问题,如果未使用hibernate等持久化管理框架,可在mysql的url中加入autoReconnect=true,这样就可以解决。



mysql的站点上说是JDBC3.1.0-alpha及以前版本会出现此问题,推荐下载新的JDBC驱动,无所谓了,只要能解决问题,我也懒的换,至少现在运行了1天还未出现以前的错误,应该是算解决了,呵呵,等待更长时间的测试。

http://www.niftyadmin.cn/n/1039979.html

相关文章

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决办法

用IDEAmavenjfinal出现的问题&#xff1a; java.lang.ClassNotFoundException: com.mysql.jdbc.Driver今天早上&#xff0c;在配置基础的SSM框架时遇到这样的一个问题&#xff1a;java.lang.ClassNotFoundException: com.mysql.jdbc.Driver当时的第一反应就是jar包缺失&#xf…

名词解释及参考资料

signavio&#xff1a;JBPM4.1 加入的Web流程编辑器。 参考资料&#xff1a;http://www.cnblogs.com/leshem/archive/2009/09/22/1572042.html Spring Security&#xff1a;Spring 安全权限管理框架参考资料&#xff1a;http://www.family168.com/oa/springsecurity/html/index…

Android之使用个推实现三方应用的推送功能

Android之使用个推实现三方应用的推送功能PS&#xff1a;用了一下个推.感觉实现第三方应用的推送功能还是比较简单的.官方文档写的也非常的明确.学习内容:1.使用个推实现第三方应用的推送.所有的配置我最后会给一个源代码,内部有相关的配置和文档来帮助大家完成配置,在这里就不…

MSSQL 错误信息解释

表 <0s> 中的列与现有的主键或 UNIQUE 约束不匹配。外键关系中主键方的列必须参与主键或唯一约束。为选定的一个表设置主键或唯一约束后&#xff0c;即可为该表定义其它关系。

体验个推推送,感受Android推送的魅力

体验个推推送&#xff0c;感受Android推送的魅力2015年03月15日 20:57:35阅读数&#xff1a;3819消息推送在android应用中已经不胜枚举&#xff0c;足以体现它的重要性。今天我来和大家一起学习一下目前最主流的推送之一 - 个推推送 。1&#xff0c;我们先在个推官网注册一个自…

TCC分布式事务理解

TCC是三个英文单词的首字母缩写而来&#xff0c;分别对应Try、Confirm和Cancel三种操作&#xff0c;这三种操作的业务含义如下&#xff1a; Try&#xff1a;预留业务资源 Confirm&#xff1a;确认执行业务操作 Cancel&#xff1a;取消执行业务操作 下面我将对这三种事务挨个…

Android项目工程中的Gradle、compileSdkVersion、buildToolsVersion

Android项目工程中的Gradle、compileSdkVersion、buildToolsVersion2018年02月10日 12:59:43阅读数&#xff1a;5541. GradleGradle是一个依赖管理工具&#xff0c;也是一个编程框架。基于Groovy语言&#xff0c;面向Java应用为主&#xff0c;摒弃了基于XML的繁琐配置&#xff…

OpenSessionInViewFilter配置说明

原文地址&#xff1a;http://kenshinlk.iteye.com/blog/59087 <!--OpenSessionInViewFilter配置&#xff0c;其实是一个又繁琐性能又低的东西&#xff0c;以后再也不想用到--> < filter >< filter-name > OpenSessionInViewFilter </ filter-name >…