0

我正在使用 xsbt-web-plugin 来托管我的 serverlet。它工作正常,使用container:start.

我现在需要它在后台运行,就像一个守护进程,即使我挂断了,理想情况下,即使机器重新启动。我宁愿不必调用 sbt。

我知道该插件可以打包一个 WAR 文件,但我没有运行 tomcat 或类似的东西。我只是想做一些事情container:start,但是以一种更健壮(阅读:非交互式)的方式。

(我的目标是开发一个演示:我不希望我的 ssh 会话在人们使用演示时放弃 sbt 或类似的东西。但是我们还没有准备好投入生产,也没有 serverlet 基础设施。 )

4

1 回答 1

1

xsbt-web-plugin 实际上并不意味着充当生产服务器(具有自动重启、故障恢复、启动时运行等功能),但是我理解以这种方式使用它来进行小规模开发的实用性。

你有几个选择:

第一种方法

在屏幕会话中运行 sbt,您可以随意(断开)连接而不会中断 sbt。

第二种方法

重写shutdown在 sbt 的退出钩子上触发的函数,以便容器在 sbt 停止后继续运行。

对于这种方法,将以下设置添加到您的 sbt 配置中:

构建.sbt:

onLoad in Global := { state => state }

请注意,这将完全覆盖 onLoad 设置,因此在(不太可能)您将其配置为执行其他重要事情的情况下,它们不会发生。

现在您可以通过container:start从 sbt 运行然后退出 sbt 来启动容器,或者只是通过sbt container:start从命令行运行来启动容器,这将在 fork 容器 JVM 后返回。给它几秒钟,然后你应该能够请求localhost:8080

于 2014-12-11T02:27:07.493 回答