2011-10-29 5 views
3

구성 파일에서 런타임에 정확한 유형 만 읽는 액터를 만들어야합니다. 해당 액터의 생성자는 중요하지 않습니다. 즉 구성 파일에 정의 된 일부 매개 변수가 필요합니다. 불행하게도Akka - 리플렉션을 사용하여 액터 만들기

val actor = actorOf(constructor.newInstance(parameters: _*).asInstanceOf[T]).start 

이는 "akka.actor.ActorInitializationException 결과 : 다음과 같이

는 지금까지, 나는이 사용하는 반사를하려고 노력했습니다 ActorRef을 배우의 예를 들어 [...]입니다 범위에 있지 않습니다. 'new MyActor'를 사용하여 명시 적으로 액터의 인스턴스를 만들 수 없습니다. [...] "!

이제 프레임 워크가 내부 개체에 대한 참조가 누출되지 않도록 보호하고 있지만이 문제는 어떻게 해결할 수 있습니까? 다른 방법으로는 내가 할 수있는 일을 어떻게 할 수 있습니까?

답변

4

아마도 자바 인터페이스를 사용하여 매개 변수가있는 액터를 만들 수 있습니다. 창작 (자바) 코드는 다음과 같습니다

ActorRef actor = actorOf(new UntypedActorFactory() { 
    public UntypedActor create() { 
    return new MyUntypedActor("service:name", 5); 
    } 
}); 

그래서 당신이 공장 대신 함수를 전달합니다. 이것은 더 잘 작동 할 것입니다 ...