我正在使用tomcat 7和tomcat jdbc连接池来清除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:连接关闭后不允许任何操作。驱动程序隐式关闭了连接。
我想这个问题应该是jdbc连接池可以解决的问题,但是有很多配置属性,我之前没有使用过这个池。任何人都有一套很好的属性来配置池以避免关闭连接?
亲切的问候,
阿尔伯特
答案 0 :(得分:0)
解决了它。事实证明,这毕竟不是一个汇集问题。我们正在使用squeryl并一起举起,这不是一个快乐的组合(刚才)。连接在返回池之前已关闭。 Ditching lift的DB连接管理有利于squeryl解决了它。