Páginas

viernes, 28 de octubre de 2011

Conflicto Hibernate y Jersey

Ultimamente he tenido que añadir la librería Jersey a un proyecto que se encuentra desarrollado con Struts e Hibernate. Para aquellos que no conozcan esta librería, decir que es una implementación de JAXB-WS que nos permite crear, de forma rápida y sencilla, Servicios WEB REST.

Una vez integrado jersey en el proyecto, cuando realicé mi primera petición al servicio, el cual me devolvía una entidad que se encontraba persistida en la base de datos, me elevó la siguiente excepción:

               java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V

¿Qué está pasando?
Se debe a un conflicto con la librería "asm". Hibernate, hace uso de la librería "cglib", que esta, a su vez hace uso de la librería "asm-1.5.3". Por otro lado, Jersey usa la librería "asm-3.5.1"

                                                    ¡¡¡¡CONFLICTO!!!

Si eliminamos la librería cglib, Jersey funcionará correctamente pero Hibernate NO. Y si eliminamos la librería asm, Hibernate funcionará correctamente pero Jersey NO.

SOLUCIÓN:
Para resolver este conflicto, debemos hacer uso de la librería "cglib-nodep.jar". Esta librería es una implementación de cglib, que incluye las clases de ASM demandadas por esta. Con lo cual, lo que tenemos que hacer, es reemplazar en nuestro proyecto la librería cglib por cglib-nodep y problema resuelto.

No hay comentarios:

Publicar un comentario