使用tomcat部署期间避免临时404错误

时间:2013-04-02 19:13:38

标签: java tomcat7 opengrok

每次将OpenGrok/dist/source.war复制到/var/tomcat/webapps/时,tomcat会在复制后的几秒钟内为我的用户生成错误页面,并显示404 Not Found错误。

HTTP/1.1 404 Not Found
Server: Apache-Coyote/1.1
Content-Length: 0
Date: Tue, 02 Apr 2013 19:00:14 GMT
Connection: close

这是不可接受的。我没有正确部署,手动将.war文件复制到tomcat目录中,还是某种OpenGrok错误?如何确保没有一个访问者在部署过程中获得过度的404

1 个答案:

答案 0 :(得分:1)

Tomcat 7具有称为并行部署的功能。使用此功能,可以在相同的上下文路径下运行应用程序的多个实例。

这篇博文很好地解释了这一点:http://www.javacodegeeks.com/2011/06/zero-downtime-deployment-and-rollback.html

总结一下,当您将战争添加到appBase时,您需要手动对其进行版本修改。

cp foo##001.war apache-tomcat-7/webapps/
cp foo##002.war apache-tomcat-7/webapps/

您可能希望将undeployOldVersionsautoDeploy设置为true,以便tomcat自动部署应用程序并删除旧版本(如果不再需要)。 检查https://tomcat.apache.org/tomcat-7.0-doc/config/host.html以获取有关tomcat配置的更多信息。

##之后的版本必须是字符串可比较的,因此您可以使用例如您的CI系统中的内部版本号,但您可能需要将其填零。

有几点需要注意:

  • 外部资源需要是可共享的,如果您使用的是数据库,但新版本需要新的架构,您将遇到问题。或者,如果您在特定端口上打开TCP侦听器,则它也不可共享。
  • 缓存,如果您的应用程序使用内部缓存,则应该写入并快速过期
  • 该应用必须取消部署