Tomcat Parallel Deployment, desimplanta automaticamente aplicativos antigos

10

Estou usando o Parallel Deployment do Tomcat 8 como parte de uma configuração de implantação contínua sem tempo de inatividade por um tempo.

Quando a luva de teste foi executada, o servidor de IC renomeia automaticamente o arquivo .war para o aplicativo ## {version-number} .war e copia a guerra para a pasta / webapp. o aplicativo ## 333 coexistirá bem com o aplicativo ## 332.

O único problema que estou enfrentando é que tenho que desimplantar manualmente os aplicativos mais antigos depois que todo o tráfego (novas sessões) tiver sido automaticamente transferido para o novo.

O Tomcat tem algum mecanismo interno para dizer "ei, quando esse serviço chega a zero sessões, ele deve ser removido"? Talvez algum tipo de evento "a última sessão acabou de expirar" em que eu possa participar.

Se mais alguém automatizou a remoção desse tipo de aplicativo, eu adoraria ouvir sobre ele. Obrigado!

Martin Cron
fonte

Respostas:

9

Você pode configurar o Tomcat para remover os aplicativos antigos. Você precisa adicionar o undeployOldVersionsatributo ao Hostelemento e configurá-lo para true. Você precisará modificar seu host no server.xml para algo como o seguinte:

<Host undeployOldVersions="true" ...>
   ...
</Host>

Consulte a documentação do host para obter detalhes. Em particular, isso funciona apenas quando a implantação automática está ativada.

Mark Thomas
fonte
Em qual versão do Tomcat você está executando? Eu tenho o Tomcat 8.5.6 e isso não funciona. Eu ativei o FarmWarDeployer e novas versões são implantadas automaticamente. No entanto, após undeployOldVersions ativado na tag Host, os arquivos war (e implantações) mais antigos não são excluídos.
Piko
Algum progresso nisso com o Tomcat 8?
JimmyD
1
O recurso foi implementado no Tomcat 8. Se você estiver tendo problemas ao usar o FarmWarDeployer, abra um bug, com etapas para reproduzir, para que ele seja visto.
Mark Thomas