0
最近,我将使用Akka Actor的Play应用程序更改为经典的Scala应用程序。一起玩,我重写应用程序的全局设置是这样的:播放应用程序生命周期
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 !")
}
}
}
在一个经典的Scala应用程序,我定义的主类在sbt run
要执行的命令,但它检测的方式,像Play Scala
,该关闭或停止正在运行的应用程序?请注意,我使用Docker在Amazon EC2上发布了该应用程序。
因此,对'addShutdownHook'的调用隐式关闭了我的应用程序的actor系统? – alifirat
不,对不起 - 我不清楚 - 你传递给'addShutdownHook'的线程中'run'方法的实现应该在关闭时执行任何需要的操作;在你的情况下,它应该叫'system.terminate' –
非常感谢这个例子:) – alifirat