java - Problema de migración de WebLogic 12c con Unmarshalling JAXB
weblogic12c (3)
Tenemos una aplicación que se ejecuta actualmente en WebLogic 10.3.5.0 y estamos migrando a WL 12.1.2.0.0. Estamos experimentando problemas con Desorganizar las llamadas de WS a otra aplicación. Estamos familiarizados con el error de Marshalling al actualizar, sin embargo, parece que este problema no es el mismo.
Algo extraño de notar es que funciona bien en los servidores DEV / Test de la misma versión WL, pero devolverá el siguiente error cuando se implemente localmente (¿debe haber una discrepancia de configuración de env / configuración?):
JAXB unmarshalling exception: null; nested exception is javax.xml.bind.UnmarshalException - with linked exception: [org.xml.sax.SAXParseException; cvc-complex-type.3.2.2: Attribute ''xsi:nil'' is not allowed to appear in element ''error''.]
A partir del mensaje de error, parece que no reconoce el espacio de nombres xsi o algo así. El esquema no ha cambiado desde 10.3.5 y no debería ser la raíz del problema. ¿Alguien tiene alguna idea o incluso un punto de partida para mirar?
Muchas gracias
Editar: Agregar web.xml y weblogic.xml
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="cpc-mi" version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
...
</web-app>
weblogic.xml
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd
http://xmlns.oracle.com/weblogic/weblogic-web-app
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd"
xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
</weblogic-web-app>
Sé muy poco sobre esto y no estoy seguro de si esto es remotamente correcto, pero poner xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" en la instancia XML lo hace funcionar ?
WebLogic 12c (WLS 12c) tiene sus propias bibliotecas jar incluidas y jaxb. Ya trabajo con este servidor, y cuando quiero usar JSF (otra biblioteca con la que viene WebLogic) tengo que decirle a WLS 12c que ignore sus propias bibliotecas JSF y use las mías, incluidas en war / ear.
Puede usar el descriptor weblogic.xml
dentro WEB-INF
carpeta WEB-INF
para lograr esto. Aquí estás con uno de mis weblogic.xml
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
<container-descriptor>
<prefer-application-packages>
<package-name>javax.faces.*</package-name>
<package-name>com.sun.faces.*</package-name>
<package-name>com.bea.faces.*</package-name>
<package-name>org.apache.commons.io.*</package-name>
<package-name>org.apache.commons.fileupload.*</package-name>
</prefer-application-packages>
<prefer-application-resources>
<resource-name>javax.faces.*</resource-name>
<resource-name>com.sun.faces.*</resource-name>
<resource-name>com.bea.faces.*</resource-name>
<resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
<resource-name>META-INF/services/com.sun.faces.*</resource-name>
</prefer-application-resources>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>
</weblogic-web-app>
Por supuesto, incluye su propia dependencia jaxb en su war / ear y dice que WLS 12c ignora su biblioteca jaxb, usando java.xml.bind.*
para la etiqueta package-name
y tal vez también para la etiqueta resource-name
.
Espero eso ayude.
Tuvimos un problema similar: el análisis de los mensajes soap funcionaba en 10.3.x, pero fallaba en 12.x. El problema resultó ser un xercesImpl.jar obsoleto. Dudo que esto sea lo que está pasando contigo, pero pensé que compartiría la experiencia por las dudas.
NOte que el xercesImpl.jar obsoleto se incluyó en uno de nuestros archivos war implementado como una biblioteca, NO nada enviado por Oracle como parte de WebLogic 12