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

前言

使用线程池插入数据报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();
            //让主线程休息10s
            Thread.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,
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值