Takipi en OSGi - Mi caso de prueba
Llevaba ya tiempo trabajando en un PoC de Takipi y llegaba una prueba de fuego, probar Takipi dentro de OSGi...
-- OSGi --
Para el que no conozca OSGi (aunque no lo creais, en vuestras manos de programador habéis pasado alguna vez sobre él, ya que Eclipse está basado en esta especificación...):
OSGi nos permitirá en una máquina virtual Java poder tener distintos classpath. He empezado duro ¡eh!
Básicamente, se intenta que nuestras aplicaciones estén lo más modularizadas posibles, por ejemplo, imaginaos un coche...el volante podrÃa ser "programado" de manera independiente a las puertas, pero cuando el coche quede totalmente ensamblado, sà que existirá una relación entre ambas piezas, definidas en un "todo" que denominamos coche. De esta forma, cada "pieza", si nos lo llevamos a Java, es un Jar o un conjunto de ellos.
Jugando en nuestro modelo habitual, sólo tenemos un classpath, imagÃnate que pones dos JARs distintos que hacen de "ruedas" del coche en la misma aplicación...tu coche tiene un problema: ¿qué ruedas utiliza?
Si ahora jugamos dentro de la especificación OSGÃ, los "coches" que estén dentro de OSGi, podrán configurar qué versión de "ruedas", "puertas", "motor", pudiendo existir varias distintas versiones en ese momento dentro del sistema.
-- Fin OSGi --
Después de una introducción al mundo OSGi, ahora toca explicar cuales fueron las pruebas sobre Takipi, siendo nuestro sistema un contenedor con muchas (decenas) piezas lanzadas en tiempo real: nuestras, de otros equipos, librerÃas externas, propias de OSGi, etc.
Mi curiosidad estaba en ciertas excepciones que aparecÃan al arrancar la aplicación OSGi que ya por costumbre se decÃa "aparecen, no rompen nada, no nos importan". Me morÃa por saber el porqué de esas trazas, ya que bajaban bastantes niveles hacia abajo en el que finalmente te perdÃas...
¡¡¡Lancemos Takipi de una vez!!!
- Primer paso: arrancó la aplicación, ningún problema lanzando Takipi en un contenedor tan inmenso.
- Segundo paso: aparece la ya tan acostumbrada excepción en las trazas...
- Tercer paso: ¡bingo! Takipi empieza a procesar la excepción desde la Web (como sabéis, este proceso suele ser algo lento, y más que me esperaba yo al estar dentro de OSGi). No querÃa apagar ni la aplicación porque pensaba que se podÃa perder toda la carga...estaba ansioso por saber que estaba pasando.
...pues finalmente dimos con el problema: bajo unos jobs que se lanzaban al principio de arrancar la aplicación, para comprobar el estado de la base de datos, se olvidó modificar el nombre de la tabla a la que se quiere testear, por lo que tiraba al nombre "TEST", algo que no existe en esa base de datos.
El contenido de las variables nos ayudó, sobre el propio código, a descifrar que estaba pasando realmente en la excepción que nos aparecÃa de manera habitual sin mucha información adicional.
Os animo pues, a que os descarguéis Takipi https://www.takipi.com y probéis su servicio y herramientas que son muy útiles para la detección de Excepciones.