¿Cómo actualizo una aplicación web Tomcat sin reiniciar todo el servicio?

Soy nuevo en Tomcat . Tenemos una máquina de desarrollo con aproximadamente 5 aplicaciones ejecutándose. A pesar de que es dev, nuestros clientes lo utilizan bastante durante las pruebas.

Entonces, digamos que necesitamos hacer un pequeño cambio en un archivo de clase. En este momento, debemos cerrar Tomcat (afectando a las otras cuatro aplicaciones), eliminar el archivo WAR (y el directorio de la aplicación web), volver a desplegar el nuevo archivo WAR y reiniciar Tomcat .

Por supuesto, esto molesta a algunas personas porque destruye todas las sesiones registradas para todas las aplicaciones.

¿Hay una mejor manera de hacer esto? Quiero decir, ¿hay alguna forma de volver a cargar solo la CLASE que cambió en lugar de todo en la máquina de desarrollo?

Gracias.

¿Has intentado utilizar la aplicación Manager de Tomcat ? Le permite deshacer / desplegar archivos de guerra sin cerrar Tomcat.

Si no desea utilizar la aplicación Manager, también puede eliminar el archivo war del directorio webapps, Tomcat cancelará la aplicación después de un corto período de tiempo. A continuación, puede copiar un archivo war en el directorio y Tomcat desplegará el archivo war.

Si está ejecutando Tomcat en Windows, puede necesitar configurar su Contexto para no bloquear varios archivos.

Si no puede tener ningún tiempo de inactividad, puede consultar las implementaciones paralelas de Tomcat 7. Puede implementar varias versiones de una aplicación web con la misma ruta de contexto al mismo tiempo. Las reglas utilizadas para hacer coincidir las solicitudes con una versión de contexto son las siguientes:

  • Si no hay información de sesión presente en la solicitud, use la última versión.
  • Si la información de sesión está presente en la solicitud, verifique el administrador de sesión de cada versión para una sesión coincidente y, si encuentra una, use esa versión.
  • Si la información de sesión está presente en la solicitud pero no se puede encontrar ninguna sesión coincidente, use la última versión.

Hay varias formas fáciles.

  1. Simplemente toque web.xml de cualquier aplicación web.

     touch /usr/share/tomcat/webapps//WEB-INF/web.xml 

También puede actualizar un archivo jar particular en WEB-INF / lib y luego tocar web.xml, en lugar de crear un archivo war completo y desplegarlo de nuevo.

  1. Elimine el directorio webapps / YOUR_WEB_APP, Tomcat comenzará la implementación de la guerra en 5 segundos (suponiendo que su archivo de guerra aún exista en la carpeta webapps).

  2. En general, sobrescribir el archivo war con la nueva versión se redistribuye automáticamente por tomcat. De lo contrario, puede tocar web.xml como se explicó anteriormente.

  3. Copie sobre un “directorio” ya explotado a su carpeta webapps

En el directorio conf de apache tomcat, puede encontrar el archivo context.xml. En esa etiqueta de edición como < Context reloadable = “true” >. esto debería resolver el problema y no es necesario reiniciar el servidor