
Monday February 07, 2005
Pasando de Struts 1.0.X a 1.1 y no morir en el intento.
Hace poco quise hacer unos retoques en una utilityde mi proyecto relacionada con la gestion de errores. Basicamente, queria utilizar los mensajes de error con parametros que proporciona el framework Struts y su clase ActionError, para que admitiera mensajes con un numero ilimitado de parametros.
El caso es que la version de Struts con la que trabajamos era la version 1.0.2 y, en esta version, la API de Struts te da la posibilidad de trabajar con 1,2,3 y 4 parametros pero no mas asi que... ¡Que mejor que esta ocasion para actualizarse!. Craso Error.
A los actualizadores compulsivos, a los que nunca leen las Release Notes (como yo) y a los echaos p'alante... ¡¡¡ QUIETORRRL !!!. La actualizacion no es tan sencilla como actualizar un jar por otro y puede ser bastante traumatica.
Espero que esta enumeracion de "chinitas" pueda servirle a alguien que tenga que pasar por tan traumatica experiencia:
¿ Donde esta mi jar y quien es esa gente ?
¿ Te esperas un struts.jar sencillo y facilito ? Ayyyy alma candida... a partir de la version 1.1, los de JAKARTA decidieron que habia mucho (pero mucho) utilizable dentro de Struts y ademas utilizado por muchos de sus otros proyectos. Para limitar la dependencia de estos de Struts se sacaron un conjunto de librerias de utilidades del "antiguo" Struts. Habian nacido las librerias Jakarta Commons.
Asi que, ademas de el jar de Struts ya os estais descargando e importando todas estas porque, sino, Struts no os va ni a compilar. Es como las lentejas. Si quieres lo tomas y, si no, lo dejas.
Struts es mio y depreco lo que me sale de los c******
Pues si. Y eso ha debido pensar algun guru de JAKARTA... "y lo que no quiero deprecar pero me molesta lo elimino" ... y living la vida loca. Asi que, si habeis hecho un uso mas o menos exhaustivo de Struts ya os podeis preparar para sustituir y rebuscar por la API hasta que deis con algo parecido.
Tu DataSource te lo picas tu.
Antes Struts daba soporte a un conjunto de utilidades para el acceso a Base de Datos. Ahora ya no. Y, como dicen las feministas, NO MEANS NO. No esta deprecado, ni desactualizado, ni desfasado... simplemente NO esta. Lo han quitado por si te entran tentaciones de seguir utilizandolo. En concreto, nosotros hutilizabamos el GenericDataSource y la clasecita, una vez extendida y retocada nos ha dado mucho juego. Afortunadamente, la implementacion de la misma es monolitica y hereda de javax.sql.Datasource y poco mas asi que, si lo deseais, podeis meter la clase directamente en vuestro CLASSPATH y se soluciono el problema.
LOG4J utilizaste... la cagaste
Y esto es lo mejor... Struts deja de funcionar porque no se loga bien con... ¡ tu log4j !. Si amigos, es lo bueno de utilizar la libreria Commons Logging que como encuentre log4j en tu CLASSPATH va y lo utiliza, y claro... tu que tenias tu log4j bien configurado mediante tu properties en un directorio fuera de tu CLASSPATH (porque claro, tus properties los quieres dejar fuera de un supuesto y futuro .war para que puedan ser modificados en caliente) y te curras tu Factoria de Logs que trinca el properties con un configureAndWatch y te has montado el invento del siglo y... ahora resulta que viene Struts, que se carga antes que tu aplicacion y UTILIZA PORQUE SI el log4j y... este todavia no se ha configurado y CASCOTAZO. Asi que, o te pones a hacer reingenieria inversa y averiguas como arreglas el embolao o te das cuenta de que tienes que meter el log4j en el CLASSPATH para que Struts sencillamente cargue. En dos palabras: IN-CREIBLE.
Como conclusion, que cambiar de Struts 1.0.X a 1.1 puede ser bueno pero, desde luego, ni bonito ni barato. Aun con todo, es una decision muy a tomar en cuenta porque la version 1.1 ha sido la gran revolucion a nivel de Struts y, una vez migrado a esta, no hay coste para cambiar a versiones posteriores como la 1.2. No, no me arrepiento de todo el embolao al que me han arrastrado pero, la verdad, siendo Struts un framework tan extensamente utilizado, el cambio de version me ha parecido chapuceril, agresivo y complicado. Quizas todo sea culpa mia, quizas era mi obligacion estar al tanto de todo lo que suponia cambiar de version pero, la verdad, los diseñadores de JAKARTA me tenian muy bien acostumbrado. De momento yo, con la version 1.1 voy a aguantar tooooodo lo que pueda.
(2005-02-07 21:00:45.0)
Permalink
MENUDO PLANCHAZO
Sin comentarios. Adivinar quien es el Jefe de Nacho ;)
(2005-02-07 18:44:54.0)
Permalink
|