我正在使用xsbt-web-plugin来托管我的servelet。它运行正常,使用container:start
。
我现在需要它在后台运行,就像一个守护进程,即使我挂机,理想情况下,即使机器重新启动。我宁愿不必调用sbt。
我知道插件可以打包一个WAR文件,但我没有运行tomcat或类似的东西。我只想做container:start
所做的事情,但是以更健壮的方式(阅读:非交互式)。
(我的目标是开发一个演示:我讨厌我的ssh会话,或类似的东西,而人们正在使用该演示。但我们还没有准备好生产,没有服务基础设施。)
答案 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 。