2012-04-06 3 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 프레임 워크에서 액터를 가져오고 싶습니다.

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> 
} 

그래서 내가 기대

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

는 그 다음 models 패키지에 내가 클라이언트 오브젝트를 정의하십시오 Application 객체에서 나는 다음과 같은 방법을 정의 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 –

답변