2017-04-20 1 views
1

파일 나는AKKA의 .conf 파일 구성 내 test.conf 파일에서

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

로 test.properties 파일이 접속과 운전을 넣어 노력하고

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

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

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

다음과 같은 구성을 가지고 test.conf 파일을 사용하여 AKKA ActorSystem을 만들면 잘 작동하지만 test.propeties 파일로 ActorSytem을 만들 때

System.setProperty("config.file", "test.properties"); 
Config config = ConfigFactory.load(); 
ActorSystem testactor = ActorSystem.create("testactor", config); 
여기

나는 자바 ClassNotFoundExcpetion을 얻고있다 "자바

나는 내가 akka.actor.serialization - 바인딩을 넣어하는 방법을 seens."java.io.Serializable을 "test.properties 파일에 correct.Please 올바른 제안되지 않는다 이것을 .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의 경우 serialization-bindings 속성을 넣는 방법을 알아야합니다. properties file 나는 test.conf 파일과 함께 가야만한다. –

+0

이 경우에는 옵션이 없다. hocon 형식을 고수하십시오. – Leo

+0

기본 설정 인 Akka 설정 ('akka' 네임 스페이스)은'reference.conf'를 사용해서는 안됩니다. 왜냐하면 설정이 보이지 않는다면 클래스 경로 순서에 의존하기 때문입니다. – johanandren

-1

보증 된 설정 라이브러리 로딩 속성 개체를 허용하고 CONFIGS을 결합하는 것은 당신이 할 수 있도록 :

// 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"'. 속성 키에는 따옴표가 없습니다. – Leo

+1

물론 할 수 있습니다 :'properties.put ("akka.actor.serialization-bindings. \"java.io.Serializable \ "", "someval")'괜찮습니다. 그러나 Typesafe Config 라이브러리가 속성을 파싱 할 때 특별히 따옴표를 처리하지 않으면 전체 클래스 이름의 점을 하위 네임 스페이스로 해석하므로 주어진 사용 사례에서는 실제로 작동하지 않습니다. – johanandren

+0

네 말이 맞아.하지만 나는 깨끗한 접근법을 선호하고 HOCON을 완전히 받아 들인다. 내 2c. – Leo