在 Spring Boot 上配置 Tomcat 连接池

x33g5p2x  于2022-10-05 转载在 Spring  
字(7.9k)|赞(0)|评价(0)|浏览(416)

Spring-Boot 支持 HikariCP(默认)、tomcat-jdbc 和 Commons DBCP 作为数据库的连接池。 但是,每个池都使用一组不同的属性。 在本教程中,我们将学习如何配置 Tomcat 连接池。

配置Tomcat JDBC连接池

首先,要配置 Tomcat 连接池,您需要在 application.properties 文件中的“spring.datasource.tomcat”命名空间中添加属性。 这是一个例子:

spring.datasource.tomcat.initial-size=15 
spring.datasource.tomcat.max-wait=20000 
spring.datasource.tomcat.max-active=50 
spring.datasource.tomcat.max-idle=15 
spring.datasource.tomcat.min-idle=8 
spring.datasource.tomcat.default-auto-commit=true

接下来,在您的 pom.xml 中,您需要禁用默认连接池 (HikariCP) 并引入 tomcat-jdbc 依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
    <version>10.0.16</version>
</dependency>

最后,根据您的数据库,添加连接到数据库的驱动程序。 如果您要使用 H2 数据库:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.1.210</version>
    <scope>runtime</scope>
</dependency>

Tomcat 池属性

如果要查看可通过反射调用的可用属性列表,请查看下表:

spring.datasource.tomcat.default-autoCommit(boolean) The default auto-commit state of connections created by this pool. If not set,defaultis JDBC driver default (If not set then the setAutoCommit method will not be called.)
spring.datasource.tomcat.default-readOnly(boolean) The default read-only state of connections created by this pool. If not set thenthe setReadOnly methodwill not be called. (Some drivers don’t supportread onlymode, ex: Informix)
spring.datasource.tomcat.default-transaction-isolation(String) The default TransactionIsolation state of connections created by this pool. One of the following: (seejavadoc)<br><br>* NONE<br>* READ_COMMITTED<br>* READ_UNCOMMITTED<br>* REPEATABLE_READ<br>* SERIALIZABLE<br><br>If not set, the method will not be called and it defaults to the JDBC driver.<br>
spring.datasource.tomcat.default-catalog(String) The default catalog of connections created by this pool.
spring.datasource.tomcat.driver-class-name(String) The fully qualified Java class name of the JDBC driver to be used. The driver has to be accessible from the same classloader as tomcat-jdbc.jar
spring.datasource.tomcat.username(String) The connection username to be passed to our JDBC driver to establish a connection. Note thatmethod DataSource.getConnection(username,password) bydefault will not use credentials passed into the method, but will use the ones configured here.See alternateUsernameAllowed propertyfor more details.
spring.datasource.tomcat.password(String) The connection password to be passed to our JDBC driver to establish a connection. Note thatmethod DataSource.getConnection(username,password) bydefault will not use credentials passed into the method, but will use the ones configured here.See alternateUsernameAllowed propertyfor more details.
spring.datasource.tomcat.max-active(int) The maximum number of active connections that can be allocated from this pool at the same time. The default value is 100
spring.datasource.tomcat.max-idle(int) The maximum number of connections that should be kept in the pool at all times.Defaultvalueis maxActive:100 Idle connections are checked periodically (if enabled) and connections that been idle for longerthan minEvictableIdleTimeMillis willbe released. (also see testWhileIdle)
spring.datasource.tomcat.min-idle(int) The minimum number of established connections that should be kept in the pool at all times. The connection pool can shrink below this number if validation queries fail.Defaultvalue is derived from initialSize:10 (also see testWhileIdle)
spring.datasource.tomcat.initial-size(int)The initial number of connections that are created when the pool is started. Default value is 10
spring.datasource.tomcat.max-wait(int) The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception.Defaultvalue is 30000 (30 seconds)
spring.datasource.tomcat.test-on-borrow(boolean) The indication of whether objects will be validated before being borrowed from the pool. If the object fails to validate, it will be dropped from the pool, and we will attempt to borrow another. In order to have a more efficient validation,see validationInterval.Default value is false
spring.datasource.tomcat.test-on-connect(boolean) The indication of whether objects will be validated when a connection is first created. If an object fails to validate, it will bethrow SQLException.Default value is false
spring.datasource.tomcat.test-on-return(boolean) The indication of whether objects will be validated before being returned to the pool. The default valueis false.
spring.datasource.tomcat.test-while-idle(boolean) The indication of whether objects will be validated by the idle object evictor (if any). If an object fails to validate, it will be dropped from the pool. The default value is false and this property has to be set in order for the pool cleaner/test thread is to run (also see timeBetweenEvictionRunsMillis)
spring.datasource.tomcat.validation-query(String) The SQL query that will be used to validate connections from this pool before returning them to the caller. If specified, this query does not have to return any data, it just can’t throwa SQLException.The default valueis null.If not specified, connections will be validation by the isValid() method. Example values are SELECT 1(mysql), select 1 from dual(oracle), SELECT 1(MSSqlServer)
spring.datasource.tomcat.validation-query-timeout(int) The timeout in seconds before a connection validation queries fail. This works bycalling java.sql.Statement.setQueryTimeout(seconds) onthe statement that executesthe validationQuery.The pool itself doesn’t timeout the query, it is still up to the JDBC driver to enforce query timeouts. A value less than or equal to zero will disable this feature. The default valueis -1.
spring.datasource.tomcat.validator-class-name(String) The name of a class which implementsthe org.apache.tomcat.jdbc.pool.Validator interfaceand provides a no-arg constructor (may be implicit). If specified, the class will be used to create a Validator instance which is then used instead of any validation query to validate connections. The default valueis null.An example valueis com.mycompany.project.SimpleValidator.
spring.datasource.tomcat.time-between-eviction-runs-millis(int) The number of milliseconds to sleep between runs of the idle connection validation/cleaner thread. This value should not be set under 1 second. It dictates how often we check for idle, abandoned connections, and how often we validate idle connections. The default value is 5000 (5 seconds).
spring.datasource.tomcat.num-tests-per-eviction-run(int) Property not used in tomcat-jdbc-pool.
spring.datasource.tomcat.min-evictable-idle-time-millis(int) The minimum amount of time an object may sit idle in the pool before it is eligible for eviction. The default value is 60000 (60 seconds).
spring.datasource.tomcat.access-to-underlying-connection-allowed(boolean) Property not used. Access can be achieved bycalling unwrap onthe pooled connection. see javax.sql.DataSourceinterface, or call getConnection through reflection or cast the object as javax.sql.PooledConnection
spring.datasource.tomcat.remove-abandoned(boolean) Flag to remove abandoned connections if they exceedthe removeAbandonedTimeout.If set to true a connection is considered abandoned and eligible for removal if it has been in use longer than the removeAbandonedTimeout Setting thisto true canrecoverdbconnections from applications that fail to close a connection. See also logAbandoned The default valueis false.
spring.datasource.tomcat.remove-abandoned-timeout(int) Timeout in seconds before an abandoned(in use) connection can be removed. The default value is 60 (60 seconds). The value should be set to the longest running query your applications might have.
spring.datasource.tomcat.log-abandoned(boolean) Flag to log stack traces for application code which abandoned a Connection. Logging of abandoned Connections adds overhead for every Connection borrow because a stack trace has to be generated. The default valueis false.
spring.datasource.tomcat.connection-properties(String) The connection properties that will be sent to our JDBC driver when establishing new connections.Formatof the string must be [propertyName=property;]* NOTE – The “user” and “password” properties will be passed explicitly, so they do not need to be included here. The default valueis null.

相关文章

微信公众号

最新文章

更多