2009-01-27 9 views
14

¿Cómo llego Tomcat para eliminar los artefactos de la aplicación web cuando se utiliza el Manager para anular el despliegue de la aplicación?Tomcat undeploy no elimina artefactos de aplicaciones web

estoy usando Tomcat 6.0.18. La aplicación se implementó utilizando el plugin tomcat-maven-1.0-SNAPSHOT pero el comportamiento es el mismo a través del plugin maven o la interfaz web.

La documentación de Tomcat proporciona advertencias sobre cómo se debe comportar la desaplicación en el Manager How To.

El archivo de guerra se puede eliminar; sin embargo, el directorio de la aplicación desempaquetado sigue impidiendo una reimplementación.

Respuesta

2

Podría ser que su aplicación no puede ser completamente no desplegada, porque hay temas de fondo (que lo más probable es empezar a sí mismo) o solicitudes de larga ejecución que impiden la aplicación de detener por completo.

¿Inspeccionó los archivos de registro? ¿Dijeron si la aplicación podría ser desplegada con éxito? ¿O lo opuesto? ¿Puede obtener un volcado de subprocesos después de intentar deshacer la implementación (matar -3 processid en Unix, Ctrl-Break en una consola en Windows) y ver si hay algo todavía en ejecución que no debería?

También tenga en cuenta que la mayoría de las aplicaciones que he visto no pueden ser sin desplegar por completo con respecto a la memoria que se llevaron. Me he topado con OutOfMemoryErrors (PermGen) con bastante frecuencia, especialmente después de volver a implementar webapps (encontrarás muchas referencias en PermGen si buscas en Google), por lo que creo que volver a implementar está bien para las máquinas de desarrollo, pero no para las de producción. Es mejor saber esto antes de que te sorprenda esto en producción.

26

También puede haber un problema con el archivo de bloqueo (sobre todo en Windows) si está accediendo a recursos en una biblioteca JAR través de una URL dentro de su aplicación.

que acaba de tener un problema similar y se fija mediante la modificación de la siguiente línea en el

Apache Tomcat/conf/context.xml

archivo a:

<Context antiJARLocking="true" antiResourceLocking="true" > 

(Tenga en cuenta que existe cierta controversia sobre si esto es seguro para la producción ya que crea copias de su aplicación web para cada redistribución, pero si está en Windows y no puede solucionar el problema en la fuente, entonces esto puede proporcionar una solución viable).

+1

Este truco funcionó para mí. Tuve problemas para anular la implementación de la aplicación Grails, utilizando el comando "Grails Test Tomcat undeploy". Pero con estas opciones simplemente comenzó a funcionar mágicamente. –

+5

Preste atención, los documentos de Tomcat dicen: "' antiJARLocking' es un subconjunto de 'antiResourceLocking' y por lo tanto, para evitar trabajos duplicados y posibles problemas, solo uno de estos atributos debe establecerse en true en cualquier momento.". – bluish

Cuestiones relacionadas