You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Howard Points <ho...@aa.com> on 2009/12/11 17:05:14 UTC

xsd:any causing SimpleDeserializer error in MessageSenderInterceptor

I have one web service calling another (ws1 calling ws2). The WSDLs are
similar but different. Many of the input element values from the input of
ws1 are mapped directly to ws2 element values. One element is an xsd:any in
both WSDLs:
			    <xsd:complexType>
			        <xsd:sequence>
	        	            <xsd:any namespace="##any" processContents="skip"/>
	        	        </xsd:sequence>
	        	    </xsd:complexType>

The "In" interceptors for ws1 handle this fine. The ws1 implementation code
handles mapping this element value with no problem. I set a breakpoint in an
"Out" logger interceptor to ws2 and the output SOAP message looks OK. The
last inceptor before the message is sent to ws2 breaks with the following
error. Does anyone know what might be going wrong? I am using CxF 2.2.4.


Thanks,
Howard

Caused by: org.apache.cxf.binding.soap.SoapFault: org.xml.sax.SAXException:
WSWS3084E: Error: SimpleDeserializer encountered a child element, which is
NOT expected, in something it was trying to deserialize. Message being
parsed: 
	at
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:70)
	at
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35)
	at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
	at
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:96)
	at
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:65)
	at
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
	at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:449)
	at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1996)
	at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1832)
	at
org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
	at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:159)
	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:591)
	at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
	at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242)
	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178)
	... 65 more
-- 
View this message in context: http://old.nabble.com/xsd%3Aany-causing-SimpleDeserializer-error-in-MessageSenderInterceptor-tp26746834p26746834.html
Sent from the cxf-user mailing list archive at Nabble.com.


Re: xsd:any causing SimpleDeserializer error in MessageSenderInterceptor

Posted by Daniel Kulp <dk...@apache.org>.
This is a fault being sent back from the other service.   Thus, something in 
the outgoing soap message is not what it expects.   You would need to log that 
soap message or use wireshark or something to capture it and compare it to 
what it's expecting.   

Dan


On Fri December 11 2009 11:05:14 am Howard Points wrote:
> I have one web service calling another (ws1 calling ws2). The WSDLs are
> similar but different. Many of the input element values from the input of
> ws1 are mapped directly to ws2 element values. One element is an xsd:any in
> both WSDLs:
> 			    <xsd:complexType>
> 			        <xsd:sequence>
> 	        	            <xsd:any namespace="##any" 
processContents="skip"/>
> 	        	        </xsd:sequence>
> 	        	    </xsd:complexType>
> 
> The "In" interceptors for ws1 handle this fine. The ws1 implementation code
> handles mapping this element value with no problem. I set a breakpoint in
>  an "Out" logger interceptor to ws2 and the output SOAP message looks OK.
>  The last inceptor before the message is sent to ws2 breaks with the
>  following error. Does anyone know what might be going wrong? I am using
>  CxF 2.2.4.
> 
> 
> Thanks,
> Howard
> 
> Caused by: org.apache.cxf.binding.soap.SoapFault: org.xml.sax.SAXException:
> WSWS3084E: Error: SimpleDeserializer encountered a child element, which is
> NOT expected, in something it was trying to deserialize. Message being
> parsed:
> 	at
> org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMess
> age(Soap11FaultInInterceptor.java:70) at
> org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMess
> age(Soap11FaultInInterceptor.java:35) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:221) at
> org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(Ab
> stractFaultChainInitiatorObserver.java:96) at
> org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage
> (CheckFaultInterceptor.java:65) at
> org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage
> (CheckFaultInterceptor.java:34) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:221) at
>  org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:449) at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleRespons
> e(HTTPConduit.java:1996) at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPCon
> duit.java:1832) at
> org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputSt
> ream.java:47) at
>  org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:159) at
>  org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at
>  org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:591) at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInte
> rceptor.handleMessage(MessageSenderInterceptor.java:62) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:221) at
>  org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296) at
>  org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242) at
>  org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at
>  org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178)
>  ... 65 more
> 

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog