スプリングブートアプリケーションを2.0に移行しましたが、hikari接続プールに問題があることがわかりました。私がデータベースデータをフェッチしているとき、これは光cpタイムアウト、つまり接続できません。以前のバージョンでこれが正しく機能した理由がわかりません。
したがって、application.yml
でこの構成を使用してTomcatプールを使用しようとしましたが、機能しませんでした(正しいYAML形式で)。
spring.datasource.type=org.Apache.Tomcat.jdbc.pool.DataSource
私のpom.xmlには、DBの事柄に関連する次の依存関係があります。
spring-boot-jpa
spring-boot-jdbc
jdbc7
Hikariを除外してTomcat接続プールを使用する方法
私は解決策を見つけました。これは、次のように変更することで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>
しかし、ひかりの問題はおそらくデフォルトの小さいサイズの接続プールにありました。したがって、この問題はこの変更でも解決できますが、自分で確認することはできません。他の人のために注意してください。そんな感じ:
spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=5
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')
また:
spring:
datasource:
type: org.Apache.Tomcat.jdbc.pool.DataSource
で動作します
<dependency>
<groupId>org.Apache.Tomcat</groupId>
<artifactId>Tomcat-jdbc</artifactId>
</dependency>