puerto pagina instalar cambiar java eclipse tomcat

java - pagina - Integración de tomcat y eclipse como un entorno de implementación en caliente



tomcat 9 eclipse (16)

Me gustaría configurar eclipse y tomcat de forma integrada, de manera que los cambios en mis JSP y servlets (si es posible) se reflejen inmediatamente sin necesidad de una implementación.

Bien, esta es una de esas preguntas que tiene muchas respuestas en Internet, pero todas parecen diferentes. (use el plugin Sysdeo, use el plugin de JBOss, haga cosas con un Eclipse obsoleto, use MyEclipse en su lugar, etc.) y no pude encontrar 1 recurso definitivo al que 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 funcionando de forma independiente. De hecho, me las arreglé para integrarlos en una implementación no 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 (Ganimedes) Tomcat v6.0.20


¿Estás dispuesto a usar Jetty para fines de desarrollo?

Si es así, es bastante sencillo de usar con Maven: simplemente ejecuta mvn jetty:run


¿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 incorporado 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.


Cambia tu espacio de trabajo en Eclipse a / tomcat / webapps Ya que es solo para tu trabajo, esto debería funcionar bien. Cualquier cambio que realice en Eclipse se encuentra en el mismo directorio que tomcat busca aplicaciones para desplegar


En Eclipse, haga clic en Proyecto en el menú superior y asegúrese de que esté seleccionado "Crear automáticamente". Esto solucionó mi problema. Estaba ejecutando Eclipse con Tomcat usando mis metadatos del 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 ejecutándose. Abra la pestaña Consola en Eclipse. Haga un cambio en su aplicación. Después de unos segundos, verá que su cambio se genera automáticamente y se implementa en Tomcat.


En caso de que tengas prisa,

  1. marque "nunca publicar automáticamente" en tomcat (otro contenedor) en eclipse.
  2. Inicie tomcat (otro contenedor) en modo de depuración.

voila! :)


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 Tomcat". Modifique "Ruta de implementación" en el directorio de implementación de tomcat (Ej: c: / server / Tomcat 7.0.14 / webapps). Extienda la "sección de publicación". Marque "Publicar automáticamente después de un evento de compilación". Guardar y cerrar. Desde el menú de eclipse, marque "Proyecto -> Crear automáticamente". Desde la vista de servidores, haga clic derecho en su servidor, "Agregar y eliminar", publique su proyecto.


En su entorno de desarrollo, simplemente señale a su servidor Tomcat para buscar JSP en el directorio en el que los esté desarrollando. Tan pronto como guarde el archivo, podrá ver los cambios en ese momento.


Encontré la manera más simple: uso de enlaces simbólicos: creo que esta es la manera más rápida porque no hay sincronización en absoluto: el directorio de tomcat y su directorio de proyecto serán el mismo directorio todo el tiempo.

Tomcat detectará periódicamente los cambios y volverá a implementar su aplicación.

También hay una manera de depurar su aplicación, así que humildemente creo que es una buena solución.

He documentado mi solución aquí , para cualquier persona interesada.


Esta puede no ser la mejor manera, pero funciona para mí.

  • $ tomcat / conf / Catalina / localhost / .xml
  • $ contextPath / webapp / web / WEB-INF / lib / *. jar
  • $ contextPath / webapp / web /
  • $ eclispeWorkbench / project-servlet / src /
  • $ eclispeWorkbench / project-servlet / servlet.jardesc (debería exportar jar a lib dir en $ contextPath)
  • $ eclipseWorkbench / project-jsp /

Utilizo un comando rsync para sincronizar los cambios de mi proyecto jsp a $ contextPath.

Use la depuración remota en Eclipse para Tomcat, lo que permitirá el intercambio limitado de código en caliente. Si cambia los campos estáticos o agrega métodos, deberá exportar el jar y reiniciar el contexto.


Hay dos opciones.

En primer lugar, Eclipse le permite hacer esto, con un ligero cambio de configuración (consulte también esta publicación detallada )

  • agregar Tomcat a la lista de servidores
  • hacer el proyecto "Proyecto web dinámico" (ya sea a través del asistente de creación o a través de la sección de facetas en la configuración)
  • agregue el proyecto a tomcat y configure su "ensamblado de implementación"
  • haga doble clic en Tomcat desde la lista para abrir las configuraciones
  • Cambie "Publicación" a "Nunca publicar automáticamente" (esto significa que el servidor no se reiniciará cuando presione ctrl + s)
  • iniciar tomcat en modo de depuración

Esto aún reflejará los cambios de código pero no reiniciará el servidor.

En segundo lugar, he utilizado el complemento FileSync durante mucho tiempo:

  • configure el complemento para enviar todas las clases desde el director del depósito a WEB-INF/classes de su instalación de tomcat (esto es casi lo mismo que configurar el conjunto de despliegue)
  • configurar todos los demás recursos para ir a sus respectivas ubicaciones
  • opcionalmente, externalice todas las rutas absolutas desde la configuración de ubicación de filesync a una única variable, y configure esa variable en eclipse (así podrá confirmar también la configuración de sincronización de archivos, si todos los miembros están usando eclipse)
  • agrega Tomcat a la lista Servidores en eclipse, configura la opción "Ubicaciones de servidor" para que sea "Usar instalación de tomcat" (la pantalla se abre al hacer doble clic en Tomcat desde la lista de servidores)
  • iniciar tomcat en modo de depuración

Funciona perfectamente para mí de esa manera. Cada cambio no estructural se refleja de inmediato, sin volver a desplegar.

Actualizar:
Puede leer más sobre los métodos para implementar en caliente aquí .
También creé un proyecto que sincroniza fácilmente el espacio de trabajo con el contenedor de servlets.


Lo más simple, lo más rápido: configure Eclipse para generar un archivo WAR al compilar; como un paso posterior a la compilación, copie ese archivo WAR en su directorio de webapps de tomcat. Tomcat reconocerá el cambio y actualizará el sitio sin necesidad de implementarlo. 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 tu solicitud.


Lo que funciona para mí aquí es:

context.xml como este:

<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 de Eclipse, en la pestaña "Módulos", desactivé la "Recarga automática" en 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 los contenidos 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.


Me las he arreglado para hacer que esto funcione en mi entorno de desarrollo utilizando el agente de JVM Spring Loaded . Si bien desarrollo aplicaciones web Spring, la descripción de ese proyecto menciona que es

utilizable en cualquier bytecode que pueda ejecutarse en una JVM

Usando la siguiente configuración, pude obtener cambios para publicar 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).

  1. Descargue el último lanzamiento JAR de Spring Loaded de su proyecto Github . Esto ha sido probado con springloaded-1.2.5.RELEASE.jar.
  2. Configure un servidor Tomcat en Eclipse de forma normal (probado con Tomcat 8.0.30)
  3. Abra la página de configuración del servidor Tomcat en Eclipse (haga doble clic en la instancia del servidor dentro de la pestaña "Servidores").
  4. En la sección "Opciones del servidor", desmarque "Módulos auto recargar por defecto".
    • Nota: Si ya tiene módulos web agregados al servidor, es posible que deba desactivar "Actualizar automáticamente" en ellos individualmente a través de la pestaña "Módulos" (en la parte inferior de la ventana de la página de configuración).
  5. En la sección "Información general", haga clic en "Abrir configuración de inicio"
    • En la pestaña "Argumentos", agregue lo siguiente al final de los "argumentos de VM": -javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
    • Para permitir que los -Dspringloaded=watchJars= además de los archivos .class del proyecto, configure el -Dspringloaded=watchJars= VM según los comentarios de este tema .

Inicie el servidor y publique proyectos de Aplicación web dinámica como de costumbre. Nuevamente, pude probar esto con las aplicaciones web Spring. Por ejemplo, modificando el código, agregando / restando 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 modificada. Por último, la sección de preguntas frecuentes del proyecto Spring Loaded mencionó algunos casos en los que las cosas no se volverán a cargar, por lo que requerirían un reinicio del servidor / aplicación. Pero esas excepciones son mucho menos frecuentes.

Una nota más: esto NO funciona con el servidor Pivotal tc integrado o VMware vFabric tc que viene con STS. Para esos servidores, hay una opción "Habilitar la recarga (experimental) basada en el Agente Java", pero que usa la versión anterior 1.2.0 de Spring Loaded, que no funcionó para mí.


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 la clase han sido actualizados, y vuelva a cargarlos si lo han hecho.

Para configurar Tomcat para recargar automáticamente una clase cuando cambia, necesita

edite $TOMCAT/conf/context.xml y establezca:

<Context reloadable="true">

También puede tener que editar y volver a cargar su archivo webapps/$YourWebApp/web.xml e incluir:

<web-app reloadable="true">

No puedo recordar si se necesitan ambos cambios, pero así es como configuré mi tomcat-6.0.18 para que se vuelva a cargar automáticamente.


podemos usar la siguiente opcion? 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.


Descargo de responsabilidad : solo soy un cliente satisfecho, no trabajo para Zero Turnaround y no estoy de ninguna manera afiliado a ellos.

Echa un vistazo a JRebel : te permite codificar sin reiniciar la aplicación web. Básicamente funciona instrumentando sus clases y adaptando sus cambios. Maneja muchos más casos que el despliegue en caliente , que incluye:

  • Agregar / eliminar métodos
  • Agregar / eliminar constructores
  • Cambio de interfaces
  • Agregar / eliminar interfaces implementadas

Es commercial ( detalles de precios , $ 550 / año a partir de junio de 2018) y tiene muchos plugins para marcos de terceros, que incluyen:

  • Guice
  • Primavera
  • Struts 2

Obtienes una prueba gratuita sin ningún problema: te sugiero que lo pruebes.