2012-04-06 13 views
3

学習目的のために、リモートアクタからデータを取得する単純な再生アプリケーションを実装しようとしています。アクターのコードは次のとおりです。Play framework 2.0 - Actorの代わりにdeadLetters

import akka.actor.{Props, ActorSystem, Actor} 

class NumbersServer extends Actor { 
    var number = 0 
    protected def receive = { 
    case 'next => { 
     number += 1 
     number 
    } 
    case 'reset => number = 0 
    case 'exit => context.stop(self) 
    case 'get => sender ! number 
    } 
} 

object Server { 
    def main(args: Array[String]) { 
    val system = ActorSystem("ServerSystem") 
    val server = system.actorOf(Props[NumbersServer], "server") 
    } 
} 

私はそれをjarファイルにパッケージ化し、コマンドラインから起動します。別のウィンドウから開いたScalaコンソールからこのアクタにメッセージを送信しようとすると、正常に動作します。今、私はPlayフレームワークから俳優を取得したいと思います。 Applicationオブジェクトでは、私は次のメソッドを定義します。

def numbers = Action { 
    Ok(views.html.numbers(Client.actor.path.name)) 
} 

はその後modelsパッケージに私はClientオブジェクトを定義します。

object Client { 
    import play.api.Play.current 
    val actor = Akka.system.actorFor("akka://[email protected]:2552/user/server") 
} 

numbers.html.scalaファイル:

@(message: String) 

@main("Header") { 
    <h1>@message</h1> 
} 

をだから私はことを期待します私が127.0.0.1:9000/numbersに行くと、私はサーバーの俳優へのパスを持つページを手に入れました。これの代わりに、私は<h1>deadLetters</h1>を得ます。何が間違っていて、どうやってこれを正しく行うべきですか?

+0

を追加してくださいあなたは、両端にリモーティングを有効にしていることがありますか? –

+0

@ViktorKlang:私はプレーンakkaに類似した方法で演奏中のリモーティングを有効にしようとしましたが、akka-remoteパッケージがないので、 'java.lang.ClassNotFoundException:akka.remote.RemoteActorRefProvider'を取得しました。する。 –

+0

Akkaドキュメントはかなり良いです:http://doc.akka.io/docs/akka/2.0/scala/remoting.html –

答えて

関連する問題