从DBCP连接池升级到Tomcat自己的实现(基于此处的出色比较);对于他们为什么放弃了这两个属性,同时保留其他所有内容,我有些困惑:
poolPreparedStatements="true" maxOpenPreparedStatements="10000"
这是否意味着该实现不支持准备好的语句池?缺省情况下,每个连接是否都维护自己的准备好的语句池?
我花了很多时间对此进行研究,但没有找到明确的答案!
谢谢你的时间。
Tomcat的(相当)新的jdbc-pool也具有语句缓存。您可以使用a启用和配置它JDBC interceptor,在 池创建 期间将其设置为 JDBC属性 。 请查看文档以获取更多信息以及存在哪些配置可能性。
JDBC interceptor
基本上是这样完成的:
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);