是否有可能无需停止应用程序部署新的.war应用程序?
即使您热配置WAR文件(通过不重新启动服务器),在上下文重新加载时仍会出现一些停机时间。这不像Grails这样,更像是J2EE/servlet。
正如dogbert说,最好把一个维护页面(在Tomcat的前面使用Apache是一个好主意),并关闭应用服务器,上传新的WAR然后重新启动服务器了。
我所知道的是,您可以更改一个常规文件或一个.gsp文件,并在保存更改后可以在浏览器中使用,但是如果还有其他类型的文件,我不太确定此功能。
一旦程序被打包为一个WAR,更改源文件将不会被自动像你开始使用运行的应用程序传播。总的来说,我认为特别是对于代码长期有效的编译代码,执行实时更新有点冒险。您可以在开发过程中应对奇怪的部署故障,但是在制作过程中,我宁愿玩它安全并且停机一点点。
您可能会在它前面的一个Apache mod_proxy_balancer
创建了两个Tomcat实例,如所描述here。对于“滚动升级”策略可能应用的应用程序的重新部署(假设APP1和APP2是你的两个Tomcat实例):
- 禁用的tomcat @ APP1 Apache的平衡器经理
- 重新部署应用程序到Tomcat @ APP1
- 做一些测试,以APP1,看看是否一切正常
- 启动tomcat的@ APP1在平衡器经理
- 禁用的tomcat @在平衡器经理
- 重新部署应用程序APP 2到Tomcat @ APP 2
- 启动tomcat的@ APP2在平衡器经理
大功告成。您不需要多台物理或虚拟机器,也可以在一台机器上安装。如果您的应用程序升级意味着数据库更改,请小心。 上面可能被例如包封在gant script,所以一个简单的“Grails的集群重新部署”做你需要的一切。这样的脚本目前在我的列表中,但我不知道何时完成。
如果您正在使用Tomcat,这是可能的,什么叫做并行部署:
- :如文档描述
http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Parallel_deployment
简单地命名与版本号的战争文件FOO ## 42.war
- 富## 43.war
呀,THI看起来肯定是要走的路。谢谢。 – Thody 2009-11-08 15:40:35