¿Puede un proyecto m2eclipse/WTP de múltiples módulos implementar módulos de utilidad en WEB-INF/clases?

StackOverflow https://stackoverflow.com/questions/3405653

Pregunta

Actualmente usamos MyEclipse con su integración Maven4MyEclipse incorporada y su soporte de servidor J2EE incorporado, pero queremos convertirlo a eclipse normal (Helios específicamente) para poder usar su instalación de 64 bits en Windows.(MyEclipse aún no es compatible con 64 bits en Windows).

Hasta ahora tengo un prototipo funcional de Helios eclipse usando m2eclipse con el complemento WTP que implementa nuestra gran aplicación web en Tomcat.La implementación requiere un poco de uso intensivo del procesador, pero funciona y la aplicación se inicia.

Lo que es críticamente diferente aquí es cómo se implementan los proyectos dependientes.En nuestro entorno MyEclipse, todos los proyectos dependientes se implementaron en la carpeta WEB-INF/classes, por lo que mientras el servidor estaba en ejecución, un cambio a una clase java en el IDE copiaría solo los archivos afectados al WEB-INF/clases del servidor e intercambie en caliente la clase en la JVM y...boom - cambio en vivo al servidor.EXCELENTE para depurar.

Sin embargo, en mi conversión de Helios, todos los proyectos dependientes obtienen JARed y se colocan en WEB-INF/lib.Esto tiene la ventaja de parecerse a nuestra imagen de producción real creada por Maven, pero el entorno de desarrollo se ve gravemente perjudicado por esto, ya que la capacidad de intercambio en caliente parece perderse por completo.Aquí, si cambio una clase de Java en un proyecto dependiente, m2eclipse volverá a empaquetar el JAR, verá que la aplicación web implementada no está sincronizada y volverá a publicar la aplicación completa.Esto no solo es un problema porque toda la aplicación web tiene que realizar ciclos (algo que la nuestra, francamente, no hace bien dado su tamaño y su enorme tiempo de inicialización), sino que también es un retraso desagradable en la republicación de eclipse.(Para nuestra aplicación, esto lleva aproximadamente uno o dos minutos).

Así que mi pregunta es esta:¿Hay alguna manera de hacer que los cambios dentro de los proyectos dependientes se intercambien en caliente con la JVM en ejecución y reemplacen los archivos implementados sin esta desagradable penalización por volver a publicar?Supongo que esto significa implementar esos archivos de clase en WEB-INF/clases, pero no estoy seguro de que sea (a) posible o (b) realmente necesario como parte de esta solución.

¿Qué están haciendo otros para resolver esto?¿Tiene solución?

¡Gracias de antemano!

¿Fue útil?

Solución

Creo que estás buscando la solución descrita en Re:Implementación en caliente de WTP Tomcat con m2eclipse:

Si habilita la opción "Servir los módulos sin publicar", entonces se agrega un JAR especial al servidor TomCat que permite que el soporte TomCat en WTP controle el "ClassPath" de la aplicación web.Además, la utilidad Los proyectos no se ensamblan en frascos.En su lugar, la(s) carpeta(s) de salida de Java de Los proyectos de servicios públicos están incluidos en El "classpath" de la web aplicación, sirviendo eficazmente a la archivos de clase directamente.Si deshabilita la carga automática para el contexto, y se ejecuta en modo de depuración, los cambios que realice en Las clases pueden ser reemplazadas por código caliente para que El contexto no tiene que volver a cargarse.Yo cree que esto logrará lo que usted están buscando.

Para hacerlo:

  • Ve a la Servidor vista
  • Haga doble clic su servidor Tomcat para abrir la configuración del servidor
  • En Opciones del servidor, Selecciona el Servir módulos sin publicar opción
  • En Publicación, Selecciona el Nunca publicar automáticamente opción
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top