3

每次我复制OpenGrok/dist/source.war到时,tomcat 都会在复制后的几秒钟内向我的用户/var/tomcat/webapps/生成带有错误的空白错误页面。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

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

4

1 回答 1

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/

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

## 之后的版本必须是可比较的字符串,因此您可以使用例如来自 CI 系统的内部版本号,但您可能必须对其进行零填充。

有几点需要注意:

  • 外部资源需要是可共享的,如果您使用的是数据库,但您的新版本需要一个新模式,您会遇到问题。或者,如果您在特定端口上打开 TCP 侦听器,它也是不可共享的。
  • 缓存,如果您的应用程序使用内部缓存,它们应该被写入并快速过期
  • 该应用程序必须不可部署
于 2013-04-02T21:13:27.133 回答