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. 次のように、作成時にアクター システムにハードコードされた構成を提供できます。

    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.confcustom.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が存在しない場合は、暗黙のうちに無視されます。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 に答える