Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tomcat connection pooling with prepared statement cache

Having upgraded from DBCP connection pooling to Tomcat's own implementation (based on the excellent comparison here); I'm a little confused as to why they've dropped these 2 properties, while keeping everything else:

poolPreparedStatements="true"
maxOpenPreparedStatements="10000"

Does this mean that prepared statement pooling is not supported in this implementation? And does each connection maintain its own pool of prepared statements by default?

I've spent a considerable time researching this and have found no clear answer!

Thanks for your time.

like image 981
StuPointerException Avatar asked Jul 07 '26 22:07

StuPointerException


1 Answers

Tomcat's (fairly) new jdbc-pool does have a statement cache, too. You can enable and configure it using a JDBC interceptor, which is set as a JDBC property during pool creation.
Please have a look at the documentation for more information and which configuration possibilities exist.

It's basically done this way:

      PoolProperties p = new PoolProperties();
      p.setUrl("jdbc:your-jdbc-url");
      p.setDriverClassName("your.jdbc.driver.class");
      p.setUsername("user");
      p.setPassword("password");
      p.setJdbcInterceptors(
        "org.apache.tomcat.jdbc.pool.interceptor.StatementCache");
      DataSource datasource = new DataSource();
      datasource.setPoolProperties(p);
like image 161
MRalwasser Avatar answered Jul 10 '26 12:07

MRalwasser