druid 没有有效的配置自动回收连接removeAbandonedremoveAbandonedTimeout 。导致连接在在使用之前就被回收了。

根据异常显示: statement已经关闭了,却还想使用

关闭原因

  1. 手动关闭,调用了close() 方法
  2. 创建了PreparedStatement 没有及时用。然后数据库连接收回,自动关闭了 statement

解决方法

  • 手动关闭
    找找代码里面有没有关闭的代码。导致关闭之后还在使用
  • 数据库连接收回
    检查是否配置 removeAbandonedtrueremoveAbandonedTimeout 是否小于了业务最大时长

参考连接:druid连接池配置参数
druid回收连接导致statement is closed

附异常信息:

java.sql.SQLException: statement is closed
    at com.alibaba.druid.pool.DruidPooledStatement.checkOpen(DruidPooledStatement.java:181)
    at com.alibaba.druid.pool.DruidPooledPreparedStatement.setString(DruidPooledPreparedStatement.java:366)
    at zm.PreparedStatement.setString(PreparedStatement.java:24)
    at zm.WinswJava.SwProcSalary.timer_proccess(SwProcSalary.java:121)
    at zm.base_daemon.proc_statis_salary.timer_run(proc_statis_salary.java:35)
    at zm.base_daemon.proc_statis_salary$1.run(proc_statis_salary.java:25)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)

天纵
43 声望2 粉丝

全栈工程师


引用和评论

0 条评论