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



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

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}

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

我尝试过的:

  • ?ApplicationName=<name>追加到 JDBC 网址。
  • 此堆栈溢出问题中提到的解决方案
  • 设置System.setProperty("oracle.jdbc.v$session.program", <name>)
  • 在应用程序中设置spring.datasource.hikari.data-source-properties.v$session.program: <name>.yml

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

spring.datasource.hikari.data-source-properties.v$session.program: <name>
com.zaxxer.hikari.HikariConfig : dataSourceProperties............{password=<masked>, vsession.program=<name>}

试试这个。

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

如果你想引用spring.application.name你必须像这样使用它:

spring:
datasource:
hikari:
data-source-properties:
"[v$session.program]": ${spring.application.name}

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

spring:
datasource:
hikari:
data-source-properties:
v$session.program: MyAppName

最新更新