Статьи

Чередование между Spray-сервлетом и Spray-can

На сервере вы можете развернуть свое приложение как войну. Как построить войну с помощью спрей-сервлета . Локально проще всего работать без сервера приложений.

Мы включили зависимости как спрей-сервлет, так и спрей-баллончик:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
name := "sprayApiExample"
 
version := "1.0"
 
scalaVersion := "2.11.6"
 
libraryDependencies ++= {
  val akkaV = "2.3.9"
  val sprayV = "1.3.3"
  Seq(
    "io.spray"            %%  "spray-can"     % sprayV,
    "io.spray"            %%  "spray-servlet" % sprayV,
    "io.spray"            %%  "spray-routing" % sprayV,
    "io.spray"            %%  "spray-json"    % "1.3.1", //has not been updated yet
    "com.typesafe.akka"   %%  "akka-actor"    % akkaV
  )
}
 
//This adds tomcat dependencies, you can also use jetty()
tomcat()

Мы делаем черту со всеми общими функциями. Мы расширяем SprayApiServlet и SprayApiCan из него.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import akka.actor.{ActorSystem, Props}
import akka.io.IO
import akka.pattern.ask
import akka.util.Timeout
import spray.can.Http
import spray.servlet.WebBoot
import scala.concurrent.duration._
 
trait SprayApi {
  implicit val system = ActorSystem("SprayApiApp")
  val apiActor = system.actorOf(Props[ApiActor], "apiActor")
}
 
//for use with spray-servlet
class SprayApiServlet extends WebBoot with SprayApi {
  override val serviceActor = apiActor
}
 
//for use with spray-can
object SprayApiCan extends App with SprayApi {
  implicit val timeout = Timeout(5.seconds)
  IO(Http) ? Http.Bind(apiActor, interface = "localhost", port = 8080)
}
  • Вы можете увидеть весь пример здесь.
Ссылка: Чередование Spray-сервлета и Spray-can от нашего партнера JCG Таммо Сминии в блоге JDriven .