天天看點

java.sql.SQLException: Already closed.

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  指明連接配接是否被空閑連接配接回收器(如果有)進行檢驗.如果檢測失敗,則連接配接将被從池中去除.用這個參數就可以判斷什麼時候檢測連接配接池是否可用。