1

我有一个使用自定义参与者系统的 J2EE 应用程序,我需要外部化一些自定义配置。

有没有办法做到这一点?因为application.conf总是在类路径上,所以我可以加载一个外部custom.properties文件并像下面一样使用它

ActorSystem.akka.remote.netty.hostname = "${custom.ip}"
ActorSystem.akka.remote.netty.port = "${custom.port}"
4

1 回答 1

3

我不完全确定你的限制是什么,但原则上你有几个选择:

  1. 您可以在创建 Actor 系统时为其提供硬编码配置,如下所示:

    Map configMap = new HashMap();
    configMap.put("akka.remote.netty.hostname", custom.ip);
    configMap.put("akka.remote.netty.port", custom.port);
    
    Config config = ConfigFactory.parseMap(configMap).withFallback(ConfigFactory.load());
    ActorSystem system = ActorSystem.create("ActorSystem", config);
    
  2. 您可以加载自定义配置文件,而application.conf不是通过代码:ConfigFactory.load("custom.conf")或通过设置系统属性-Dconfig.resource=custom.conf并包含application.conf在您的 中custom.conf,如下所示:

    include "application"
    akka.remote.netty.hostname = "custom-ip"
    akka.remote.netty.port = "custom-port"
    
  3. 如果未定义,您还可以通过系统属性提供自定义端口和 ip 并使用默认值。在这种情况下,application.conf看起来像这样:

    akka.remote.netty.hostname = "default-ip"
    akka.remote.netty.port = "default-port"
    akka.remote.netty.hostname = "${?custom.ip}"
    akka.remote.netty.port = "${?custom.port}"
    
  4. 或者,您可以将其包含custom.properties在您的application.conf文件中。如果custom.properties不存在 if 将被忽略。application.conf

    akka.remote.netty.hostname = "default-ip"
    akka.remote.netty.port = "default-port"
    include "custom"
    

    custom.properties

    akka.remote.netty.hostname = "custom-ip"
    akka.remote.netty.port = "custom-port"
    
于 2014-06-30T18:57:31.350 回答