Я уже некоторое время использую параллельное развертывание Tomcat 8 как часть установки непрерывного развертывания с нулевым временем простоя.
После запуска тестовой перчатки сервер CI автоматически переименовывает файл .war в application ## {номер-версии} .war и копирует war в папку / webapp. Приложение ## 333 будет прекрасно сосуществовать с приложением ## 332.
Единственная проблема, с которой я сталкиваюсь, заключается в том, что мне приходится вручную отменять развертывание старых приложений после того, как весь трафик (новые сеансы) автоматически перешел на новый.
Есть ли в Tomcat какой-то встроенный механизм, говорящий «эй, когда эта служба сокращает количество сеансов до нуля, ее следует удалить»? Может быть, какое-то событие «только что истекла последняя сессия», к которому я могу подключиться.
Если кто-нибудь еще автоматизировал развертывание такого рода приложений, я хотел бы услышать об этом. Спасибо!
Вы можете настроить Tomcat для удаления старых приложений. Вам нужно добавить undeployOldVersions
атрибут к Host
элемент и установите для него true
. Вам нужно будет изменить свой хост в server.xml на что-то вроде следующего:
<Host undeployOldVersions="true" ...>
...
</Host>
Увидеть Документация хоста для подробностей. В частности, это работает только при включенном автоматическом развертывании.