我正在使用xsbt-web-plugin来托管我的servlet。 它工作正常,使用 container:start
.
我现在需要它在后台运行,就像一个守护程序,即使我挂断了,理想情况下,即使机器重新启动。 我宁愿不必调用 sbt。
我知道该插件可以打包 WAR 文件,但我没有运行 tomcat 或类似的东西。 我只想做container:start
做的事情,但以一种更强大(阅读:非交互式(的方式。
(我的目标是开发演示:我讨厌我的 ssh 会话在人们使用演示时放弃 sbt 或类似的东西。 但是我们还没有准备好投入生产,也没有 servlet 基础设施。
XSBT-web-plugin 实际上并不是要充当生产服务器(具有自动重启、故障恢复、启动时运行等功能(,但是我理解以这种方式将其用于小规模开发目的的效用。
您有以下几种选择:
第一种方法
在屏幕会话中运行 sbt,您可以随意(取消(连接而不会中断 sbt。
第二种方法
重写在 sbt 的退出挂钩上触发的 shutdown
函数,以便在 sbt 停止后容器继续运行。
对于此方法,请将以下设置添加到 sbt 配置:
build.sbt:
onLoad in Global := { state => state }
请注意,这将完全覆盖 onLoad 设置,因此在(不太可能(将其配置为执行其他重要操作的情况下,它们不会发生。
现在,您可以通过从 sbt 运行 container:start
然后退出 sbt 来启动容器,或者只需从命令行运行 sbt container:start
,命令行将在分叉容器 JVM 后返回。 给它几秒钟,然后你应该能够请求本地主机:8080。