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