最近做的ssh项目,运行一段时间总是出现2013-08-01 16:12:43 [org.hibernate.engine.jdbc.spi.SqlExceptionHelper]-[WARN] SQL Error: 0, SQLState: 08S01
2013-08-01 16:12:43 [org.hibernate.engine.jdbc.spi.SqlExceptionHelper]-[ERROR] Connection reset
2013-08-01 16:12:43 [org.hibernate.event.internal.DefaultLoadEventListener
2013-08-01 16:12:43 [org.hibernate.engine.jdbc.spi.SqlExceptionHelper]-[WARN] SQL Error: 0, SQLState: null
2013-08-01 16:12:43 [org.hibernate.engine.jdbc.spi.SqlExceptionHelper]-[ERROR] 该连接已关闭。
这个错误。目前已经找到原因,现将我的答案共享。
这个错误,之前我在网上查很多说是连接池问题,我换了连接池c3p0 Proxool druid dpcp都用了,但是都不行,把数据库操作的代码重新改写了,都不行,都急疯了,最后发现是session的问题,是因为我的项目里面用了rpc过程调用,但是无论是struts的session过时拦截器还是srping-security的session过时管理,对这个都不管用,所以导致当session失效时,页面仍然可以操作数据库,所以出现以上错误。最后的解决方案是在每次rpc方法调用时都用session中有无login信息来判断session是否过期。我觉得struts-dojo项目可以在这上面做一个改进,是的rpc也受session过时拦截。