我有一个用 Groovy DSL 编写的 Ratpack 应用程序。(嵌入在 Java 中,所以不是脚本。)
我想从命令行选项中提供的配置文件中加载服务器的 SSL 证书。(证书将直接嵌入到配置中,或者可能在配置中某处引用的 PEM 文件中。)
例如:
java -jar httpd.jar /etc/app/sslConfig.yml
sslConfig.yml:
---
ssl:
privateKey: file:///etc/app/privateKey.pem
certChain: file:///etc/app/certChain.pem
我似乎有一个先有鸡还是先有蛋的问题serverConfig
,SslContext
使用serverConfig
. 在我要加载 SslContext 时未创建服务器配置。
为了说明,我的 DSL 定义是这样的:
// SSL Config POJO definition
class SslConfig {
String privateKey
String certChain
SslContext build() { /* ... */ }
}
// ... other declarations here...
Path configPath = Paths.get(args[1]) // get this path from the CLI options
ratpack {
serverConfig {
yaml "/defaultConfig.yaml" // Defaults defined in this resource
yaml configPath // The user-supplied config file
env()
sysProps('genset-server')
require("/ssl", SslConfig) // Map the config to a POJO
ssl sslConfig // HOW DO I GET AN INSTANCE OF that SslConfig POJO HERE?
baseDir BaseDir.find()
}
handlers {
get { // ...
}
}
}
可能有一个解决方案(在稍后的块中加载 SSL 上下文?)
或者可能只是一个更好的方式来处理整个事情..?