Toplink essentials y JBoss EAP 6

TopLink es un paquete de Mapeo objeto-relacional (ORM) para desarrolladores Java. Provee un marco de trabajo para almacenar objetos Java en una base de datos relacional, o convertir objetos Java a archivos XML.

Cuando tratas de utilizar Toplink como herramienta ORM en tu aplicación web, configuras tu archivo persistence.xml, creas tu datasource en tu servidor JBoss EAP 6 y comienzas a desarrollar tus operaciones CRUD hacia la base de datos, le dejas la tarea del manejo de transacciones al motor de JBoss EAP 6, ejecutas operaciones de consulta y todo funciona correctamente entonces llegas al punto de probar tus operaciones Create, Delete o Update verificas que la aplicación no arroje ninguna excepción pero después te das cuenta que al ejecutar cualquiera de las operaciones anteriores estas no persisten en la base de datos y comienzas a buscar la causa del por que ocurre este escenario, verificas que tu conexión a la BD provista por el servidor de aplicaciones este correcta, ejecutas la operación sql en algún cliente y esta se realiza de manera correcta, pero al ejecutarla en tu aplicación sigue sin persistir los cambios.

Pues bien esto fue lo que me paso al realizar una migración de aplicaciones de Glassfish a JBoss EAP 6 en donde se esta utilizando como API de ORM Toplink essentials específicamente la versión 2.1.x, después de un par de días de estar analizando lo que sucedía al realizar operaciones Create,Update y Delete, me di cuenta que la implementación para JBoss EAP había sido eliminada como consecuencia de la adquisición de Toplink por parte de Oracle, es decir, Oracle se encargo de eliminar la compatibilidad con el Transaction Manager de JBoss EAP y  cualquier otro servidor de aplicaciones exceptuando claro los de su marca como Glassfish y OAS en ese momento.

Después de buscar en Google y ver que después de 5 años Oracle dono el código de Toplink a la fundación Eclipse y lo convirtió en el proyecto EclipseLink en donde se añadía nuevamente la compatibilidad con servidores de aplicaciones como Websphere, Weblogic, JBoss EAP, me di a la tarea de tomar la implementación de EclipseLink y tomar los objetos que permitían la conexión hacia JBoss EAP y las añadí al código fuente de TopLink Essentials (v2.1.60f) generando con esto una librería personalizada pero ya con la opción de conectarse al Transaction Manager de JBoss EAP.

Se preguntaran por que no tome la implementación completa de EclipseLink bueno después de analizar la aplicación a migrar existían varias entidades que estaban utilizando tags e implementaciones propias de TopLink Essentials después de algunas pruebas con EclipseLink, no se logro hacerla funcionar al 100% por tanto eliminamos esta posibilidad y tomamos el camino de añadir la implementación de JBoss con Toplink.

La librería esta disponible en mi repositorio de git la cual se encuentra lista para ser construida con la herramienta Maven, cuando tengan disponible la librería agreguenla a su classpath para poderla usar.

Despues en su archivo persistence.xml añadan la siguiente linea:

<property name="toplink.target-server" value="JBoss"/>

Con esta opción Toplink Essentials realizara el manejo de transacciones con el Transaction Manager de JBoss EAP.

Es todo por ahora y recuerden dejar sus comentarios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s