2012-11-05 41 views
1
cxf version - 2.2.3 
spring version - 2.5.5 

input xml - 

<OTA_HotelAvailRQ EchoToken="ABC123" TimeStamp="2012-01-01T19:00:00" PrimaryLangID="en-us" 
     xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 ../Schemas/OTA_HotelAvailRQ.xsd" 
     Version="6.000" xmlns="http://www.opentravel.org/OTA/2003/05" 
     xmlxsi="http://www.w3.org/2001/XMLSchema-instance"> 
    .<br> 
    . . <br> 
    . . .<br> 
    . .<br> 
    .<br> 
</OTA_HotelAvailRQ> 

觀察到對象 - 當xsi:schemaLocation被移除時,會發生解組無縫;然而,沒有一個選項去掉xsi:schemaLocation的xsi:在的schemaLocation請求XML引起handleJAXBException而umarshalling XML與CXF + JAX-RS

的錯誤跟蹤 -

Nov 5, 2012 2:26:50 PM org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleJAXBException 
WARNING: javax.xml.bind.UnmarshalException 
- with linked exception: 
[org.xml.sax.SAXParseException: The prefix "xsi" for attribute "xsi:schemaLocation" associated with an element type "OTA_HotelAvailRQ" is not bound.] 
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:315) 
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:514) 
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:215) 
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:184) 
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137) 
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:184) 
    at org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:193) 
    at org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:176) 
    at org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:150) 
    at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:861) 
    at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:494) 
    at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:459) 
    at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:204) 
    at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:65) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) 
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:104) 
    at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:99) 
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:452) 
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:159) 
    at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:220) 
    at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:153) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    at org.apache.cxf.transport.servlet.AbstractCXFServlet.service(AbstractCXFServlet.java:211) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877) 
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594) 
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: org.xml.sax.SAXParseException: The prefix "xsi" for attribute "xsi:schemaLocation" associated with an element type "OTA_HotelAvailRQ" is not bound. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:334) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:626) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3104) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:921) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) 
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211) 
    ... 32 more 

Nov 5, 2012 2:26:50 PM org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse 
WARNING: WebApplicationException has been caught : The prefix "xsi" for attribute "xsi:schemaLocation" associated with an element type "OTA_HotelAvailRQ" is not bound. 

線XSI:的schemaLocation =「opentravel.org/OTA/2003/05 ../Schemas/OTA_HotelAvailRQ.xsd 「導致瞭解組的期望。有沒有辦法忽略或繞過這個xsi:schemaLocation?

+1

你的問題是什麼,現在還不清楚。 – dove

+0

行xsi:schemaLocation =「http://www.opentravel.org/OTA/2003/05 ../Schemas/OTA_HotelAvailRQ.xsd」導致unmarshalling期待。有沒有辦法忽略或繞過這個xsi:schemaLocation? – user1799649

+0

我沒有一個答案,但你可以把你的問題的結尾,讓任何人試圖閱讀更清晰。 – dove

回答

2

xmlxsi = 「http://www.w3.org/2001/XMLSchema-instance」

是錯誤的。這可能應該是xmlns:xsi =「http://www.w3.org/2001/XMLSchema-instance」來正確定義xsi前綴。