我一直在使用 Tomcat 8 的并行部署作为零停机持续部署设置的一部分。
当测试完成后,CI 服务器会自动将 .war 文件重命名为 application##{version-number}.war,并将 war 复制到 /webapp 文件夹。application##333 将与 application##332 很好地共存。
我遇到的唯一问题是,一旦所有流量(新会话)自动转换到新应用程序,我必须手动取消部署旧应用程序。
Tomcat 是否有一些内置机制来表示“嘿,当此服务的会话数降至零时,应该将其删除”?也许我可以利用某种“最后一个会话刚刚过期”事件。
如果有其他人能自动取消部署此类应用程序,我很乐意听听。谢谢!
答案1
您可以配置 Tomcat 以删除旧应用程序。您需要将属性添加undeployOldVersions
到Host
元素并将其设置为true
。您需要将 server.xml 中的主机修改为以下内容:
<Host undeployOldVersions="true" ...>
...
</Host>
查看主机文档了解详情。特别是,这仅在启用自动部署时才有效。