遇到一个比较耗时的sql,执行时间长,就会报错, 设置 <property name="removeAbandoned" value="true"/> 也不行,最后设置
<property name="timeBetweenEvictionRunsMillis" value="3600000" />
<property name="minEvictableIdleTimeMillis" value="3600000" />
问题解决。设置连接时长1个小时。在正常的业务中这样的设置肯定是不行的,会很消耗数据库性能。还好我这个sql一天只执行一次,用于报表统计。
<bean id="dataSourceBak"
class="org.apache.tomcat.jdbc.pool.DataSource"
destroy-method="close">
<!--驱动名称-->
<property name="driverClassName" value="${jdbc.driverClassName}"></property>
<!--数据库连接url-->
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/hnmcc?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"></property>
<!--用户名-->
<property name="username" value="${jdbc.username}"></property>
<!--密码-->
<property name="password" value="${jdbc.password}"></property>
<!--同一时间,池中打开的最大活动连接数,默认是8-->
<property name="maxActive" value="200"/>
<!--同一时间,池中打开的最小连接连接数,默认是0-->
<property name="minIdle" value="5"/>
<!--同一时间,池中打开的最小连接连接数,默认是0-->
<property name="maxIdle" value="200"/>
<!--如果池中没有可用的连接,最大等待的毫秒数,超出抛出一个异常返回-->
<property name="maxWait" value="30000"/>
<!--初始化默认创建连接个数,默认是0-->
<property name="initialSize" value="5"/>
<!--是否从池中移除废弃的连接,默认是false-->
<property name="removeAbandoned" value="true"/>
<property name="defaultAutoCommit" value="true"/>
<property name="timeBetweenEvictionRunsMillis" value="3600000" />
<property name="minEvictableIdleTimeMillis" value="3600000" />
</bean>