我正在Scala中编写P2P应用程序,该应用程序适用于带有Akka 2.2.3的Play 2.2.1。当我展开我的 Play 项目时,my project/conf/reference.conf
将包含在 dist zip 中。这没关系。
接下来,我提取了 ZIP 并覆盖了conf/reference.conf
,以测试用户环境的本地化。但是,我的应用程序无法使用 reference.conf 的配置;它仍然使用默认设置。(使用默认设置的 Akka 。
例如conf/reference.conf:
p2pakka.akka.remote.netty.tcp.hostname="foobar.local"
p2pakka.akka.remote.netty.tcp.port=44444
实际行为:
p2pakka.akka.remote.netty.tcp.hostname="127.0.0.1"
p2pakka.akka.remote.netty.tcp.port=22223
在我的代码中:
val config = ConfigFactory.load()
val customConf = config.getConfig("p2pakka").withFallback({
println("fallbacking");
config
})
val system = ActorSystem("foobar", ConfigFactory.load(customConf))
// still using default settings.
至于使用play run
,conf/reference.conf
完全按照我写的一样工作。
我的代码有问题吗?压缩conf/reference.conf
无效吗?
我想知道如何在开发人员dist
后按用户conf/reference.conf
应用更改。我用谷歌搜索了这个问题,但我找不到任何答案。
我的母语不是英语,所以请原谅我糟糕的英语水平。
你的代码看起来不错,Play 在它生成的 jar 中包含配置文件的副本。
如果您使用
-Dconfig.file=/path/to/prod.conf &
作为命令行参数(env的更新路径)启动时应该接受更改