Me gustaría configurar eclipse y tomcat de manera integrada, de modo que los cambios en mis JSP y servlets (si es posible) se reflejen inmediatamente sin requerir una implementación.
Bien, esta es una de esas preguntas que tiene muchas respuestas en Internet, pero todas parecen diferentes. (use el complemento Sysdeo, use el complemento JBOss, haga cosas con un Eclipse desactualizado, use MyEclipse en su lugar, etc.) y no pude encontrar 1 recurso definitivo para referirme. Entonces, para mi beneficio, ¿cuál es el procedimiento más simple y recomendado para configurar esto?
Esto supone que tengo eclipse y tomcat ejecutándose de forma independiente. De hecho, me las arreglé para integrarlos de una manera no implementada en caliente usando las instrucciones aquí: http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/index.html
Versión de Eclipse Versión: 3.4.2 (Ganymede) Tomcat v6.0.20
Respuestas:
Hay dos opciones.
Primero, Eclipse le permite hacer esto, con un ligero cambio de configuración (vea también esta publicación detallada )
Esto seguirá reflejando los cambios de código pero no reiniciará el servidor.
En segundo lugar, he usado el complemento FileSync durante mucho tiempo:
WEB-INF/classes
su instalación de tomcat (esto es casi lo mismo que configurar el ensamblaje de implementación)Funciona perfectamente para mí de esa manera. Cada cambio no estructural se refleja de inmediato, sin redistribución.
Actualización:
puede leer más sobre los métodos de implementación en caliente aquí .
También creé un proyecto que sincroniza fácilmente el espacio de trabajo con el contenedor de servlets.
fuente
Modules
en la pestaña en la configuración del servidor, luego haga clic enedit
, desmarqueauto deploy enabled
, creo que esta es la forma más sencilla. PD: tu primera forma no me funciona.Simplemente deje que eclipse escriba los archivos de clase directamente en el directorio $ TOMCAT / webapps / MyWebApp / WEB_INF / classes. Luego, configure apache-tomcat para verificar si los archivos de clase se han actualizado y vuelva a cargarlos si es así.
Para configurar Tomcat para que recargue automáticamente una clase cuando cambie, debe
editar
$TOMCAT/conf/context.xml
y configurar:<Context reloadable="true">
También puede que tenga que editar y volver a cargar su
webapps/$YourWebApp/web.xml
archivo e incluir:<web-app reloadable="true">
No recuerdo si se necesitan ambos cambios, pero así es como configuré mi tomcat-6.0.18 para que se recargue automáticamente.
fuente
Context
elementos en el archivo server.xml, pero debería monitorear / WEB-INF / classes / y / WEB-INF / lib para cualquier cambio. ¿Dónde leíste sobre el atributo delweb-app
elemento?Descargo de responsabilidad : solo soy un cliente feliz, no trabajo para Zero Turnaround y de ninguna manera estoy afiliado a ellos.
Consulte JRebel : le permite codificar sin reiniciar la aplicación web. Básicamente, funciona instrumentando tus clases y adaptando sus cambios. Maneja muchos más casos que la implementación en caliente , que incluyen:
Es comercial ( detalles de precios , $ 550 / año a junio de 2018) y tiene muchos complementos para marcos de terceros, que incluyen:
Obtienes una prueba gratuita sin dolor; te sugiero que la pruebes.
fuente
Cambie su espacio de trabajo en Eclipse a \ tomcat \ webapps Ya que es solo para su trabajo, esto debería funcionar bien. Cualquier cambio que realice en Eclipse se encuentra en el mismo directorio que Tomcat busca aplicaciones para implementar.
fuente
En la vista de servidores, cree un nuevo servidor, no agregue ningún recurso (proyecto) al servidor todavía. Haga doble clic en el servidor en la ubicación de los servidores. Elija "Usar instalación de Tomcat". Modifique "Ruta de implementación" en el directorio de implementación de Tomcat (por ejemplo: c: \ server \ Tomcat 7.0.14 \ webapps). Amplíe la "Sección de publicación". Marque "Publicar automáticamente después de un evento de compilación". Guardar y cerrar. En el menú de eclipse, marque "Proyecto -> Construir automáticamente". Desde la vista de servidores, haga clic derecho en su servidor, "Agregar y quitar", publique su proyecto.
fuente
¿Por qué no utilizar un servidor Tomcat integrado en eclipse si esto es solo para desarrollo? Puede configurar servidores en ventana-> preferencias. Una vez que está configurado, si tiene un jsp llamado page.jsp, puede hacer clic con el botón derecho y seleccionar ejecutar en el servidor. En preferencias-> general-> navegador web, puede elegir el clima para usar el navegador integrado o uno externo. Realice algunos cambios en su jsp, guarde y actualice su página desde el navegador. Los cambios se reflejarán automáticamente una vez que guarde y actualice su navegador.
fuente
Lo que me funciona aquí es:
context.xml así:
<Context path="/myapp" docBase="myapp" debug="5" reloadable="false" antiResourceLocking="false" antiJARLocking="true"> <!-- this because i´m using Spring 3.1 with Tomcat --> <Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" /> </Context>
Luego, en la pestaña Servidores en Eclipse, en la pestaña "Módulos", desactivé la "Recarga automática" para todos los módulos que se están implementando.
También deje que la configuración predeterminada permita la publicación automática.
Y está usando Maven con WTP, no olvide dejar el contenido de src / main / resources, porque Eclipse insiste en excluir el contenido de esta carpeta de la compilación final.
¡Solo con todo esto obtuve clases completas (VM) de implementación en caliente con recursos de implementación en caliente!
fuente
En su entorno de desarrollo, simplemente apunte su servidor Tomcat para buscar JSP en cualquier directorio en el que los esté desarrollando. Tan pronto como guarde el archivo, podrá ver los cambios.
fuente
Me las arreglé para que esto funcione en mi entorno de desarrollo utilizando el agente JVM Spring Loaded . Si bien desarrollo aplicaciones web Spring, la descripción de ese proyecto menciona que es
Usando la siguiente configuración, pude obtener cambios para publicarlos automáticamente en una instancia de Tomcat adjunta (el método habitual de Eclipse WTP). Estoy usando Spring Tool Suite 3.7.3 basado en Eclipse Mars.2 (4.5.2).
-javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
.class
archivos JAR además de los archivos del proyecto , configure el-Dspringloaded=watchJars=
argumento de VM según los comentarios de este problema .Inicie el servidor y publique proyectos de aplicaciones web dinámicas en él como de costumbre. Nuevamente, pude probar esto con las aplicaciones web de Spring. Por ejemplo, la modificación de código, la adición / sustracción de métodos, etc. en las clases de @Controller se aplicaron casi instantáneamente después de guardar el archivo y Eclipse compila y publica la clase cambiada. Por último, la sección de preguntas frecuentes del proyecto Spring Loaded mencionó algunos casos en los que las cosas no se recargan, por lo que sería necesario reiniciar el servidor / aplicación. Pero esas excepciones son mucho menos frecuentes.
Una nota más: esto NO funciona con el servidor Pivotal tc integrado o el servidor VMware vFabric tc que viene con STS. Para esos servidores, hay una opción "Habilitar la recarga basada en el Agente Java (experimental)", pero usa la versión 1.2.0 anterior de Spring Loaded, que no me funcionó.
fuente
Spring
, ¿qué tal laNon Spring
aplicación?¿Está dispuesto a utilizar Jetty con fines de desarrollo?
Si es así, es bastante simple de usar con Maven, simplemente ejecute
mvn jetty:run
fuente
Puede que esta no sea la mejor manera, pero me funciona.
Utilizo un comando rsync para sincronizar los cambios de mi proyecto jsp con $ contextPath.
Utilice la depuración remota en Eclipse para Tomcat, que permitirá el intercambio en caliente limitado de código. Si cambia los campos estáticos o agrega métodos, deberá exportar el archivo jar y reiniciar el contexto.
fuente
¿Podemos usar la siguiente opción? Haga doble clic en Servidor en eclipse -> Ubicaciones del servidor -> Usar instalación de tomcat. Toma el control de la instalación de Tomcat. No es necesario reiniciar el servidor para cambios en las clases de Java.
fuente
Encontré una forma más sencilla: uso de enlaces simbólicos: creo que esta es la forma más rápida porque no hay sincronización en absoluto: el directorio tomcat y el directorio de tu proyecto será el mismo directorio todo el tiempo.
Tomcat detectará periódicamente los cambios y volverá a implementar su aplicación.
También hay una forma de depurar tu aplicación, así que humildemente creo que es una buena solución.
He documentado mi solución aquí , para cualquier persona interesada.
fuente
En caso de que tengas prisa:
voila! :)
fuente
En Eclipse, haga clic en Proyecto en el menú superior y asegúrese de que esté seleccionado "Construir automáticamente". Esto solucionó mi problema. Estaba ejecutando Eclipse con Tomcat usando los metadatos de mi espacio de trabajo. También estaba ejecutando Maven en un proyecto de módulo web dinámico. Para verificar, agregue su aplicación a Tomcat. Inicie Tomcat desde Eclipse. Asegúrese de que su aplicación esté implementada y en ejecución. Abra la pestaña Consola en Eclipse. Realice un cambio en su aplicación. Después de un par de segundos, debería ver que su cambio se compila e implementa automáticamente en Tomcat.
fuente
Más simple, más rápido: configure Eclipse para generar un archivo WAR cuando construya; como paso posterior a la compilación, copie ese archivo WAR en su directorio de aplicaciones web de tomcat. Tomcat reconocerá el cambio y actualizará el sitio sin necesidad de implementación. Tenga en cuenta que esto no es perfecto; los usuarios que usan esa aplicación web pueden tener una experiencia menos que óptima, ya que Tomcat reinicia la aplicación web "debajo" de ellos; pero esto se ajusta a su solicitud.
fuente