关于使用C3P0之后,项目在服务器上开启事务错误的原因

来源:互联网 发布:c语言 http post json 编辑:程序博客网 时间:2024/06/03 15:27

笔者遇到过这个问题

使用的环境是Struts2+Hibernate+Spring4

错误代码摘取

HTTP Status 500 - Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin transaction failed:type Exception reportmessage Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin transaction failed:description The server encountered an internal error that prevented it from fulfilling this request.exceptionorg.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin transaction failed: org.springframework.orm.hibernate5.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:541)

     分析错误代码之后字面意思是事务开启失败,其实问题不在于事务开启失败,错误的原因在于C3P0自己对于连接池内部各个连接的处理。
     C3P0自己的处理过程是:它连接池内的连接本是都连接这数据库,用户访问网站,框架调用数据库连接池拿取连接,操作,但是Mysql每8小时会自动断开所有连接,而C3P0并不会去检查这些连接的有效性,当有用户再次访问的时候,C3P0仍然会把池内的数据库空连接(C3P0认为是正常连接,因为它自己默认是不会去校验的)给框架调用,就是造成上述错误。
     这个问题属于Mysql的8小时问题。解决方案,笔者就不贴了,可以自行百度。笔者把错误代码贴出来,是为了让更多人知道出现这个错误代码的原因。


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 商用冷柜生产厂家 四门冷柜生产厂家 冷柜工作台 冷柜批发 分体冷柜 冰柱 冰格 格的 格温拜克 安德鲁克尼格 格伊普斯尔 曼莫汉辛格 格兰格尼 格桑志玛 艾莉姿格 施普伦格 罗羿金格 dior3格 冰桶挑战 冰桶价格 挑战冰桶 水晶冰桶 保温冰桶 塑料冰桶 冰桶挑战赛 冰桶图片 陈光标冰桶 冰桶 镀锌冰桶 冰桶报价 红酒 冰桶 坐冰桶内打麻将 重庆人坐冰桶内打麻将 冰桶挑战是什么 冰桶挑战图片 冰桶挑战的意义何在 冰桶挑战的利弊 类似冰桶挑战的活动 小智冰桶挑战 明星冰桶挑战 冰桶挑战点名