viernes, 8 de enero de 2010

¿Recargar o no recargar?

He notado que varios compañeros de equipo configuran en Tomcat la aplicación en la que trabajamos con el atributo "reloadable" en "true".

<Context path="/miaplicacion" reloadable="true" docBase="C:\MiAplicacion" />

Este atributo causa un comportamiento que para mi es bastante incómodo a la hora de estar desarrollando y haciendo pruebas con la aplicación localmente. Si uno tiene arriba el tomcat y desea modificar el código un poco para ver si esa pulga que tenemos se resuelve, uno tiene que esperar para arrancar de nuevo el servidor ya que cualquier cambio al código de la aplicación produce automáticamente un reinicio del servidor.

Curiosamente la página de Apache Tomcat recomienda habilitar esta opción para desarrollo:
"Set to true if you want Catalina to monitor classes in /WEB-INF/classes/ and /WEB-INF/lib for changes, and automatically reload the web application if a change is detected. This feature is very useful during application development..."
Supongo que debe ser útil si uno constantemente actualiza el código desde un repositorio central y necesita que la aplicación sea refrescada con los últimos cambios. La verdad no estoy seguro qué es lo que se gana exactamente, pero en mi experiencia es preferible no habilitarla pues es cansado sobre todo si la aplicación requiere de un tiempo significativo para reiniciar.

Cuando dejamos el atributo reloadable="false" nuestro código con solo ser guardado podrá reflejar los cambios en la aplicación en vivo con la excepción de que los cambios no sean sobre la "firma" de la clase. Si se cambian miembros de clase o los parámetros de entrada o salida de cualquier método, la aplicación forzamente tiene que ser reiniciada.

Esa ha sido al menos mi experiencia con Eclipse, quizás algún otro IDE se comporte diferente pero supongo que debe ser una norma general al tratarse de configuración de Tomcat. Mi recomendación es apagar esta opción y si notan que un cambio no se está viendo reflejado o la aplicación se comporta extraño, entonces manualmente se reinicia el servidor.

No hay comentarios:

Publicar un comentario