我使用tomcat 7和tomcat jdbc连接池来清理mysql连接。Tomcat连接池mysql配置,以避免空闲连接超时
在夜间时段,我们没有任何活动,所以所有连接都闲置超过8小时,并被mysql丢弃。 (mysql的wait_timeout默认)。
我们用下面的池配置:
<Resource name="jdbc/dbName"
auth="Container"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
type="javax.sql.DataSource"
maxActive="50"
maxIdle="30"
maxWait="5000"
driverClassName="com.mysql.jdbc.Driver"
validationQuery="SELECT 1"
testOnBorrow="true"
testWhileIdle="true"
timeBetweenEvictionRunsMillis="10000"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"
username="xxx"
password="xxx"
url="jdbc:mysql://host:3306/xxx"/>
我期待据EvictionPolicy除去空闲连接方式,他们曾经得到由MySQL关闭之前。不知怎的,一天以后,我们得到以下异常:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:没有允许后连接closed.Connection隐式的由司机封闭作业。
我想这个问题应该是jdbc连接池可以修复的东西,但是有很多配置属性,我之前没有使用过这个池。任何人都有一套很好的属性来配置池不会关闭连接?
亲切的问候,
阿尔伯特
您确定您的代码正在从'pool'的'try'的'finally'块的每个**连接上调用'connection.close()'吗? – BalusC
我实际上使用Lift框架(scala)。没有打开/关闭连接池应该做什么(或不做)? – Albert