• 前言
  • 原因分析
  • 解决方案
  • 错误信息

前言

使用线程池插入数据报Could not open JDBC Connection for transaction 异常

Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Fri Sep 01 18:02:49 CST 2017 

原因分析

这个异常是因为项目数据源已经被关闭了而线程无法插入数据到数据库。
因为这个是测试案例,在开发过程中主线程把任务丢给线程池之后自己就直接执行完毕导致关闭了数据源。在实际生产中主线程并不会关闭,所以不会出现这个问题。

解决方案

在主线程把任务丢进线程池后睡一会,待线程池处理完数据再关闭进程、关闭数据源。

            AcceptorSaveOrderThread thread= new AcceptorSaveOrderThread(orderService,receiveConsumptionData)//待子线程执行完再执行主线程代码thread.join();OrderConstant.FIXED_THREAD_POOL.execute();//让主线程休息10sThread.sleep(10000);

错误信息

2017-09-01 18:02:48,986 WARN 192.168.99.1 [main] c.b.m.mapper.AutoSqlInjector [AutoSqlInjector.java :137] class com.bosssoft.itfinance.payqrcode.order.biz.entity.Settle ,Not found @TableId annotation, Cannot use Mybatis-Plus 'xxById' Method.
2017-09-01 18:02:49,212 INFO 192.168.99.1 [main] c.t.o.d.IOrderDubboServiceTest [IOrderDubboServiceTest.java :25] =======测试上传二维码数据服务接口开始=======
2017-09-01 18:02:49,348 INFO 192.168.99.1 [main] c.t.o.d.IOrderDubboServiceTest [IOrderDubboServiceTest.java :33] {"batchNo":"20170901测试批次号","consumeTotal":2,"data":[{"amt":231646432,"deptId":"16546123653","inBoundTime":"20170901141655","inIndustryData":{"inBoundRouteNo":"f12354646","inBoundStationBoard":"f123456789","inBoundTerminalNo":"f1264545322","lat":1233.232,"lng":1233.232},"inQrCode":"1231231","inboundQrCode":"asd23123131","orderNo":"first123456","outBoundQrCode":"513523123","outBoundTime":"20170901152233","outIndustryData":{"lat":1266.232,"lng":1266.232,"outBoundRouteNo":"s12354646","outBoundStationBoard":"s1235645","outBoundTerminalNo":"s123456789"},"outQrCode":"1263462","payOrgId":"zhifubao12346","platformUserId":"ZhiXy1321654","settleAccount":"1321645489464","useDesc":"用码摘要"},{"amt":231646432,"deptId":"16546123653","inBoundTime":"20170901141655","inIndustryData":{"inBoundRouteNo":"f12354646","inBoundStationBoard":"f123456789","inBoundTerminalNo":"f1264545322","lat":1233.232,"lng":1233.232},"inQrCode":"1231231","inboundQrCode":"asd23123131","orderNo":"second123456","outBoundQrCode":"513523123","outBoundTime":"20170901152233","outIndustryData":{"lat":1266.232,"lng":1266.232,"outBoundRouteNo":"s12354646","outBoundStationBoard":"s1235645","outBoundTerminalNo":"s123456789"},"outQrCode":"1263462","payOrgId":"zhifubao12346","platformUserId":"ZhiXy1321654","settleAccount":"1321645489464","useDesc":"用码摘要"},{"amt":231646432,"deptId":"16546123653","inBoundTime":"20170901141655","inIndustryData":{"inBoundRouteNo":"f12354646","inBoundStationBoard":"f123456789","inBoundTerminalNo":"f1264545322","lat":1233.232,"lng":1233.232},"inQrCode":"1231231","inboundQrCode":"asd23123131","orderNo":"third123456","outBoundQrCode":"513523123","outBoundTime":"20170901152233","outIndustryData":{"lat":1266.232,"lng":1266.232,"outBoundRouteNo":"s12354646","outBoundStationBoard":"s1235645","outBoundTerminalNo":"s123456789"},"outQrCode":"1263462","payOrgId":"zhifubao12346","platformUserId":"ZhiXy1321654","settleAccount":"1321645489464","useDesc":"用码摘要"}],"orderDate":"20170901"}
2017-09-01 18:02:49,393 INFO 192.168.99.1 [main] c.t.o.d.IOrderDubboServiceTest [IOrderDubboServiceTest.java :43] =======测试上传二维码数据服务接口结束=======
2017-09-01 18:02:49,410 INFO 192.168.99.1 [Thread-1] o.s.c.s.GenericApplicationContext [AbstractApplicationContext.java :862] Closing org.springframework.context.support.GenericApplicationContext@10feca44: startup date [Fri Sep 01 18:02:47 CST 2017]; root of context hierarchy
2017-09-01 18:02:49,444 INFO 192.168.99.1 [DubboShutdownHook] c.a.dubbo.config.AbstractConfig [Log4jLogger.java :58]  [DUBBO] Run shutdown hook now., dubbo version: 2.5.3, current host: 127.0.0.1
2017-09-01 18:02:49,448 INFO 192.168.99.1 [DubboShutdownHook] c.a.d.r.s.AbstractRegistryFactory [Log4jLogger.java :58]  [DUBBO] Close all registries [], dubbo version: 2.5.3, current host: 127.0.0.1
2017-09-01 18:02:49,451 INFO 192.168.99.1 [Thread-1] c.alibaba.druid.pool.DruidDataSource [DruidDataSource.java :1436] {dataSource-1} closed
2017-09-01 18:02:49,473 ERROR 192.168.99.1 [pool-1-thread-2] c.b.i.p.o.b.t.AcceptorSaveOrderThread [AcceptorSaveOrderThread.java :35] 数据库新增失败
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.DataSourceDisableExceptionat org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:242) ~[spring-jdbc-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) ~[spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:438) ~[spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:261) ~[spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) ~[spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653) ~[spring-aop-4.1.1.RELEASE.jar:4.1.1.RELEASE]at com.bosssoft.itfinance.payqrcode.order.biz.service.impl.OrderServiceImpl$$EnhancerBySpringCGLIB$$53f2c93f.saveOrderAndQrcode(<generated>) ~[spring-core-4.1.1.RELEASE.jar:na]at com.bosssoft.itfinance.payqrcode.order.biz.thread.AcceptorSaveOrderThread.run(AcceptorSaveOrderThread.java:33) ~[classes/:na]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121]at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
Caused by: com.alibaba.druid.pool.DataSourceDisableException: nullat com.alibaba.druid.pool.DruidDataSource.pollLast(DruidDataSource.java:1559) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1139) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1012) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4544) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:662) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4540) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:990) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:982) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:102) ~[druid-1.0.18.jar:1.0.18]at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:204) ~[spring-jdbc-4.1.1.RELEASE.jar:4.1.1.RELEASE]... 11 common frames omitted
2017-09-01 18:02:49,480 ERROR 192.168.99.1 [pool-1-thread-2] c.b.i.p.o.b.t.AcceptorSaveOrderThread [AcceptorSaveOrderThread.java :35] 数据库新增失败
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Fri Sep 01 18:02:49 CST 2017at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:242) ~[spring-jdbc-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) ~[spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:438) ~[spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:261) ~[spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) ~[spring-tx-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.1.1.RELEASE.jar:4.1.1.RELEASE]at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653) ~[spring-aop-4.1.1.RELEASE.jar:4.1.1.RELEASE]at com.bosssoft.itfinance.payqrcode.order.biz.service.impl.OrderServiceImpl$$EnhancerBySpringCGLIB$$53f2c93f.saveOrderAndQrcode(<generated>) ~[spring-core-4.1.1.RELEASE.jar:na]at com.bosssoft.itfinance.payqrcode.order.biz.thread.AcceptorSaveOrderThread.run(AcceptorSaveOrderThread.java:33) ~[classes/:na]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121]at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
Caused by: com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Fri Sep 01 18:02:49 CST 2017at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1108) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1012) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4544) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:662) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4540) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:990) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:982) ~[druid-1.0.18.jar:1.0.18]at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:102) ~[druid-1.0.18.jar:1.0.18]at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:204) ~[spring-jdbc-4.1.1.RELEASE.jar:4.1.1.RELEASE]... 11 common frames omitted

使用线程池插入数据报Could not open JDBC Connection for transaction 异常相关推荐

  1. 为什么阿里巴巴要禁用 Executors 创建线程池?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 转自:掘金,作者:何甜甜在吗 juejin.im/post/5dc ...

  2. 为什么阿里巴巴要禁用Executors创建线程池?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:何甜甜在吗 juejin.im/post/5dc41c165 ...

  3. 阿里内部禁用Executors创建线程池,为什么?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 何甜甜在吗 来源 | http://rrd.m ...

  4. Java-Java中的线程池原理分析及使用

    文章目录 概述 线程池的优点 线程池的实现原理 线程池的使用 创建线程池 向线程池中提交任务 关闭线程池 合理的配置线程池 线程池的监控 概述 我们在上篇博文 Java-多线程框架Executor解读 ...

  5. 阿里巴巴为什么要禁用 Executors 创建线程池?

    作者:何甜甜在吗 www.juejin.im/post/5dc41c165188257bad4d9e69 看阿里巴巴开发手册并发编程这块有一条:线程池不允许使用 Executors 去创建,而是通过T ...

  6. 阿里为什么禁用Executors创建线程池?

    作者 | 何甜甜在吗 来源 | http://rrd.me/eUh6V 看阿里巴巴开发手册并发编程这块有一条:线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方 ...

  7. 【JUC】第五章 JUC 阻塞队列、线程池

    第五章 JUC 阻塞队列.线程池 文章目录 第五章 JUC 阻塞队列.线程池 一.阻塞队列 1.简介 2.BlockingQueue 的方法 3.常见的 BlockingQueue 二.线程池 1.简 ...

  8. Java线程池ThreadPoolExecutor源码分析

    继承关系 Executor接口 public interface Executor {void execute(Runnable command); } ExecutorService接口 publi ...

  9. 阿里面试官鬼得很,问我为什么他们阿里要禁用Executors创建线程池?

    作者:何甜甜在吗 来源:http://rrd.me/eUh6V 看阿里巴巴开发手册并发编程这块有一条:线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,通过 ...

最新文章

  1. 多模态理论张德禄_观点 | 多模态研究:认知语言学的新方法
  2. 三角形css_纯 CSS 实现绘制各种三角形(各种角度)
  3. MySQL自定义变量的使用
  4. redis3.0.2安装
  5. 贴吧备份到本地浏览html,获取贴吧对应页html及写入文件
  6. infacmd 把工作流添加到应用程序_【案例】Animate 发布Win应用程序
  7. linux实验2 vi编译器的使用
  8. 带蒙版的安卓剪辑软件_手机上有哪些好用的视频剪辑 App?
  9. 记录一下matlab画雷达图
  10. 第三方调试助手的与S7-1200 PLC的通信
  11. 我们上语文英语音乐计算机和美术英语,“制作课程表”教学设计.ppt
  12. sizeof和strlen使用详解
  13. 【React】React全家桶(八)React Router 6
  14. 斐讯天天链N1:分布式数据存储模式能否引领下一代数据中心变革
  15. 手机端H5页面时间插件
  16. 新时代动画电影的互联网宣传
  17. CSP 201809-2 买菜
  18. X86 android r7 z3735,安卓工业平板电脑android系统下各大主流CPU性能大对比分析
  19. Apache APISIX 扩展指南
  20. 【OLED】OLED屏幕的基础知识

热门文章

  1. 巧用opensiteexplorer外链查询工具
  2. Photoshop7.0 简体中文迷你版
  3. 童年游戏机项目,每天被动收入200+
  4. 大学计算机专业核显和集显,核显与集显有啥区别?哪个更好?
  5. 没有升级鸿蒙系统怎么办,华为一些手机,可升级为鸿蒙系统,来看看有没有你的机型!...
  6. CBR ABR VBR
  7. 企业业务流程管理系统
  8. 转载:性能测试解惑之并发压力
  9. IC先生网:磁性开关的工作原理及其应用详解
  10. 痞子衡嵌入式:利用i.MXRT1xxx系列ROM提供的FlexSPI driver API可轻松IAP