druid回收连接导致statement is closed

相关知识:druid强制回收机制

代码分析:为什么连接回收会抛出这个异常

首先查看DruidPooledConnection 这个类的close 方法
图片
syncClose 最终也会调用 recycle() 
图片
 所以我们主要看
图片
实现类 DruidDataSource 
图片

图片
可以看到,相关的statement都会被关闭而Druid 使用的DruidPooledPreparedStatement 的 colse  如下
图片
DruidPooledConnection 的实现类如下:
图片
stmt.closeInternal() 最终调用了这个函数,并设置了 closed 
图片
而 closed 就是抛出 SQLException: statement is closed 的最大元凶
图片

你可能感兴趣的:(druid)