Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tomcat validates connection on every borrow

I am using Tomcat 7 (jdk 1.6) in Eclipse 4.3.2.

I configured my Connection Pool as below :

<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"
/>

I am using Spring 3.2.14, Hibernate 3.2.6-GA, CXF 2.7.

Every time I receive a SOAP request, I see in P6SPY logs that the validation query is run independently of validationInterval and its description https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html.

I was expecting the connections to be validated at most once every 30 seconds.

Is there anything wrong with my configuration, or is this a known bug ?

like image 334
yunandtidus Avatar asked Oct 16 '25 11:10

yunandtidus


1 Answers

The explanation is pretty simple, I did not read correctly the documentation, I need to set the factory to org.apache.tomcat.jdbc.pool.DataSourceFactory in order to use the "Tomcat High-concurrency connection pool".

After that all parameters work as expected :

<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"
/>

The connections are validated at most every validationInterval. An evictionThread runs every timeBetweenEvictionRunsMillis and validates idle connection (I choose to do this in order to spare time on connection borrow).

like image 56
yunandtidus Avatar answered Oct 19 '25 00:10

yunandtidus