代码之家  ›  专栏  ›  技术社区  ›  Joba

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

  •  4
  • Joba  · 技术社区  · 6 年前

    我有一个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中切换到HikariCP作为默认连接池。x、 如何将此配置迁移到Hikari,以允许我为其发送自定义属性 v$session.program 去db?

    我尝试过:

    • 附加 ?ApplicationName=<name> 到JDBC url。
    • 中提到的解决方案 this 堆栈溢出问题
    • 背景 System.setProperty("oracle.jdbc.v$session.program", <name>)
    • 背景 spring.datasource.hikari.data-source-properties.v$session.program: <name> 在应用程序中。yml
    2 回复  |  直到 6 年前
        1
  •  4
  •   yeonguk kim    6 年前

    在亚马尔,美元符号被转义。

    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
    
        2
  •  1
  •   Karol Dowbecki    6 年前

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

    spring:
      datasource:
        hikari:
          data-source-properties:
            v$session.program: MyAppName
    
        3
  •  0
  •   twonky    4 年前

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

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