簡體   English   中英

在 Spring 中使用 HikariCP 連接到 Oracle DB 時發送應用程序名稱

[英]Send application name when connecting to an Oracle DB using HikariCP in Spring

我有一個 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}

將應用程序更新到 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>設置spring.datasource.hikari.data-source-properties.v$session.program: <name>

在 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

使用 HikariCP 池屬性(Spring Boot 2 中的默認池)

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

如果你想引用spring.application.name你必須像這樣使用它:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM