我想让 Jetty 在生产服务器上运行,当我有一个新的代码包要部署时,我希望能够做一个“sbt 包”来将我的代码打包成一个 war 文件,然后将它复制过来到生产机器的 webapp 文件夹。
这合理吗?如果是这样,启动 Jetty 作为守护进程的最佳方式是什么?它会看到新文件并自动重新加载我的应用程序还是我需要以某种方式重新启动它?
您所建议的主要问题是让服务器侦听或监视 webapps 文件夹所需的配置是生产命中。
虽然这种类型的配置非常适合开发,但不建议用于生产应用程序。
话虽如此,您正在寻找的是一个 ContextDeployer,它可以在 jetty.xml 中进行配置。有关详细信息,请参阅特定版本的 Jetty 的 Jetty 文档:
<!-- =========================================================== -->
<!-- Configure the context deployer -->
<!-- A context deployer will deploy contexts described in -->
<!-- configuration files discovered in a directory. -->
<!-- The configuration directory can be scanned for hot -->
<!-- deployments at the configured scanInterval. -->
<!-- -->
<!-- This deployer is configured to deploy contexts configured -->
<!-- in the $JETTY_HOME/contexts directory -->
<!-- -->
<!-- =========================================================== -->
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.ContextDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts</Set>
<Set name="scanInterval">5</Set>
</New>
</Arg>
</Call>
“scanInterval”告诉服务器监视上下文文件夹。每 5 秒,它会检查文件是否更改。
最后,要将 Jetty 作为守护程序启动,只需使用它们在 /bin 文件夹中为您提供的脚本:
./jetty.sh start
要停止 Jetty,请运行:
./jetty.sh stop
并重新启动 Jetty,运行:
./jetty.sh restart
同样,请参阅The Jetty 文档或The Webtide 网站,了解您正在运行的任何版本的 Jetty 的确切文档。就服务器的配置方式而言,不同的版本可能会有很大的不同。