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

时间:2018-10-12 12:16:49

标签: java oracle spring-boot jdbc 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}

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

我尝试过的事情:

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

4 个答案:

答案 0 :(得分:2)

在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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您必须像这样使用它:

spring:
  datasource:
    hikari:
      data-source-properties:
        "[v$session.program]": MyApp

答案 3 :(得分:0)

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

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