2010-12-06 46 views

Respuesta

33

Conjunto reloadable Atributo de <Context> elemento en context.xml a true.

<Context reloadable="true"> 

Entonces Tomcat monitorear los cambios en /WEB-INF/classes y /WEB-INF/lib y volver a cargar cuando sea apropiado.

Si está utilizando un IDE, también se puede configurar como servidor. He aquí cómo se vea como en Eclipse:

alt text

+2

en Eclipse ¿cómo llego a este menú? (en la foto)? – Val

+2

@Val Vaya a la vista "Servidores" y haga doble clic en "Tomcat vx.x Server at xxx". –

+0

¿Cómo hago esto en Intellij? – michaelsnowden

6

Echa un vistazo Jrebel. Detecta cambios en el código, compila y despliega la guerra automáticamente, sin tener que reiniciar el servidor. Ahorra mucho tiempo y mejora la productividad.

+12

Debe tenerse en cuenta que es una solución comercial. –

+0

Sí, pero no cuesta mucho. estoy seguro de que debe haber algún producto de código abierto para un problema similar. Estaría feliz de saber eso, si existe alguno. –

+7

Tomcat se reinicia tan rápido que no necesita Jrebel. Solo necesitas Jrebel cuando usas el muy lento para reiniciar tipos como websphere o JBOSS.que generalmente son exagerados, pero estoy divagando. – bwawok

0

Sí. Puede configurar tomcat para la implementación automática y recogerá los cambios automáticamente. Todavía se redistribuye, pero es mucho más rápido. Simplemente agregue "autodeploy =" true "" a su entrada de Host en el archivo de configuración server.xml.

Eso es lo que hacemos donde trabajo. Cuando llega el momento de actualizar una de nuestras aplicaciones, simplemente colocamos el nuevo archivo WAR encima del antiguo y Tomcat lo descomprime y lo implementa automáticamente.

+2

La última vez que revisé, la función de autodeploración estaba activada de manera predeterminada. –

+4

Y no es lo que OP está buscando. Esto solo supervisa los cambios de los archivos '* .war' en' webapps' y autodeploye cada vez que se agrega uno nuevo o uno existente. – BalusC

+0

¿Por qué no es lo que busca el OP? Copiar sobre la vieja guerra es una manera perfectamente buena de redesplegar una aplicación. –

2

No tiene que reiniciar Tomcat, simplemente vuelva a implementar la aplicación. Hay diferentes formas de hacerlo (google "tomcat deploy" y obtendrá muchos punteros), pero lo más simple es copiar el archivo de guerra recién creado en el directorio de webapps de Tomcat. Tomcat detectará automáticamente cuándo se actualiza el archivo y volverá a iniciar la aplicación.

4

Si necesita modificar las clases sin necesidad de reiniciar consideran Dynamic Code Evolution VM, además de la respuesta de BalusC para evitar errores PermGen, para el desarrollo.

+0

Y es fuente gratuita y abierta :-) – xmedeko

3

Incluso si Tomcat es generalmente muy rápido en la puesta en marcha, depende en gran medida de la aplicación, qué tan rápido se puede inicializar. Si hay un contexto de aplicación de primavera bastante grande, con todo tipo de integraciones y asignaciones de Hibernate, estoy bastante seguro de que arrancar tardará 1,5 segundos para iniciar Tomcat, pero 1,5 minutos para iniciar su aplicación. JRebel realmente podría ayudar aquí.

1

También puedes probar DCEVM. He escrito un howto sobre cómo configurar con Tomcat + Eclipse: Spring-mvc + Velocity + DCEVM

+0

@Adi ya ha mencionado DCEVM. +1 para el buen tutorial. – xmedeko

0

He estado usando el agente JVM Spring Loaded para evitar reiniciar Tomcat o volver a cargar la aplicación (que puede tomar un tiempo para que las aplicaciones web de Primavera). Configuro mi servidor Tomcat en Eclipse junto con "Publicar automáticamente cuando cambian los recursos" para que los cambios entren en vigencia casi de inmediato.

Si utiliza Eclipse con Tomcat integrado (DAP), se puede ver los pasos que di aquí: https://stackoverflow.com/a/37064672/1034436

Cuestiones relacionadas