Java Tomcat在每次借用时验证连接
我正在Eclipse4.3.2中使用Tomcat7(JDK1.6) 我将我的连接池配置如下:Java Tomcat在每次借用时验证连接,java,tomcat,jdbc,connection-pooling,Java,Tomcat,Jdbc,Connection Pooling,我正在Eclipse4.3.2中使用Tomcat7(JDK1.6) 我将我的连接池配置如下: <Resource name="jdbc/myDS" auth="Container" type="javax.sql.DataSource" driverClassName="com.p6spy.engine.spy.P6SpyDriver" url="jdbc:p6spy:oracle:thin:@server:1521:XXX" username="XXX" passwo
<Resource name="jdbc/myDS" auth="Container" type="javax.sql.DataSource"
driverClassName="com.p6spy.engine.spy.P6SpyDriver"
url="jdbc:p6spy:oracle:thin:@server:1521:XXX"
username="XXX" password="XXX" maxActive="2" maxIdle="2" maxWait="-1"
validationInterval="30000" validationQuery="SELECT 1 FROM DUAL"
/>
我使用的是Spring3.2.14、Hibernate3.2.6-GA、CXF2.7
每次收到SOAP请求时,我都会在P6SPY日志中看到,验证查询是独立于validationInterval及其描述运行的
我希望连接最多每30秒验证一次
我的配置有什么问题吗,或者这是一个已知的错误吗?嗯,这可能是因为您将
testOnBorrow
参数设置为true。这是从您提供的文档链接中获取的
在从池中借用对象之前是否验证对象的指示
因此,我认为您可能希望将其设置为
false
解释非常简单,我没有正确阅读文档,我需要将工厂设置为org.apache.tomcat.jdbc.pool.DataSourceFactory
,以便使用的“tomcat高并发连接池”
之后,所有参数均按预期工作:
<Resource
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
name="jdbc/myDS" auth="Container" type="javax.sql.DataSource"
driverClassName="com.p6spy.engine.spy.P6SpyDriver"
url="jdbc:p6spy:oracle:thin:@server:1521:XXX"
username="XXX" password="XXX" maxActive="2" maxIdle="2" maxWait="-1"
testOnBorrow="true"
testWhileIdle="true"
timeBetweenEvictionRunsMillis="10000"
validationInterval="30000"
validationQuery="SELECT 1 FROM DUAL"
/>
最多每
validationInterval
对连接进行一次验证。ExcitionThread在NevictionRunsMillis之间每隔一段时间运行一次,并验证空闲连接(我选择这样做是为了在连接借用时腾出时间)。好吧,我尝试了使用和不使用testOnBorrow
参数的两种解决方案。但我还是希望validationInterval有优先权。我编辑我的问题是为了删除testOnBorrow
。