【问题标题】:How to replace default hikari cp to tomcat pool on spring boot 2.0如何在 Spring Boot 2.0 上将默认 hikari cp 替换为 tomcat 池
【发布时间】:2018-10-14 19:58:41
【问题描述】:

我已经将 Spring Boot 应用程序迁移到 2.0 并发现了 hikari 连接池的一些问题。当我获取数据库数据时,这会导致 hikari cp timeout 即。连接不可用。我不知道为什么在以前的版本中它可以正常工作。

因此,我尝试在 application.yml 中使用带有此配置的 tomcat 池,但它不起作用(以正确的 YAML 格式)。

spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

我的 pom.xml 有这些与数据库相关的依赖项:

spring-boot-jpa
spring-boot-jdbc
jdbc7

如何排除hikari并使用tomcat连接池?

【问题讨论】:

    标签: spring-boot tomcat connection default pool


    【解决方案1】:

    我已经找到了解决方案。 这可以通过如下修改在 pom.xml 中解决:

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

    然而,hikari 问题可能与默认的小连接池有关。所以这个问题也可以通过这个改变来解决,但我自己没有验证。只为别人注意。类似的东西:

    spring.datasource.hikari.connection-timeout=60000
    spring.datasource.hikari.maximum-pool-size=5
    

    【讨论】:

    • 光仍然处于活动状态
    • 关于池大小的增加。它仍然无法解决 Hikari 问题,我们的设置为 20 分钟和 100 Max,我们有时会收到错误,我们的生产系统崩溃了。
    【解决方案2】:

    自 Spring Boot 2.0 发布以来,spring-boot-starter-jdbc 和 spring-boot-starter-data-jpa 默认解析 HikariCP 依赖,spring.datasource.type 属性将 HikariDataSource 作为默认值。所以如果你有两个依赖在您的应用程序中,您应该将其从以下两者中排除。

    implementation('org.springframework.boot:spring-boot-starter-data-jpa') {
        exclude group: 'com.zaxxer', module: 'HikariCP'
    }
    implementation('org.springframework.boot:spring-boot-starter-jdbc') {
        exclude group: 'com.zaxxer', module: 'HikariCP'
    }
    

    之后,您可以配置您喜欢使用的其他池化技术,如下所示 . 在您的 application.yml 文件中:

    spring:
       datasource:
         type: org.apache.tomcat.jdbc.pool.DataSource
    

    依赖:

    implementation('org.apache.tomcat:tomcat-jdbc')
    

    【讨论】:

      【解决方案3】:

      还有:

      spring:
          datasource:
              type: org.apache.tomcat.jdbc.pool.DataSource
      

      适用于

      <dependency>
          <groupId>org.apache.tomcat</groupId>
          <artifactId>tomcat-jdbc</artifactId>
      </dependency>
      

      【讨论】:

      • 我在撒谎......只有排除有帮助:/
      猜你喜欢
      • 2016-05-28
      • 1970-01-01
      • 2020-04-09
      • 2019-08-15
      • 2015-03-18
      • 1970-01-01
      • 2018-10-05
      • 2019-06-07
      • 1970-01-01
      相关资源
      最近更新 更多