Tomcat connectionpool mysql配置可避免空闲连接超时

时间:2011-08-05 08:57:16

标签: mysql scala tomcat jdbc connection

我正在使用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连接池可以解决的问题,但是有很多配置属性,我之前没有使用过这个池。任何人都有一套很好的属性来配置池以避免关闭连接?

亲切的问候,

阿尔伯特

1 个答案:

答案 0 :(得分:0)

解决了它。事实证明,这毕竟不是一个汇集问题。我们正在使用squeryl并一起举起,这不是一个快乐的组合(刚才)。连接在返回池之前已关闭。 Ditching lift的DB连接管理有利于squeryl解决了它。