2011-10-29 10 views
3

正確なタイプが実行時に構成ファイルから読み取られるだけのアクターを作成する必要があります。そのアクターのコンストラクターは自明ではありません。つまり、構成ファイルで定義されているいくつかのパラメーターが必要です。Akka - 反射を使ってアクターを作成する

今まで、私は次のように、この使用して反射を行うことを試みた:

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

は残念ながら、これは「akka.actor.ActorInitializationExceptionその結果:俳優のインスタンスのActorRef [...]は、新しいMyActorを使用してアクタのインスタンスを明示的に作成することはできません[...] ""!

これで、内部オブジェクトへの参照が漏れないようにフレームワークが保護されていることが分かりましたが、どうすればこの問題を回避できますか?あるいは、それ以外の方法で、自分がやりたいことをうまくやり遂げることができますか?

答えて

4

パラメータを持つアクタを作成するためにJavaインターフェイスを使用することがあります。

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

だからではなく、機能の工場を渡す:創造のための(Java)のコードは次のようになります。これはもっとうまくいくかもしれません...

関連する問題