Проблема с миграцией WebLogic 12c с Unmarshalling JAXB
У нас есть приложение, работающее в настоящее время на WebLogic 10.3.5.0, и мы переносимся на WL 12.1.2.0.0. У нас возникают проблемы с Un-marshalling WS-звонками в другое приложение. Мы знакомы с ошибкой Marshalling при обновлении, однако, похоже, эта проблема не то же самое.
Что-то странное в том, что он отлично работает на серверах DEV/Test той же версии WL, но возвратит следующую ошибку при локальном развертывании (должно быть несоответствие настроек env/configuration?):
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'.]
Из сообщения об ошибке кажется, что он не распознает пространство имен xsi или что-то еще. Схема не изменилась с 10.3.5 и не должна быть корнем проблемы. У кого-нибудь есть идеи или даже начальное место для поиска?
Большое спасибо
Изменить: добавление web.xml и 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>
Ответы
Ответ 1
WebLogic 12c (WLS 12c) имеет свои собственные библиотеки jar, включая jaxb. Я уже работаю с этим сервером, и когда я хочу использовать JSF (другая библиотека, с которой работает WebLogic), я должен сообщить WLS 12c, что игнорируют его собственные библиотеки JSF и используют мои, включенные в war/ear.
Для этого вы можете использовать дескриптор weblogic.xml
внутри WEB-INF
. Здесь вы находитесь с одним из моих 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>
Конечно, вы включаете свою собственную зависимость jaxb в свою войну/ухо и говорите, что WLS 12c игнорирует свою библиотеку jaxb, используя значение java.xml.bind.*
для тега package-name
и, возможно, также для тега resource-name
.
Надеюсь, что это поможет.
Ответ 2
Я очень мало знаю об этом, и я не уверен, что это даже отдаленно корректно, но помещает xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" в экземпляр XML заставить его работать?
Ответ 3
У нас была аналогичная проблема: анализ сообщений о мылах работал в 10.3.x, но с ошибкой в 12.x. Проблема оказалась устаревшей xercesImpl.jar. Я сомневаюсь, что это то, что происходит с вами, но я подумал, что я разделяю опыт на всякий случай.
НЕТ, что устаревший файл xercesImpl.jar был включен в один из наших военных файлов, развернутых как библиотека, а не что-либо, поставляемое Oracle как часть WebLogic 12