Java 播放2.4 HikariCP连接池配置
我需要指定一些配置参数,用点分隔。连接池在Play 2.4应用程序中。比如说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
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