Yo, soy asin Yo en el universo
El Weblog de ese insignificante ser llamado David Bonilla
M2012

20050426 Tuesday April 26, 2005

Crystal Reports XI y JAVA
Ya esta disponible Crystal Reports XI en español de los chicos de Business Objects. Esta herramienta no necesita presentacion. Todos sabemos que son los lideres en herramientas de reporting y que llegan donde desfallecen Jasper Reports y demas, los que no son tan conocidos son sus intentos por acercarse al mundo web.

Su primera aproximacion fue Crystal Enterprise X, una especie de "cataplasma" para Crystal Reports X que hacia de repositorio y front-end web de los informes generados en Crystal y tenia un motor que te generaba los mismos en DHTML, PDF, etc. No estaba mal, pero su arquitectura era un desastre, mezclando DLLs con JARs y lindezas por el estilo.
La sorpresa es que Crystal Enterprise desaparece como tal -a un año de su salida, ole tus huevos- y pasa a denominarse Crystal Reports XI Server. Esta informacion que facilito, sera util para los que ya trabajaban con estos sistemas y, como yo, desearan actualizarse y el cambio de nomenclatura les ha dejado un poco "descolocados".

Aun es pronto para evaluar que novedades -relativas al mundo JAVA- pueden aportar estas herramientas, pero, de momento, la instalacion de las aplicaciones WEB en un simple TOMCAT se ha simplificado notariamente. Supongo que las APIs para recuperar, programar, modificar y visualizar reports con JAVA tambien habran sido mejorados (ya desde la version X se permirte establecer como fuente de datos de un informe de Crystal una clase JAVA, por ejemplo).
Tambien es destacable que los licenciatarios de Crystal Enterprise Professional con soporte contratado no son actualizados al ya mencionado Crystal Reports XI Server sino a Business Objects Enterprise que, ademas de las funcionalidades de repositorio y front-end añade funcionalidades de Business Inteligence. Mención aparte merece el TORTUOSO PROCESO necesario para que te actualicen tus claves de licencia del anterior producto a este, pero eso merece ser contado en otro post.

Todos estos productos estan disponibles para descarga en la web de Business Objects asi que, si necesitais herramientas de reporting avanzado del tipo quiero un informe de ventas semanal que se realice automaticamente todos los lunes a las 9 de la mañana en formato PDF y se envie, tambien automaticamente, a n direcciones de correo ya sabeis de donde podeis tirar. Se integra con JAVA -aunque nadie haya dicho que sea facil- y... funciona !!!.

(2005-04-26 08:53:21.0) Permalink Comentarios [5]


20050404 Monday April 04, 2005

¿ Bugcito en log4j ?
Yo, keko y muchos mas extendemos log4j para ampliarlo y adaptarlo a nuestras aplicaciones. En concreto, yo no utilizo el objeto Logger sino un objeto Log que extiende del mismo y facilita la gestion de push y pop del mismo entre otras muchas cosas.

Para poder utilizar tu propia clase extendida de Logger tienes que crear una clase que herede de LogFactory y, en concreto, sobreescribir el metodo makeNewLoggerInstance que devuelve un Logger para que devuelva una nueva instancia de tu objeto extendido. Despues, cuando quieres instanciar un objeto extendido de Logger, en vez de hacer el clasico Logger.getLogger(String) utilizas Logger.getLogger(String, LogFactory) donde LogFactory es tu factoria extendida.
Como veis, sencillo y elegante, sin embargo algo obscuro se esconde bajo la superficie ;).

Normalmente, cuando se instancia un log, se califica el mismo con el nombre de la clase en la que se instancia (Ej. Logger.getLogger("com.foo.Bar")) aunque se puede calificar "solo" con el nombre del paquete, o con lo que queramos ("pepino", "jarroncho", etc.).

Nosotros, ademas de extender log4j tenemos un pequeño "cache" de logs que guarda las distintas instancias de Logger por eso, solemos calificar por paquetes en vez de por clases, se crea una instancia por paquete en vez de por cada una de las clases que contienen. Y AQUI PUEDE APARECER EL PROBLEMA.

Si te instancias un objeto Logger, calificandolo con el mismo nombre de la categoria que has puesto en tu log4.properties, te sale una CascotazoDeLaMuerteException. Es decir, imaginemos que en nuestro log4j.properties tenemos una categoria tal que asi:

- log4j.logger.com.varma.util.database=DEBUG

Bien, cuando yo me instancio mi objeto que hereda de Logger (en mi caso Log) puedo hacer esto:

        Log log = Log.getLog("com.varma.util.database.otropaquete");

o esto otro:

        Log log = Log.getLog("com.varma.util.database.Miclase");

Pero como haga esto, la aplicacion se me muere;

        Log log = Log.getLog("com.varma.util.database");

¿ Curioso ? ¿ Os ha pasado ?. La verdad es que me parece demasiado increible como para que sea cierto, seguiremos investigando.

(2005-04-04 13:22:17.0) Permalink Comentarios [6]



Archivos
Busca en el weblog
Navegacion
  Get Firefox
   Bitacoras.com
De donde venis