xsbt-web-plugin在sbt之外运行web servlet容器?

时间:2014-12-11 00:30:29

标签: scala servlets sbt xsbt-web-plugin

我正在使用xsbt-web-plugin来托管我的servelet。它运行正常,使用container:start

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

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

(我的目标是开发一个演示:我讨厌我的ssh会话,或类似的东西,而人们正在使用该演示。但我们还没有准备好生产,没有服务基础设施。)

1 个答案:

答案 0 :(得分:1)

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

您有几个选择:

第一种方法

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

第二种方法

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

对于此方法,请将以下设置添加到sbt配置中:

build.sbt:

onLoad in Global := { state => state }

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

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