Caused by: com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed


報錯場景:spring boot+mybatis,線程池執行批量任務。springboot正常啟動后,定時任務中數據庫查詢報錯。報錯信息如下:

 1 Caused by: org.apache.ibatis.exceptions.PersistenceException: 
 2 ### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; 
 3 nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Wed Jun 30 17:31:57 GMT+08:00 2021
 4 ### The error may exist in URL [jar:file:/home/xxx/xxx/xxx-1.0.jar!/BOOT-INF/lib/common-1.0.jar!/mapper/basedata_mapper/xxxMapper.xml]
 5 ### The error may involve com.xxx.common.basedata.dao.xxxTaskDao.getListByCode
 6 ### The error occurred while executing a query
 7 ### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Wed Jun 30 17:31:57 GMT+08:00 2021
 8     at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
 9     at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)
10     at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
11     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
12     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
13     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
14     at java.lang.reflect.Method.invoke(Method.java:498)
15     at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
16     ... 15 common frames omitted
報錯信息

 

解決:

多線程批量處理的時候只需要在service方法上加上@transactional(rollbackFor = Exception.class)就行了,mybatis就不會每次執行完sql后closing sql session了
Sign up for free

 

參考:

https://github.com/alibaba/druid/issues/1625


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM