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