He vivido en la oscuridad.

Friday February 24th 2006, 7:13 pm
Filed under: Java

Todos estos años desarrollando Web Applications, usando Tomcat y Eclipse (primero con el plugin Sysdeo, mas recientemente con el WTP). De esta manera puedo correr el Tomcat dentro de Eclipse, arrancarlo, pararlo y hacer debug como quiero, todo muy cómodo. Lo único malo era que cada vez que modificaba algo en una clase, tenia que reiniciar el contexto (Eclipse lo hace automáticamente, asique no me parecia tan malo), lo que llevaba unos segundos, mas lo que tardaba en iniciar Spring y/o Hibernate, mas reiniciar la aplicación desde el login otra vez. Todo esto no llevaba mas de un minuto, pero multiplicado por varias veces al dia, mas lo que uno puede distraerse mientras espera (a ver si agregaron algun update en LIA? Ufa, no.), me hacia perder un tiempito.

Hete aquí, que muchas veces cuando Eclipse restarteaba el contexto en Tomcat, aparecía una ventana con el mensaje Hot code replace failed, al que nunca le presté demasiada atención. Pero hoy, por alguna razón que desconozco (posiblemente por puro azar), una neurona se me conectó con otra, y relacioné Hot Code Replace con modificacion de mis clases, y me pregunté: por qué corcho tengo que restartear el contexto cada vez que modifico algo?
Me puse a investigar, y lo primero que encontré fue la opción Auto Reload en la configuración de Web Modules. La puse en false, y probé. Cambié algo en una clase, la grabé, la publiqué manualmente a Tomcat, recargué la página y funcionó!!! Pero en ese momento Eclipse me restarteó el contexto nuevamente.

Ahi me dí cuenta que el problema esta en Eclipse, que fuerza el restarteo del contexto sin importarle un cazzo de nada en cuanto detecta un cambio. Googleando un poco, encontré esto que me dió la pauta que WTP no hacia las cosas del todo bien. También ví que habia salido la versión 1.0.1 de WTP, asique actualicé. Volví a probar y ahora funciona bien (Eclipse no restartea el contexto), aunque no estoy seguro si fue por la 1.0.1 o alguna otra razón (como por ejemplo reiniciar Eclipse luego de haber cambiado la configuracion del Web Module).

De paso aprendí que el hot code replace funciona con limitaciones, por ejemplo, no soporta que se agreguen o quiten métodos de una clase, ni que se renombren. Pero para muchos casos es una bendición.
Asique he encontrado la luz, a partir de ahora todo sera mucho mejor, mi productividad aumentará de manera exponencial, la gente me sonreirá por la calle y probablemente me voy a ganar el Euromillions. Qué lindo!


| show comment »
1 Comment so far
Leave a comment



Leave a comment
Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(required)

(required)