使用线程池插入数据报Could not open JDBC Connection for transaction 异常
2017-09-01 18:16
1651 查看
前言
原因分析
解决方案
错误信息
因为这个是测试案例,在开发过程中主线程把任务丢给线程池之后自己就直接执行完毕导致关闭了数据源。在实际生产中主线程并不会关闭,所以不会出现这个问题。
原因分析
解决方案
错误信息
前言
使用线程池插入数据报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,"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.DataSourceDisableException at 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: null at 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 2017 at 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 2017 at 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; nested exc [用户名密码错误异常】
- Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNest
- org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for
- Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: socket creation error
- HTTP Status 500 - Could not open JDBC Connection for transaction
- 【错误】:Could not open JDBC Connection for transaction; nested exception is: Communications link fai...
- Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNest
- Could not open JDBC Connection for transaction
- org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for
- Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connectio
- Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connectio
- 【错误】:Could not open JDBC Connection for transaction; nested exception is: Communications link fai...
- HTTP Status 500 - Could not open JDBC Connection for transaction; nested exception is java.lang.NoCl
- 【错误】:Could not open JDBC Connection for transaction; nested exception is: Communications link failure;The last packet sent successfully to the server was 1 milliseconds ago
- jdbc:Could not open Hibernate Session for transaction
- Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionExcep
- 解决Could not open Hibernate Session for transaction问题
- org.hibernate.exception.GenericJDBCException: Could not open connection
- Could not open Hibernate Session for transaction;
- org.hibernate.exception.GenericJDBCException: Could not open connection