Los métodos que exponía como servicio web estaban devolviendo un objeto básico con sus getters/setters y al invocarlo me daba el siguiente error:
‘org.apache.cxf.interceptor.Fault: Marshalling Error: ReturnObject is not known to this context’.
Trás mucho indagar por internet vi la solución. Gracias sobre todo al siguiente enlace. Resulta que hay una incompatibilidad entre la versión de la librería ASM que usa Hibernate (1.5.3) y la que necesita CXF (2.2.3).
Las dependencias de mi proyecto están gestionadas con Maven, por lo que la solución fue sencilla: Poner una cláusula de exclusion en la dependencia de hibernate para que no se traiga ASM ni CGLIB, añadir una dependencia con CGLIB-NODEP y dejar que las dependencias de CXF se traigan exactamente la versión de ASM que necesitan.
En el pom.xml quedaría así:
org.hibernate
hibernate
3.2.5.ga
compile
asm
asm
asm
asm-attrs
cglib
cglib
cglib
cglib-nodep
2.1_3
compile
org.apache.cxf
cxf-rt-frontend-jaxws
${cxf.version}
org.apache.cxf
cxf-rt-transports-http
${cxf.version}
Una vez realizados estos cambios, el servicio web funcionó como un tiro :-D
No hay comentarios:
Publicar un comentario