Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 播放2.4 HikariCP连接池配置_Java_Ssl_Playframework_Typesafe Config - Fatal编程技术网

Java 播放2.4 HikariCP连接池配置

Java 播放2.4 HikariCP连接池配置,java,ssl,playframework,typesafe-config,Java,Ssl,Playframework,Typesafe Config,我需要指定一些配置参数,用点分隔。连接池在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

我需要指定一些配置参数,用点分隔。连接池在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 framework正在尝试解析“javax.net.ssl”之类的配置键,并用点分隔它们。所以它失败了,只有一个例外

Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'javax'
我在这里发现了一个类似的话题: 根据第一次答复,

foo {
   bar {
       baz = 10
   }
}

foo.bar.baz = 10
但如果将其写成
“foo.bar.baz”=10则会有所不同


我希望使用引号会有所帮助,但事实并非如此,而且似乎是池配置实现中的一个bug。请告诉我

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

I answer to complete@brettw answer

运行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 \
  ...
最后但并非最不重要的一点是,您可以使用以下工具调试握手:

-Djavax.net.debug=all
它提供了大量(MB)关于握手、重新谈判和打印在标准输出上的密码的信息

-Djavax.net.debug=all