【Java】com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed 问题处理
·
最近用户反馈说系统功能又又又又出问题了,我上线查看系统日志,发现日志里报了一堆的数据源已关闭的异常。在反复测试和调整无果后,我找到了一篇文章,终于解决了问题
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Tue Aug 26 09:34:17 CST 2025
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:309)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:400)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:595)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:382)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)
at com.zhuoyue._96333.service.GgZdqfhVoService$$EnhancerBySpringCGLIB$$af6226f1.deleteById(<generated>)
at com.zhuoyue.dateceneter.consumer.SespDataConsumer.lambda$null$3(SespDataConsumer.java:178)
at java.lang.Iterable.forEach(Iterable.java:75)
at com.zhuoyue.dateceneter.consumer.SespDataConsumer.lambda$init$5(SespDataConsumer.java:165)
at org.apache.rocketmq.client.impl.consumer.ConsumeMessageConcurrentlyService$ConsumeRequest.run(ConsumeMessageConcurrentlyService.java:411)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Tue Aug 26 09:34:17 CST 2025
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1055)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:953)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4544)
at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:661)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4540)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:931)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:923)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:100)
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:265)
... 18 more
一、引发原因
存在多个同时运行的java应用进程,这些进程相互影响,导致数据库连接时好时坏
二、解决方法
执行指令查看 Java 进程,如果存在多个则全部 kill ,然后重启应用
# 查看 java 进程
ps -ef | grep java
# 杀死进程
kill -9 进程号
三、参考文献
更多推荐




所有评论(0)