Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jetty和Scala与SBT的部署策略?_Java_Scala_Jetty_Sbt - Fatal编程技术网

Java Jetty和Scala与SBT的部署策略?

Java Jetty和Scala与SBT的部署策略?,java,scala,jetty,sbt,Java,Scala,Jetty,Sbt,我希望Jetty在生产服务器上运行,当我有新的代码包要部署时,我希望能够执行“sbt包”将我的代码打包到war文件中,然后将其复制到生产机器的webapp文件夹中 这合理吗?如果是这样,什么是启动Jetty作为守护进程的最佳方法?它会看到新文件并自动重新加载我的应用程序,还是我需要以某种方式重新启动它 您所建议的主要问题是,让服务器侦听或监视webapps文件夹所需的配置是,将有一个生产影响。 虽然这种配置非常适合开发,但不建议将其用于生产应用。 话虽如此,您需要的是ContextDeploye

我希望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>
要停止Jetty,请运行:

./jetty.sh stop
./jetty.sh restart
要重新启动Jetty,请运行:

./jetty.sh stop
./jetty.sh restart

同样,请参阅或,以获取您正在运行的Jetty的任何版本的确切文档。不同版本的服务器配置方式可能会有很大差异。

根据我的经验,上下文重新加载总是内存泄漏,最终会占用运行Jetty的JVM中的可用PermGen空间。不幸的是,至少在内存耗尽之前,重新启动是必要的。您可以处理重新启动的停机时间,使用负载平衡器后的滚动重新启动,或者使用LiveRebel之类的解决方案。@brandon-谢谢您的澄清。我在回答中确实提到,不建议将其用于生产,但您提出了一个有效的观点,即这可能需要进一步强调。将更新我的答案。负载平衡器+1,保持性能和正常运行时间,赢得-win@virtualeyes-谢谢你的反馈。不要显得渺小:),但你是不是想把这个投上去?我看到了+1评论,但在我的声誉历史记录中没有投票。你早些时候发表评论时,我没有看到向上投票,所以我不确定是你还是其他人没有压力,只是跟进:)再次感谢@jmort253嘿,对不起,上面提到的投票是为了brandon的评论,特别是关于负载平衡器的观点