Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.DataSourceClosedException

/ Markbug / 没有评论 / 2663浏览

昨天在项目上线时,遇到了下面的错误:

 Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed

项目用的连接池为阿里的druid,版本为1.0.11。看错误信息,原因是因为连接已经关闭了。为什么会关闭呢,因为我们公司服务器用的是微软云服务,它有一个数据库连接最大时间限制。为240s。也就是说如果一个连接240s没有执行完,那么微软云会自动断开此连接,如果程序还在用当前连接时,就会报上述的错误。还有一个原因也会出现此错误就是druid是可以设置超时时间的,如果超过它的设定时间也会自动断开此连接。最终的解决方案是将druid升级到最新的版本,至少1.0.18以上,这样当数据库连接断开时,druid会自动重新获取新的连接,而不需要添加任何额外的配置。