小编典典
该答案适用于Apache tomcat-jdbc数据源提供程序。
首先,您需要了解PoolProperties
setRemoveAbandonedTimeout
setRemoveAbandoned
当查询花费的时间超过setRemoveAbandonedTimeout(int)中指定的时间时,执行此查询的连接将标记为Abandon,并调用java.sql.Connection.close()方法,它将在释放连接之前一直等待查询完成。
。
我们可以实现自己的处理程序来处理废弃的连接。以下是变化
首先我们需要添加一个接口
package org.apache.tomcat.jdbc.pool;
public interface AbandonedConnectionHandler {
public void handleQuery(Long connectionId);
}
tomcat-jdbc文件更改:
PoolConfiguration.java (接口)
添加getter和setter方法。
public void setAbandonedConnectionHandler(AbandonedConnectionHandler abandonedConnectionHandler);
public AbandonedConnectionHandler getAbandonedConnectionHandler();
将这些方法覆盖到所有实现类
DataSourceProxy.java
PoolProperties.java
org.apache.tomcat.jdbc.pool.jmx.ConnectionPool.java