2010-08-04 10 views
6

Actualmente utilizamos MyEclipse con su integración incorporada Maven4MyEclipse y su soporte de servidor J2EE incorporado, pero queremos convertirlo a eclipse normal (específicamente Helios) para poder usar su instalación de 64 bits en Windows. (MyEclipse aún no es compatible con 64 bits en Windows.)¿Puede un proyecto m2eclipse/WTP de múltiples módulos obtener módulos de utilidad implementados en WEB-INF/classes?

Hasta ahora tengo un prototipo de eclipses Helios que funciona utilizando m2eclipse con el plugin WTP que implementa nuestra gran aplicación web a tomcat. La implementación consume un poco de 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 desplegaron en la carpeta WEB-INF/classes, por lo que mientras el servidor se estaba ejecutando, un cambio a una clase java en el IDE copiaría solo los archivos afectados al las clases WEB-INF/del servidor e intercambian la clase en caliente en la JVM y ... boom: cambian en vivo al servidor. EXCELENTE para la depuración.

En mi conversión helios, sin embargo, todos los proyectos dependientes se JARed y poner en WEB-INF/lib. Esto tiene la ventaja de parecerse a lo que parece nuestra imagen de producción real, pero el entorno de desarrollo se ve gravemente perjudicado por esto, ya que la capacidad de intercambio en caliente parece estar totalmente perdida. Aquí, si cambio una clase java en un proyecto dependiente, m2eclipse volverá a empaquetar el JAR, verá que la aplicación web desplegada no está sincronizada y volverá a publicar toda la aplicación. Esto no solo es un problema porque toda la aplicación web tiene que pasar por un ciclo (algo que francamente no funciona bien dado su tamaño y el gran tiempo de inicialización), sino que también es una desagradable demora en eclipse al hacer su reedición. (Para nuestra aplicación esto toma alrededor de un minuto o dos.)

Así que mi pregunta es esta: ¿hay alguna manera de obtener cambios dentro de los proyectos dependientes para intercambiar en caliente a la JVM en ejecución y reemplazar los archivos implementados sin esta desagradable pena de republicación ? Estoy asumiendo que esto significa desplegar esos archivos de clase en las clases WEB-INF/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? ¿Es solucionable?

¡Gracias de antemano!

Respuesta

5

pienso que usted está buscando la solución descrita en Re: WTP Tomcat hot deploy with m2eclipse:

Si se habilita el "Servir Módulos sin publicar", luego un frasco especial se añade al servidor Tomcat que permite el soporte de Tomcat en WTP para controlar el "classpath" de la aplicación web. Además, los proyectos de utilidad no se ensamblan en frascos. En su lugar, las carpetas de salida Java de los proyectos de utilidad se incluyen en el "classpath" de la aplicación web , que sirve de manera efectiva los 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 se pueden reemplazar por el código candente para que el contexto no tenga que volver a cargarse. Yo creo que esto logrará lo que usted está buscando.

Para ello:

  • ir al servidor vista
  • doble clic el servidor Tomcat para abrir la configuración del servidor
  • En Opciones del servidor, seleccione el Servir módulos sin publicar opción
  • En Publishing, seleccione el Nunca publicar automáticamente opción
+0

increíble! Eso es exactamente lo que estaba buscando. (Todas mis búsquedas de alguna manera se perdieron esto, aunque en mi defensa los foros de eclipse parecían estar desconectados desde este último domingo hasta hace muy poco, ¡así que todos mis éxitos de búsqueda en esa área fueron inaccesibles!) Gracias por los detalles, precisión y Respuesta rápida. ¡Esto funcionó maravillosamente! – Scott

+0

@Scott: De nada. Me alegro de que fue útil. –

+0

@Scott: Por cierto, puede aceptar esta respuesta si cree que fue útil (la marca verde debajo del contador de votos a la izquierda). –

Cuestiones relacionadas