Implementación paralela de Tomcat, desinstala automáticamente las aplicaciones antiguas

10

He estado usando la implementación paralela de Tomcat 8 como parte de una configuración de implementación continua sin tiempo de inactividad durante un tiempo.

Cuando se ha ejecutado el guante de prueba, el servidor CI cambia automáticamente el nombre del archivo .war a la aplicación ## {número-versión} .war y copia la guerra en la carpeta / webapp. la aplicación ## 333 coexistirá muy bien con la aplicación ## 332.

El único problema con el que me encuentro es que tengo que desinstalar manualmente las aplicaciones más antiguas una vez que todo el tráfico (nuevas sesiones) haya pasado automáticamente a la nueva.

¿Tomcat tiene algún mecanismo incorporado para decir "oye, cuando este servicio se reduce a cero sesiones, debería eliminarse"? Tal vez algún tipo de evento de "la última sesión acaba de expirar" que pueda aprovechar.

Si alguien más ha automatizado este tipo de despliegue de aplicaciones, me encantaría saberlo. ¡Gracias!

Martin Cron
fuente

Respuestas:

9

Puede configurar Tomcat para eliminar las aplicaciones antiguas. Debe agregar el undeployOldVersionsatributo al Hostelemento y establecerlo en true. Tendrá que modificar su host en server.xml a algo como lo siguiente:

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

Consulte la documentación del Host para más detalles. En particular, esto solo funciona cuando la implementación automática está habilitada.

Mark Thomas
fuente
¿Bajo qué versión de Tomcat estás ejecutando? Tengo Tomcat 8.5.6 y esto no funciona. He habilitado FarmWarDeployer, y las nuevas versiones se implementan automáticamente. Sin embargo, después de habilitar undeployOldVersions en la etiqueta Host, los archivos de guerra más antiguos (y las implementaciones) no se eliminan.
Piko
¿Algún progreso en esto con Tomcat 8?
JimmyD
1
La función está implementada para Tomcat 8. Si tiene problemas al usar FarmWarDeployer, abra un error, con pasos para reproducirlo, de modo que se revise.
Mark Thomas