2014-12-13 1 views
1

Может кто-нибудь объяснить, почему этот пример реагирует только на: localhost: 8080?Spray routing не работает

package com.example 

import akka.actor.Actor 
import spray.routing._ 
import spray.http._ 
import MediaTypes._ 

// we don't implement our route structure directly in the service actor because 
// we want to be able to test it independently, without having to spin up an actor 
class MyServiceActor extends Actor with MyService { 

    // the HttpService trait defines only one abstract member, which 
    // connects the services environment to the enclosing actor or test 
    def actorRefFactory = context 

    // this actor only runs our route, but you could add 
    // other things here, like request stream processing 
    // or timeout handling 
    def receive = runRoute(myRoute) 
} 


// this trait defines our service behavior independently from the service actor 
trait MyService extends HttpService { 

    val myRoute = 
    path("test1") { 
     get { 
     respondWithMediaType(`text/html`) { // XML is marshalled to `text/xml` by default, so we simply override here 
      complete { 
      <html> 
       <body> 
       <h1>test1</h1> 
       </body> 
      </html> 
      } 
     } 
     } 
    } ~ 
    path("test2") { 
     get { 
     respondWithMediaType(`text/html`) { // XML is marshalled to `text/xml` by default, so we simply override here 
      complete { 
      <html> 
       <body> 
       <h1>TEST SPRAY</h1> 
       </body> 
      </html> 
      } 
     } 
     } 
    } 
} 
+1

Как это реагировать «? Что вы ожидаете, что этого не происходит? Как вы на самом деле используете свой «MyServiceActor» и открываете свой серверный сокет? – vptheron

+0

Я ожидаю получить в своем браузере ответ «test1» для «localhost: 8080/test1» и «test2» для «localhost: 8080/test2». Вместо этого я получаю только «test1» для «localhost: 8080 /» – bashan

ответ

2

Я не знаю, как вы начинаете свой сервер, но этот код дает мне именно то, что вы ожидаете test1 для локального хоста: 8080/test1 и TEST SPRAY для test2

object MyServiceServer extends App { 

    implicit val system = ActorSystem("my-service") 

    val service = system.actorOf(Props[MyServiceActor], "my-service") 


    IO(Http) ! Http.Bind(service, "localhost", 8080) 
} 
+0

Это странно. После перезапуска intelliJ он был исправлен. Я был уверен, что Spray автоматически обновит страницу. Он также не работал после + + и перезапуска сервера. – bashan

+0

Возможно, вы захотите попробовать плагин с плавным револьвером для sbt для более быстрого перераспределения и жизненного цикла dev –

+0

Спасибо. Я использую его, но похоже, что он не работает по какой-то причине ... Ничто никогда не работает из-за коробки на intelliJ ... – bashan