Quiero poder implementar cambios de código en Tomcat (casi al instante), mientras desarrollo en Eclipse.Despliegue cero cambio de Tomcat y Eclipse
Hasta ahora, tengo mi salida de Eclipse colocación de las clases incorporadas en la carpeta WEB-INF/classes
de mi aplicación web.
que también tienen un contexto recargable, con el web.xml
visto como un recurso. Cualquier edición/guardar en este archivo hace volver a cargar mi aplicación web, tardando poco más de un segundo, mucho más rápido que crear un nuevo archivo war e implementarlo por completo.
Sin embargo, lo que me gustaría hacer es desencadenar la reimplantación cuando edito cualquier archivo fuente. Como los archivos .class están siendo modificados en Tomcat, parece que solo necesito monitorear cualquier cambio en la carpeta WEB-INF/classes
y son hijos.
He leído que puedo agregar recursos vistos adicionales en Tomcat's context.xml
pero esto no parece ser todo lo que necesito, a menos que sea posible especificar un directorio que se verá (incluido el seguimiento recursivo de subcarpetas y archivos)?
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/someother.file</WatchedResource>
<Manager pathname=""/>
</Context>
Así que, esencialmente, mi pregunta se puede ver que toda la carpeta de clases (sin incluir cada WatchedResource
explícitamente) para desencadenar una redeploy en Tomcat?
Si no, ¿puedo configurar Eclipse en touch
el archivo web.xml, siempre que guardo un archivo fuente en ese proyecto? Estoy desarrollando en un sistema Windows. :(
PS No estoy interesado en el producto JRebel. Cualquier respuesta debe ser una solución libre.
actualización
De acuerdo con el Tomcat documentation, la carpeta de clases se debe supervisar configurando el contexto como recargable:
establece en true si desea Catalina a clases de monitor en/WEB-INF/classes/ y/WEB-INF/lib para cambios, y recarga automáticamente la aplicación web si se detecta un cambio.
Solo parece que los cambios en el web.xml provocan una recarga. ¿Es esto un error o mi configuración es incorrecta?
Además, he leído acerca de cómo establecer el atributo docBase
para un contexto determinado:
docBase="webapps/someExample"
Esto parece estar cerca de lo que necesito, ya que entonces podría publicar en Eclipse rápidamente. Mi único problema es que necesito varias aplicaciones web/servlets para ejecutar simultáneamente en Tomcat, en el mismo puerto, etc.
¿Sabes si hay alguna forma de hacer esto con múltiples aplicaciones web que se ejecutan en Tomcat? (Solo uno debe estar en la ruta de 'compilación de salida') – Mikaveli
No estoy seguro de que te sigo. ¿Tiene proyectos web múltiples e independientes con los que desea comportarse de la misma manera durante el desarrollo? O bien, ¿tiene varios proyectos web que utilizan la misma biblioteca compartida y desea que la biblioteca compartida se compile en una carpeta de clases de proyectos web? Si los proyectos son independientes, solo necesita un archivo de contexto por proyecto (nombre el archivo .xml). Si los proyectos usan el mismo código compartido y quieres que se compile en la carpeta de clases web, no estoy seguro de cómo lo harías. –
philwb
Tengo varias aplicaciones web que deben ejecutarse en la misma instancia de Tomcat; no necesito el mismo comportamiento de "implementación en caliente" de ellas. – Mikaveli