java.sql.SQLException: Already closed.

本文探讨了Java中出现的SQLException: Already closed错误,并提供了解决方案。通过配置连接池参数如testOnBorrow、validationQuery及testWhileIdle等,确保连接的有效性和减少不必要的检查,提高应用程序效率。
摘要由CSDN通过智能技术生成

java.sql.SQLException: Already closed.

 

<!--  配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒  -->
<property  name="timeBetweenEvictionRunsMillis"  value="${jdbc.timeBetweenEvictionRunsMillis}"  />
<!--  配置一个连接在池中最小生存的时间,单位是毫秒  -->
<property  name="minEvictableIdleTimeMillis"  value="${jdbc.minEvictableIdleTimeMillis}"  />
<property  name="validationQuery"  value="${jdbc.validationQuery}"  />
<property  name="testWhileIdle"  value="${jdbc.testWhileIdle}"  />
<property  name="testOnBorrow"  value="${jdbc.testOnBorrow}"  />
<property  name="testOnReturn"  value="${jdbc.testOnReturn}"  />
 
##毫秒秒检查一次连接池中空闲的连接 jdbc.timeBetweenEvictionRunsMillis=60000 ##连接保持空闲而不被驱逐的最长时间。 jdbc.minEvictableIdleTimeMillis=300000  jdbc.validationQuery=SELECT 'x'  jdbc.testWhileIdle=true  jdbc.testOnBorrow=false  jdbc.testOnReturn=false
 

解决办法:为数据库配置文件设置以上参数。

1:testOnBorrow表示从连接池中获取连接前是否运行。

2:validationQuery,true=运行[默认],false=不运行testOnBorrow在不设置的时候默认为false,设置为false就是默认不检测连接池是否连接可用,当连接池中的连接被数据库关闭的情况下,就会报这个错,连接被关闭。如果单纯的设为true,也不好,每次运行都要进行检查,影响效率。

3:testWhileIdle =false  指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.用这个参数就可以判断什么时候检测连接池是否可用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值