【问题标题】:Play 2.4 HikariCP connection pool configuration玩2.4 HikariCP连接池配置
【发布时间】:2015-09-13 23:42:59
【问题描述】:

我需要指定一些配置参数,用点分隔。连接池位于 Play 2.4 应用程序中。例如

db {
  default {
    driver = ${?DB_DRIVER}
    url = ${?DB_URL}
    username = ${?DB_USER}
    password = ${?DB_PASSWORD}
    hikaricp {
      dataSource {
        "javax.net.ssl.trustStore" = ${?DB_TRUST_STORE}
        "javax.net.ssl.trustStoreType" = "JKS"
        "javax.net.ssl.trustStorePassword" = ${?DB_TRUST_STORE_PASSWORD}
        "javax.net.ssl.keyStore" = ${?DB_KEY_STORE}
        "javax.net.ssl.keyStoreType" = "JKS"
        "javax.net.ssl.keyStorePassword" = ${?DB_KEY_STORE_PASSWORD}
      }
    }
}

“javax.net.ssl.”等所有参数都用于提供有关用于连接的 SSL 证书的详细信息。看起来 Play 框架正在尝试解析像“javax.net.ssl.”这样的配置键并用点分隔它们。所以它失败并出现异常

Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'javax'

我在这里发现了一个类似的话题:How do I get an unwrapped key in Typesafe Config? 根据第一反应

foo {
   bar {
       baz = 10
   }
}

一样
foo.bar.baz = 10

但写成"foo.bar.baz" = 10就不一样了

我希望使用引号会有所帮助,但它没有,而且似乎是池配置实现中的一个错误。请指教。

【问题讨论】:

    标签: java ssl playframework typesafe-config


    【解决方案1】:

    这些是典型的 JVM 属性,我不知道将它们放在 db/dataSource 配置中是否合适。即使是使用这些的驱动程序,这些也是系统范围的属性,并且适用于所有 SSL 组件。

    【讨论】:

      【解决方案2】:

      我回答完成@brettw 回答。

      您必须在运行 play exec 时将这些参数添加为 JVM 属性:

      /path/to/bin/<project-name>
        -Djavax.net.ssl.keyStore=/mysql-credentials/keystore \
        -Djavax.net.ssl.keyStorePassword=YYYYYY \
        -Djavax.net.ssl.trustStore=/mysql-credentials/truststore \
        -Djavax.net.ssl.trustStorePassword=XXXXXX \
        ...
      

      对于那些想知道如何创建这些商店的人:read this

      我认为trustStoreTypekeyStoreType 不是必需的,我总是使用JKS 类型。

      请记住,您还必须告诉 jdbc 使用 SSL:

      -Dslick.dbs.default.db.url=jdbc:mysql://DOMAIN_OR_IP/DATABASE?verifyServerCertificate=false&useSSL=true&requireSSL=true
      

      最后但同样重要的是,您可以使用以下命令调试握手:

      -Djavax.net.debug=all
      

      它为您提供了大量 (MB) 有关握手、重新协商和打印在标准输出上的密码的信息

      【讨论】:

        猜你喜欢
        • 2019-10-16
        • 2021-08-24
        • 2017-09-16
        • 2015-12-15
        • 2017-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-06
        相关资源
        最近更新 更多