2011-01-05 15 views
27

He seguido los pasos siguientesTomcat no autodeploying archivo de la guerra

  • apagado Tomcat
  • Desplegado un archivo de guerra con una marca de tiempo del 1 de diciembre
  • iniciar Tomcat - Esto creó el directorio expandido para el archivo de la guerra desplegado .
  • Parar Tomcat
  • ha actualizado el archivo de la guerra con una nueva con una marca de tiempo del 3 de diciembre
  • Reinicie Tomcat

He descubierto que cuando i reiniciar Tomcat, los archivos existentes en la carpeta que se expandió previamente no fueron actualizados. ¿No debería la actualización del archivo war haber actualizado el jsp relevante, el archivo de clase?

Miré la documentación y encontré esto http://tomcat.apache.org/tomcat-5.5-doc/config/host.html. La siguiente cita en "Aplicación de despliegue automático"

Además de la implementación automática que se produce en el arranque tiempo, también puede solicitar que las nuevas archivos de configuración XML, Guerra archivos o subdirectorios que son cayeron en la AppBase (o
$ CATALINA_HOME/conf/[ENGINE_NAME]/[nombre_host] en el caso de un archivo de configuración XML ) guía mientras Tomcat es en ejecución será automáticamente desplegado, de acuerdo con las reglas describir d arriba. El programa de implementación automática también hará un seguimiento de las aplicaciones web para los siguientes cambios:

  • una actualización del archivo WEB-INF/web.xml dará lugar a una recarga de la web aplicación
  • Una actualización de una GUERRA que se ha ampliado desencadenará una undeploy (con una eliminación de la aplicación web expandido), seguido de un despliegue
  • una actualización de un archivo de configuración XML disparará una undeploy (sin la eliminación de cualquier directorio expandido ), seguido de un despliegue de la web asociado aplicación

Shouldnt los archivos han sido puesto al día automáticamente como resultado del punto 2 anterior?

AutoDeploy se establece en true en server.xml

Respuesta

30

Históricamente, tomcat nunca ha actualizado el directorio explotado cuando acaba de colocar un nuevo jar, al menos para mí. Siempre asumí que esto era un error, pero nunca lo analicé ya que hay una solución simple. Ambos deberían funcionar bien:

  • Implemente el archivo de guerra con la aplicación Administrador de compilación. Está bien si está bien con el uso de una GUI para administración de producción. Nota Esta herramienta solía tener problemas si se implementaba varias veces (de nuevo, nunca profundicé en los detalles), pero un reinicio Tomcat funcionó bien.
  • Detener, eliminar y descartar. Detenga Tomcat, elimine el directorio explotado, coloque el nuevo archivo war.
  • +0

    +1 Lo mismo aquí. Adopté la segunda solución, solo hice un script para hacerlo. – leonbloy

    +0

    Uso el segundo enfoque pero sin eliminar el directorio explotado. Eso es lo poco que no funciona: 0 – ziggy

    +7

    Tomcat lo explica con este párrafo: "Cualquier archivo de archivo de aplicación web dentro del directorio base de la aplicación (appBase) que no tenga un directorio correspondiente del mismo nombre (sin la extensión" .war ") se expandirá automáticamente, a menos que la propiedad unpackWARs se establezca en falso. Si vuelve a implementar un archivo WAR actualizado, asegúrese de eliminar el directorio expandido al reiniciar Tomcat, para que el archivo WAR actualizado se vuelva a expandir (tenga en cuenta que el despliegue automático , si está habilitado, expandirá automáticamente el archivo WAR actualizado una vez que se elimine el directorio expandido anteriormente). " –

    1

    Si el directorio expandido deben ser actualizados, pero no es necesario para detener Tomcat para que esto funcione - que funcionará con Tomcat en ejecución . ¿Puedes intentarlo de nuevo sin detener Tomcat entre la actualización?

    También utilizo la aplicación de administrador integrada que me permite actualizar archivos de guerra en cualquier parte del dominio sin ser root (o apache o lo que sea que se esté ejecutando). Esto es muy conveniente y puede integrarse en un script Ant.

    +2

    No tenemos las aplicaciones administrativas o de administrador instaladas en los entornos de producción, por lo que todo se hace a través de un script. Estoy de acuerdo en que la carpeta explosionada debe actualizarse. Me pregunto si el hecho de que cerré el gato lo causa. – ziggy

    5

    Normalmente configuro la autodeploy en server.xml en falso. Esto me permite abandonar la nueva guerra y reiniciar tomcat sin tener que lidiar con el directorio correspondiente.

    6

    Agregar autoDeploy = true. Que funciona para mí

    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
    
    +0

    Parece un elemento XML. ¿A qué archivo debe agregarse? –

    +3

    Editar server.xml en el directorio de tomcat conf y ahí está –

    1

    En mi caso I nombre del artefacto

    ROOT.WAR 
    

    pero debería ser

    ROOT.war 
    

    Salud!

    0

    Como utilizo experto para generar mi construye en Tomcat dentro de una caja ubuntu, tengo un script llamado

    install_wars.sh

    con el siguiente contenido: mvn clean install service tomcat7 stop find /var/lib/tomcat7/webapps/ -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} \; find . -name *.war -exec cp {} /var/lib/tomcat7/webapps/ \; service tomcat7 start es posible que desee cambiar la ruta y el experto comandos en consecuencia.

    El stop/start de tomcat está ahí para evitar fugas de memoria que pueden ralentizar la aplicación después de varias reubicaciones.

    Cuestiones relacionadas