Проблема с миграцией 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