在 Spring 中使用 HikariCP 连接到 Oracle DB 时发送应用程序名称

Job*_*oba 5 java oracle jdbc spring-boot hikaricp

我有一个 Spring Boot 1.4.7 应用程序,目前正在更新到 2.0.5 版。该应用程序使用 JDBC 使用以下配置连接到 Oracle DB:

spring:
  jpa:
    database-platform: org.hibernate.dialect.Oracle12cDialect
  datasource:
    url: jdbc:oracle:thin:@<db_server>
    username: ${credentials.database.username}
    password: ${credentials.database.password}
    driver-class: oracle.jdbc.OracleDriver.class
    platform: oracle
    tomcat:
      connection-properties: v$session.program=${spring.application.name}
Run Code Online (Sandbox Code Playgroud)

将应用程序更新到 Spring Boot 2.0.5 后,发送到服务器的应用程序名称JDBC Thin Client不是${spring.application.name}. 这样做的原因似乎是在 Spring 2.x 中切换到 HikariCP 作为默认连接池。我将如何以允许我将自定义属性发送v$session.program到数据库的方式将此配置迁移到 Hikari ?

我尝试过的:

  • 附加?ApplicationName=<name>到 JDBC url。
  • Stackoverflow 问题中提到的解决方案
  • 环境 System.setProperty("oracle.jdbc.v$session.program", <name>)
  • spring.datasource.hikari.data-source-properties.v$session.program: <name>在 application.yml 中设置

小智 5

在 yaml 中,美元符号被转义。

spring.datasource.hikari.data-source-properties.v$session.program: <name>

com.zaxxer.hikari.HikariConfig : dataSourceProperties............{password=<masked>, vsession.program=<name>}
Run Code Online (Sandbox Code Playgroud)

尝试这个。

spring:
  datasource:
    hikari:
      data-source-properties: v$session.program=name
Run Code Online (Sandbox Code Playgroud)


Kar*_*cki 1

使用 HikariCP 池属性(Spring Boot 2 中的默认池)

spring:
  datasource:
    hikari:
      data-source-properties:
        v$session.program: MyAppName
Run Code Online (Sandbox Code Playgroud)

  • 这似乎没有任何效果。 (6认同)