处理容器停止/重新加载事件

And*_*sov 5 scala lift sbt xsbt-web-plugin

有一个提升应用程序在Boot.scala中启动ssh守护程序.这是问题:当我container:restart /在sbt会话中运行时,我在使用异常中获得地址.现在有两个问题:

  1. 在Boot.scala中启动依赖服务是正确的方法吗?
  2. 无论如何如何处理容器:停止事件?

Mar*_*Tye 10

我认为Lift-y的做法是LiftRules.unloadHooks.

它不充分证明(据我所知),但如果你在电梯源代码看,你会发现,当LiftServletdestroy()编,中定义的功能LiftRules.unloadHooks被执行.

您可以unloadHooks RulesSeq使用appendor prepend方法添加函数,具体取决于您希望它们执行的顺序.因此,在您的bootstrap.liftweb.Boot.boot方法中,您可能会执行以下操作:

sshDaemon.start()
LiftRules.unloadHooks.append( () => sshDaemon.stop() )
Run Code Online (Sandbox Code Playgroud)

(假设您是如何启动并停止SSH守护程序的.)

我不是100%肯定在运行LiftServlet.destroy()sbt web-plugin container:restart命令时调用该方法- 这是由插件及其与Jetty的交互决定的,而不是由Lift决定的 - 但container:stop命令应该绝对可行.