Web Services CXF: Errores de versión con jaxb-api

Si tenemos java 6 y estamos haciendo web services, con apache CXF por ejemplo, y obtenemos errores extraños con la versión de Jaxb-api, como estos

Exception in thread "main" java.lang.LinkageError: JAXB 2.0 API is being loaded
from the bootstrap classloader, but this RI (from jar:file:/D:/work/jaxws-ri/lib/jaxb-impl.jar!
/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API.
Use the endorsed directory mechanism to place jaxb-api.jar

 

es que estamos teniendo problemas con la versión de determinadas librerías. El JDK tiene incluidas la versión 2.0 de las librerías JAXB 2.0 y JAX-WS 2.0, mientras que nuestra versión de Web Services (apache CXF por ejemplo), necesita la 2.1 (según la excepción). La forma de solucionar esto es poner las librerías JAX-WS 2.1 y JAXB 2.1 en algún sitio de forma que se encuentren antes que las de defecto del JDK.

Si nuestra aplicación es una aplicación de escritorio, debemos colocarlas en los directorios JDK_HOME/lib/endorsed o JDK_HOME/jre/lib/endorsed, según qué estemos usando.

Si nuestra aplicación corre en un contenedor web de aplicaciones, como Apache Tomcat, debemos colocarla en el sitio que nuestro servidor web tenga indicado para ello. En el caso de Tomcat, sería en CATALINA_HOME/endorsed (debemos crear el directorio si no lo está).

Existe también forma de indicarle a java dónde están los directorios "endorsed" en vez de usar los de defecto, de forma que no tendremos que tocar los directorios de instalación de Java. Podremos así meter esos dos jar en un directorio cualquiera en nuestro ordenador e indicarle a Java en el momento de arrancar la máquina virtual, que ese directorio hace de "endorsed"

java -Djava.endorsed.dirs=UN_DIRECTORIO_CUALQUIERA …

 

que sería válido tanto para aplicaciones de escritorio como para Tomcat.

 Referencias:

http://www.java.net/external?url=http://java.sun.com/j2se/1.5.0/docs/guide/standards/

http://weblogs.java.net/blog/ramapulavarthi/archive/2007/01/problems_using.html

Esta entrada ha sido publicada en CXF y etiquetada como , , , , . Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.