I am running in to an issue when a Java 5 client using JWSDP is sending
a request to my CXF (2.1.1 SNAPSHOT) service. I get an exception,
Unmarshalling Error: UndeclaredPrefix: Cannot resolve 'ns0:Xxx' as a
QName: the prefix 'ns0' is not declared, as shown below. The type is an
extension from a base type. I am assuming this is why "xsi:type" is
generated by the client since it is not used in other places.
Is there a reason why CXF is having trouble with this?
Type From Schema:
<xs:complexType name="Xxx">
<xs:complexContent>
<xs:extension base="tns:Base">
<xs:sequence>
<xs:element
minOccurs="1"
name="a"
nillable="false" type="xs:boolean" />
<xs:element
minOccurs="1"
name="b"
nillable="false" type="xs:boolean" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
------------------------------------------------------------------------
------------------------------------------------------------------------
-----
XML Generated:
<?xml version="1.0"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns0="http://mdc.com">
<env:Body>
<ns0:createXxxRequest>
<ns0:xxx xsi:type="ns0:Xxx">
<ns0:name>xxx</ns0:name>
</ns0:xxx>
</ns0:createXxxRequest>
</env:Body>
</env:Envelope>
------------------------------------------------------------------------
------------------------------------------------------------------------
-----
Exception In Log:
INFO: Interceptor has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Unmarshalling Error: UndeclaredPrefix:
Cannot resolve 'ns0:Xxx' as a QName: the prefix 'ns0' is not declared.
at
org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.jav
a:643)
at
org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.jav
a:555)
at
org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:64)
at
org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLite
ralInInterceptor.java:183)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorC
hain.java:221)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiati
onObserver.java:78)
at
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestin
ation.java:92)
at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(Ser
vletController.java:279)
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletControl
ler.java:161)
at
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFSe
rvlet.java:174)
at
org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFSe
rvlet.java:152)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilte
r.java:96)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:178)
at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAs
sociationValve.java:175)
at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.j
ava:74)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:105)
at
org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnecti
onValve.java:156)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:1
48)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:86
9)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.proc
essConnection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint
.java:527)
at
org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorker
Thread.java:112)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException: UndeclaredPrefix: Cannot resolve
'ns0:Xxx' as a QName: the prefix 'ns0' is not declared.]
at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamEx
ception(UnmarshallerImpl.java:396)
at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unm
arshallerImpl.java:335)
at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Unma
rshallerImpl.java:312)
at
org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.jav
a:628)
... 31 more
Caused by: org.xml.sax.SAXParseException: UndeclaredPrefix: Cannot
resolve 'ns0:Xxx' as a QName: the prefix 'ns0' is not declared.
at
org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unkno
wn Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown
Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown
Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown
Source)
at
org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportErro
r(Unknown Source)
at
org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown
Source)
at
org.apache.xerces.impl.xs.XMLSchemaValidator.getAndCheckXsiType(Unknown
Source)
at
org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown
Source)
at
org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown
Source)
at
org.apache.xerces.jaxp.validation.ValidatorHandlerImpl.startElement(Unkn
own Source)
at
com.sun.xml.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.startEle
ment(ValidatingUnmarshaller.java:73)
at
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStart
Element(StAXStreamConnector.java:238)
at
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAX
StreamConnector.java:172)
at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unm
arshallerImpl.java:333)
... 33 more