Спрей Scala - инициализация при запуске сервера

Я хотел бы загрузить некоторые данные из файлов JSON при запуске сервера спрея. Как это сделать? Как я могу написать код, когда сервер загружается как метод «init» сервлетов?


person bashan    schedule 27.11.2014    source источник
comment
Извините, забыл об этом...   -  person bashan    schedule 13.12.2014


Ответы (3)


Попробуй это:

object Boot extends App {
    val jsonData: Option[String] = laodJsonFromFile()
    val service = system.actorOf(Props(classOf[YourServiceActor], jsonData), "YourServiceActor")
    implicit val timeout = Timeout(5.seconds)
    // start a new HTTP server on port 80 with our service actor as the handler
    IO(Http) ? Http.Bind(service, 0.0.0.0, 80)

    private def laodJsonFromFile() = // some code...
}

class YourServiceActor(jsonData: Option[String]) extends Actor {
    // ... your code
}
person mingchuno    schedule 03.12.2014
comment
Есть что-то, что обещает мне, что данные будут загружены до того, как сервер начнет отвечать на запросы? - person bashan; 13.12.2014

Используйте «объект» и инициализируйте его, когда он создается при инициализации приложения.

person suztomo    schedule 27.11.2014

Как вы запускаете свой сервер Spray?

Предполагая, что вы являетесь основным или приложением, которое запускает ваш сервер, вы можете просто написать код загрузки JSON перед загрузкой маршрутов Spray.

person Soumya Simanta    schedule 28.11.2014