ここしばらく、Tomcat 8のParallel Deploymentをゼロダウンタイムの継続的デプロイメントセットアップの一部として使用しています。
テストガントレットが実行されると、CIサーバーは自動的に.warファイルの名前をapplication ## {version-number} .warに変更し、warを/ webappフォルダーにコピーします。 application ## 333はapplication ## 332とうまく共存します。
私が直面している唯一の問題は、すべてのトラフィック(新しいセッション)が新しいアプリケーションに自動的に移行したら、古いアプリケーションを手動でアンデプロイする必要があることです。
Tomcatには、「このサービスがセッション数がゼロになったら削除する必要がある」と言うための組み込みメカニズムはありますか?たぶん、ある種の「最後のセッションが期限切れになった」イベントを利用できます。
他の誰かがこの種のアプリケーションのアンデプロイを自動化した場合は、それについて聞いてみたいと思います。ありがとう!
古いアプリケーションを削除するようにTomcatを構成できます。 undeployOldVersions
属性をHost
要素に追加し、true
に設定する必要があります。 server.xmlのホストを次のように変更する必要があります。
<Host undeployOldVersions="true" ...>
...
</Host>
詳細は ホストのドキュメント を参照してください。特に、これは自動展開が有効になっている場合にのみ機能します。