在 Ubuntu 12.04 机器上,Tomcat 7.0.22 ,
我有一个 bash 脚本,它将 ROOT.war 文件复制到特定的库,此时 Tomcat 将其部署到名为 ROOT 的目录。几行后,bash 脚本重新启动(关闭,然后再次运行)Tomcat。
问题是——
在许多情况下(我还没有确定是哪台,但怀疑是速度较慢的机器),ROOT 目录并未完全填充。我怀疑 Tomcat 在完成 ROOT.war 的部署之前就关闭了。当我在复制之后和重新启动之前输入“睡眠 10”时,问题就不太常见了。我可以输入“睡眠 20 小时”,但我真的更想知道何时以及是否需要这种不受欢迎的延迟。
问题是——
如何从 Tomcat 获得有关部署完成的反馈?或者以其他方式关闭 Tomcat,使其在关闭之前完成部署? - 在 cli 中,最好可用于 bash 脚本,因为整个事情应该是自动化的。
答案1
至于 Tomcat,你可以有几种选择:
tomcat v7之后可以多个版本共存,以ROOT##001.war等形式启动。Tomcat 中的零停机部署(和回滚);演练和清单
ROOT.war 实际上是一个 zip 文件。如果部署时间对您来说至关重要,请自行将其解压缩到同一树中的链接中,解压缩完成后将生产链接移至 name_old,将目录更改为 name,然后重新启动以最大程度地减少停机时间。
根据您的本地配置,在 catalina.out 中完成部署时,您还可能会看到一条不同的线。您的里程可能会有所不同,无法推荐特定的消息。
通过自动部署,根据配置,您甚至可能不需要重新启动 tomcat,而只需放置一个新的 WAR 并删除以前的版本即可。自动部署 - 用例
我还建议阅读部署者操作方法。
出于安全考虑,我还强烈建议您更新 Tomcat 安装。Apache » Tomcat » 7.0.22:安全漏洞 如果您的 tomcat 不受自动安全更新的管理