问题描述
系统架构采用的是struts2+hibernate+sybase,事物控制直接在底层DAO的方法里进行事物打开、提交、关闭回滚等工作,最近新开发了一个新模块,但是上传服务器后,持久化操作时出现间歇性的无法打开连接异常,异常详细我把图贴出来了,各位大侠审视一下,问题很棘手,数据库配置应该没什么问题,因为其它模块都运转正常,看看具体异常吧,见图附件: 问题补充:asyty 写道
解决方案
还没搞定么?
解决方案二:
我看了下报错,貌似异常是先抛出一个异常,跳到catch里执行transaction.rollback(); 的时候报错的catch (RuntimeException re) { log.warn("Interview Exception:", re); transaction.rollback(); //在这句里报的错误,貌似是是rollback的时候session已经关闭了 throw re; } 去掉rollback和flush以及clear试试,貌似commit的时候会自动先执行flush的public void update(OaInterviewRecord transientInstance) {log.debug("saving OaInterviewRecord instance");Session session = null;Transaction transaction = null;try {session = this.getSession();transaction = session.beginTransaction();session.update(transientInstance);transaction.commit();session.close();log.debug("save successful");} catch (RuntimeException re) {log.warn("Interview Exception:", re);re.printStackTrace();}}
解决方案三:
如果不加这个text数据是正常的??我重新看了下exception 好像是在OaInterviewRecord.DAO update数据库的时候回滚了。。。。这个如果不是这个问题,那就可能是更新数据库的数据有问题,检查下这张表结构,java代码里entity字段和hibernate里配置的字段 可以的话贴一下这个DAO的update和表结构还有hibernate配置 我也猜不出来是啥情况。。。
解决方案四:
这个配置应该没啥问题,可以加上hibernate的自动检测连接试试 不知道管不管用<property name="connection.autoReconnect">true</property> 或者<property name="connection.autoReconnect">true</property> <property name="connection.autoReconnectForPools">true</property> <property name="connection.is-connection-validation-required">true</property>
解决方案五:
不过出现间歇性断开一般都是配置问题。。。。断开了之后连接池也没有配置自动检测连接是否有效,然后就exception了比如这个类似的情况http://www.iteye.com/problems/74238
解决方案六:
是不是数据库设置的timeout太小了,时间过了 数据库就关掉session了类似mysql出现的could not excute queryhttp://asyty.iteye.com/blog/1207494