2015-08-24 38 views
10

Mamy uruchomioną aplikację na WebLogic 10.3.5.0 i migrujemy do WL 12.1.2.0.0. Występują problemy z wywoływaniem WS z nie-rozgłośni do innej aplikacji. Podczas aktualizacji uaktualniliśmy błąd , jednak wygląda na to, że problem nie jest taki sam.WebLogic 12c Problem z migracją za pomocą unmarshallingu JAXB

Coś dziwne, aby pamiętać, jest to, że działa poprawnie na serwerach dev/test tej samej wersji WL, ale powróci następujący błąd, gdy wdrażane lokalnie (musi być ENV/konfiguracja ustawień niedopasowanie):

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'.] 

Z komunikatu o błędzie wydaje się, że nie rozpoznaje przestrzeni nazw xsi lub czegoś podobnego. Schemat nie zmienił się z wersji 10.3.5 i nie powinien być źródłem problemu. Ktoś ma jakieś pomysły, a nawet początkowe miejsce do patrzenia?

Dziękujemy

Edycja: Dodawanie web.xml i 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> 
+0

Tak, istnieją różnice schematu między 10,3 i 12c. Jak wygląda twój plik 'weblogic-application.xml'? Nie dołączaj żadnych odniesień do 'bea.com' –

+0

Nie mamy' weblogic-application.xml'. Czy to może być część problemu? – jmeanor

+0

Zmagaliśmy się z niektórymi informacjami nagłówkowymi w naszych plikach web.xml, weblogic-application.xml, itp. Czy możesz opublikować zawartość plików xml twojej aplikacji? –

Odpowiedz

1

WebLogic 12c (WLS 12c) ma własne biblioteki jar, w tym i jaxb. Pracuję już z tym serwerem, a kiedy chcę użyć JSF (innej biblioteki, do której dołącza WebLogic) muszę powiedzieć WLS 12c, że zignoruje własne biblioteki JSF i używa mojego, zawartego w war/ear.

Możesz użyć deskryptora weblogic.xml wewnątrz folderu WEB-INF, aby to osiągnąć. Tutaj jesteś jednym z moich 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> 

oczywiście obejmować swoją zależność JAXB do swojej wojennej/ucha i powiedz WLS 12c ignoruje swoją bibliotekę JAXB, używając java.xml.bind.* wartość package-name tagu i być może również dla tagu resource-name .

Mam nadzieję, że to pomaga.

+0

Myślę, że to może być problem. Używamy 'org.springframework.oxm.jaxb.Jaxb2Marshaller'. Czy przypadkiem nie wiesz dokładnie, jak go tutaj dodać? Próbowałem dodać zmienne nazwy klasy w pakietach aplikacji, ale wydaje się, że nie ma ona żadnego efektu. Dzięki! – jmeanor

+0

Cóż, myślę, że się pomyliłem. Właśnie użyłem jarscan do przeszukiwania bibliotek WLS ('/ opt/weblogic/Oracle/Middleware/Oracle_Home/wlserver/server/lib') i nie znalazłem Jaxb2Marshaller. Potem szukałem, jakie klasy jaxb są włączone do WLS i znalazłem tylko trzy, które nie są związane z twoim problemem, więc myślę, że moja odpowiedź nie jest związana z twoim problemem. – malaguna

0

wiem bardzo mało na ten temat i nie jestem pewien, czy jest to nawet poprawne zdalnie, ale czy umieszczanie xmlns: xsi = "http://www.w3.org/2001/XMLSchema -instance "w instancji XML sprawiają, że działa?

+0

Jest już w odpowiedzi XML.'' – jmeanor

0

Mieliśmy podobny problem: analizowanie wiadomości mydła działało w wersji 10.3.x, ale kończyło się niepowodzeniem w 12.x. Problem okazał się przestarzały xercesImpl.jar. Wątpię, że to właśnie z tobą dzieje, ale pomyślałem, że podzielę się tym doświadczeniem na wszelki wypadek.

pamiętać, że nieaktualne xercesImpl.jar został zawarty w jednym z naszych plików wojennych wdrożonych jako biblioteka, nic nie dostarczonym przez firmę Oracle jako część WebLogic 12