【问题标题】:Typesafe Config - reference.conf different behavior?Typesafe Config - reference.conf 不同的行为?
【发布时间】:2015-03-30 19:11:28
【问题描述】:

在我看来 application.conf 和 reference.conf 的行为不同。我确实理解 reference.conf 旨在作为“安全后备”配置,每次都有效,而 application.conf 是特定的。但是,我希望从其中任何一个加载的配置在解析配置方面的行为完全相同。

我面临的是,如果配置在 application.conf 中它工作正常,当同一个文件重命名为 reference.conf 时它不起作用。

2015-03-30 11:35:54,603 [DEBUG] [BackEndServices-akka.actor.default-dispatcher-15] [com.ss.rg.service.ad.AdImporterServiceActor]akka.tcp://BackEndServices@127.0.0.1:2551/user/AdImporterService - Snapshot saved successfully - removing messages and snapshots up to 0 and timestamp: 1427708154584
2015-03-30 11:35:55,037 [DEBUG] [BackEndServices-akka.actor.default-dispatcher-4] [spray.can.server.HttpListener]akka.tcp://BackEndServices@127.0.0.1:2551/user/IO-HTTP/listener-0 - Binding to /0.0.0.0:8080
2015-03-30 11:35:55,054 [DEBUG] [BackEndServices-akka.actor.default-dispatcher-15] [akka.io.TcpListener]akka.tcp://BackEndServices@127.0.0.1:2551/system/IO-TCP/selectors/$a/0 - Successfully bound to /0:0:0:0:0:0:0:0:8080
2015-03-30 11:35:55,056 [INFO ] [BackEndServices-akka.actor.default-dispatcher-4] [spray.can.server.HttpListener]akka.tcp://BackEndServices@127.0.0.1:2551/user/IO-HTTP/listener-0 - Bound to /0.0.0.0:8080

相比:

2015-03-30 11:48:34,053 [INFO ] [BackEndServices-akka.actor.default-dispatcher-3] [Cluster(akka://BackEndServices)]Cluster(akka://BackEndServices) - Cluster Node [akka.tcp://BackEndServices@127.0.0.1:2551] - Leader is moving node [akka.tcp://BackEndServices@127.0.0.1:2551] to [Up]
2015-03-30 11:48:36,413 [DEBUG] [BackEndServices-akka.actor.default-dispatcher-15] [spray.can.server.HttpListener]akka.tcp://BackEndServices@127.0.0.1:2551/user/IO-HTTP/listener-0 - Binding to "0.0.0.0":8080
2015-03-30 11:48:36,446 [DEBUG] [BackEndServices-akka.actor.default-dispatcher-3] [akka.io.TcpListener]akka.tcp://BackEndServices@127.0.0.1:2551/system/IO-TCP/selectors/$a/0 - Bind failed for TCP channel on endpoint ["0.0.0.0":8080]: java.net.SocketException: Unresolved address
2015-03-30 11:48:36,446 [WARN ] [BackEndServices-akka.actor.default-dispatcher-15] [spray.can.server.HttpListener]akka.tcp://BackEndServices@127.0.0.1:2551/user/IO-HTTP/listener-0 - Bind to "0.0.0.0":8080 failed

结算的区别是双引号。而我的配置是这样指定的:

akka {
  ... standard akka configuration ...
}

webserver.port = 8080
webserver.bindaddress = "0.0.0.0"

配置设置在代码中加载如下:

  val webserver_port_key = "webserver.port"
  val webserver_bindaddress_key = "webserver.bindaddress"
  protected val webserver_bindaddress = ConfigFactory.load().getString(webserver_bindaddress_key)
  protected val webserver_port = ConfigFactory.load().getInt(webserver_port_key)

我错过了什么吗?当 reference.conf 绑定失败时,我仔细检查了端口 8080 是否空闲。

感谢提示

更新: 从 log-config-on-start = on 开始: - 当它在 application.conf 中时

# application.conf: 60-61
"webserver" : {
    # application.conf: 61
    "bindaddress" : "0.0.0.0",
    # application.conf: 60
    "port" : 8080
}

- 当它在reference.conf中时

# reference.conf: 60-61
"webserver" : {
    # reference.conf: 61
    "bindaddress" : "0.0.0.0",
    # reference.conf: 60
    "port" : 8080
}

发现问题:

# application.properties
"webserver" : {
    # application.properties
    "bindaddress" : "\"0.0.0.0\"",
    # application.properties
    "port" : "8080"
}

【问题讨论】:

  • 你能解释一下这里的问题吗?从您的更新中我不明白。

标签: scala akka typesafe-config


【解决方案1】:

bindaddress 似乎属于不同类型,因为它在日志中的显示方式不同。

在任何一种情况下,在您的配置中使用此设置启用 Akka 完整配置打印:

log-config-on-start = on

然后比较两种配置,看看它们不匹配的地方。如果它们相同,它们应该以相同的方式工作。我怀疑您定义bindaddress 的方式不同,即字符串与其他类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-26
    • 2018-09-29
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多