关于connection holder is null的个人解决方案实践

由于公司需要标准化项目,规范jdk,tomcat等version,

版本规范:6.x --> 7.0.90
版本规范:jdk1.6.x -- >jdk1.8.0_181
版本规范:spring3.x -- >spring-4.3.7

项目中使用了hibernate3.x,和规范后的jdk1.8不兼容,导致需要升级hibernate的版本,目前升级版本至

<groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
<version>4.3.11.Final</version>

升级hibernate后导致了一系列的异常,其中connection holder is null这个问题为提交事务的时候抛出来的

从网上得知的解决方案:

https://blog.csdn.net/wo8553456/article/details/40396401
 

插入后跟进源代码发现配置已生效,然而hibernate提交事务的时候一样会报错(项目中使用的是声明式注解事务)

找了好久没搞定求助架构大佬后大佬指出,hibernate3中的配置connection.release_mode在hibernate4中会导致连接直接被关闭
源代码跟进见 https://blog.csdn.net/ayanami001/article/details/48181243

跟进源代码见下:

   进入下面这个 this.getLogicalConnection().releaseConnection()后.连接就会被释放掉(提交事务逻辑里面),导致最终提交事务事连接为null抛出 connection holder is null 异常!

   最终在hibernate的配置中去除了<prop key="hibernate.connection.release_mode">after_statement</prop>后,事务提交正常!

ps:其他hibernate异常或者tomcat改造异常见下面连接

本次改造升级的问题点

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值