A have lift app starting ssh daemon in Boot.scala.
Here is the problem: when i run container:restart /
in sbt session I get Address alread in use exception.
Now two questions:
I think the Lift-y way to do it is with LiftRules.unloadHooks
.
It's not well-documented (AFAIK), but if you look in the Lift source code, you'll see that when the LiftServlet
is destroy()
ed, the functions defined in LiftRules.unloadHooks
are executed.
You can add functions to the unloadHooks
RulesSeq
with the append
or prepend
method, depending on what order you want them executed in. So, in your bootstrap.liftweb.Boot.boot
method, you might do something like this:
sshDaemon.start()
LiftRules.unloadHooks.append( () => sshDaemon.stop() )
(Assuming that was how you started and stopped your SSH daemon.)
I'm not 100% certain the LiftServlet.destroy()
method gets invoked when the sbt web-plugin's container:restart
command is run - that's determined by the plugin and its interaction with Jetty, not by Lift - but the container:stop
command should definitely do the trick.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With