Недавно я изменил приложение Play, используя Акку Актеры, в классическое приложение Scala. С Play, я переопределять глобальные настройки приложения, как это:Воспроизведение жизненного цикла приложения
import play.api._
import play.api.Play.current
object Global extends GlobalSettings {
var system: ActorSystem = _
override def onStart(app: Application) : Unit = {
super.onStart(app)
Logger.info("onStart")
system = ActorSystem("SysActor")
override def onStop(app: Application) : Unit = {
super.onStop(app)
if (system != null) {
system.terminate
Logger.info(system + " shutdown !")
}
}
}
В классическом применении лестницы, я определил основной класс будет выполняться при sbt run
команде, но это способ обнаружения, как Play Scala
, в закрыть или остановить запущенное приложение? Обратите внимание, что я опубликовал приложение на Amazon EC2 с помощью Docker.
Значит, вызов 'addShutdownHook' неявно закрывает актерскую систему моего приложения? – alifirat
Нет, извините - я не был понятен - ваша реализация метода 'run' в потоке, который вы передаете' addShutdownHook', должна делать все, что нужно сделать при выключении; В вашем случае он должен называть 'system.terminate' –
О, хорошо, спасибо за пример :) – alifirat