Как заменить стандартный hikari cp на пул tomcat при весенней загрузке 2.0 - PullRequest
0 голосов
/ 04 мая 2018

Я перенес весеннее загрузочное приложение на 2.0 и обнаружил некоторые проблемы с пулом соединений hikari. Когда я получаю данные базы данных, это приводит к таймауту cp hikari т.е. соединение недоступно. Я не знаю, почему, когда в предыдущей версии это работало правильно.

Поэтому я попытался использовать пул tomcat с этим конфигом в application.yml, но он не работал (при правильном форматировании YAML).

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

Мой pom.xml имеет следующие зависимости, связанные с вещами БД:

spring-boot-jpa
spring-boot-jdbc
jdbc7

Как исключить хикари и использовать пул соединений Tomcat?

Ответы [ 3 ]

0 голосов
/ 09 июля 2018

Также:

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

работает с

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
</dependency>
0 голосов
/ 18 июля 2019

Начиная с выпуска 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')
0 голосов
/ 04 мая 2018

Я нашел решение. Это можно решить в 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
...