tutorial parse jaxbcontext example java oracle oracle10g jaxb classpath

parse - "Restricciones de cargador violadas al vincular javax/xml/namespace/clase QName" de webapp en Oracle 10g



xml a java (4)

¿Qué versión de Java estás usando? Las versiones más recientes se envían con esta clase en rt.jar.

Tenemos una aplicación web que se puede implementar en muchos servidores de aplicaciones, incluido Oracle 10g. En esa plataforma, sin embargo, estamos teniendo problemas de classpath. La aplicación web utiliza JAXB 2, pero Oracle 10g se envía con JAXB 1, y esto estaba causando errores. Para evitarlos configuramos Oracle para que prefiera clases en nuestra aplicación web, pero ahora estamos obteniendo el error anterior al intentar crear una instancia de un contexto JAXB.

Buscando la excepción "restricciones de cargador violadas", parece que se lanza cuando una clase que ha sido cargada con un cargador de clases intenta acceder a algo que es paquete privado en el mismo paquete pero cargado por un cargador de clases diferente. He intentado eliminar cualquier jar en nuestra aplicación web que incluya javax.xml.namespace.QName, y he verificado que es la instancia incluida en Oracle que se está recogiendo, pero el error aún se produce. ¿Algunas ideas?

(Este es un seguimiento de una pregunta anterior con respecto a 10g y JAXB 2.)


Esta clase es la mitad de las bibliotecas de WS Java que hay. Es muy fácil cargarlo desde varios cargadores de clase y luego compararlos, lo que provoca un LinkageError.

Una técnica efectiva (pero maza) para rastrear esto es modificar Classloader de la fuente de Java para volcar a qué jar está cargando esta clase en particular en el momento de la carga, y anteponer su bootclasspath con su versión modificada:

-Xbootclasspath / p: / ruta / a / hackedBin


Puede ser que no esté relacionado, pero recuerdo un problema que Weblogic tuvo con la misma clase. El motivo del problema fue el ID de serie cambiado de la clase (Sun lo cambió accidentalmente). La solución consistía en proporcionar un -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID = 1.0 en la JVM.

¿Podría ser el mismo problema, solo se informa incorrectamente? Intentalo.

Mira aquí: http://forums.bea.com/thread.jspa?threadID=600014563


¿Puedes actualizar el jar JAXB debajo de la carpeta lib del servidor de la aplicación?