2017-04-20 10 views
1

ファイル私は、次のような構成の.propertiesにアッカ.confファイルの設定は私のTest.confをファイルで

akka { 
    actor { 
    provider = "akka.cluster.ClusterActorRefProvider" 

    serializers { 
     java = "akka.serialization.JavaSerializer" 
    } 

    serialization-bindings { 
     "java.io.Serializable" = "kyro" 
    } 
    } 
} 

を持っている私は

akka.actor.provider=akka.cluster.ClusterActorRefProvider 
akka.actor.serializers.java=akka.serialization.JavaSerializer 
akka.actor.serialization-bindings."java.io.Serializable" = kryo 

としてtest.propertiesファイルにこのconfiguationを入れしようとしていますtest.confファイルを使用してAKKA ActorSystemを作成すると、正常に動作していますが、test.propetiesファイルを使用してActorSytemを作成しているときは、

ここで私はJava ClassNotFoundExcpetionを取得しています: "java

私はakka.actor.serialization-bindingsを置く方法を見ます。" java.io.Serializable "はtest.propertiesファイルでは正しくありません。これを.propertiesファイルに入れる方法です。

答えて

0

私はあなたがこのようにキーを宣言することはできないと思いますが、あなたの手に強力な設定ツールがあることを覚えていますが、プロパティファイルがほしいと思っていました。

私は reference.confにすべてのアプリケーションのデフォルトコンフィギュレーションを置くので、あなただけの test/resourcesにテストのために、あなたのクラスパス上の特定の application.confをドロップすることができ application.confを使用して上書きすることをお勧めしたい

これはあなたのjava/resources/reference.conf次のようになります。

akka { 
actor { 
    provider = "akka.cluster.ClusterActorRefProvider" 

    serializers { 
    java = "akka.serialization.JavaSerializer" 
    } 

    serialization-bindings { 
    "java.io.Serializable" = "kyro" 
    } 
} 
} 

そして、あなたはtest/resources/application.confまたは任意のあなたがテストのために必要でこれを置く:

akka { 
    serialization-bindings { 
    "java.io.Serializable" = "java" 
    } 
} 

あなたはすべてのファイルが一つの構成にマージされますConfigFactory.load()を呼び出すとき。

私は、コンフィギュレーションを設定し、変更する方法についての詳細を読むことをお勧め:あなたができるようhttp://doc.akka.io/docs/akka/current/general/configuration.html#Configuring_multiple_ActorSystem

+0

私は、test.confまたはtest.propertiesのどちらか一方の設定ファイルのみを保持したいと思います。両方のtest.propertiesではなく、test.propertiesの場合、直列化バインディングプロパティを設定する方法を知る必要があります。プロパティファイル私はtest.confファイルを持っていなければなりません –

+0

この場合、あなたはオプションが外れてしまうのではないかと心配しています。 hocon形式に固執する。 – Leo

+0

デフォルトのAkka config( 'akka'ネームスペース)を' reference.conf'でオーバーライドしてはいけません。 – johanandren

-1

タイプセーフの設定ライブラリがロードプロパティオブジェクトと組み合わせコンフィグすることができます:

// or load it from a file using whatever logic you want 
Properties properties = new Properties(); 
properties.setProperty("some.setting", "a-value"); 

Config propConfig = ConfigFactory.parseProperties(properties); 
Config actualConfig = propConfig.withFallback(ConfigFactory.load("test.conf")); 
ActorSystem.create("name", actualConfig); 

更新:としてのレオは、引用のために私が見ることができる限り、実際にはPropertiesで可能ではないakka.actor.serialization-bindings."java.io.‌​Serializable"を上書きしたいと思うならば、コメントで指摘しました。

+0

これはオプションではありません。彼は 'akka.actor.serialization-bindings 'をオーバーライドしようとしています。java.io.Serializable" '。プロパティキーはafaikを引用符で囲むことはできません。 – Leo

+1

もちろん: 'properties.put(" akka.actor.serialization-bindings。 "java.io.Serializable \" "、" someval ")'はうまく動作します。しかし、Typesafe Configライブラリはプロパティを解析するときに特に引用符を扱わないので、完全なクラス名のドットをサブネームスペースとして解釈するため、実際には特定のユースケースでは機能しません。 – johanandren

+0

あなたは正しいですが、私はきれいなアプローチを好み、HOCONを完全に受け入れます。私の2c。 – Leo

関連する問題