The line:

     <property name="bindingId"
> value="http://apache.org/cxf/binding/http"; />

is configuring it as the xml/http binding, not SOAP.  Thus, the soap related 
interceptors won't work.

Dan


On Wednesday 15 December 2010 1:24:58 pm Juan Pablo Pizarro wrote:
> Hello All, I'm trying to call a web service with Spring+CXF. The result is
> a exception java.lang.ClassCastException:
> org.apache.cxf.message.XMLMessage cannot be cast to
> org.apache.cxf.binding.soap.SoapMessage. My configuration is:
> 
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans";
>     xmlns:jaxws="http://cxf.apache.org/jaxws"; xmlns:xsi="
> http://www.w3.org/2001/XMLSchema-instance";
>     xsi:schemaLocation="http://www.springframework.org/schema/beans
>     http://www.springframework.org/schema/beans/spring-beans.xsd
>     http://cxf.apache.org/jaxws
>     http://cxf.apache.org/schemas/jaxws.xsd";>
> 
>     <import resource="classpath:META-INF/cxf/cxf.xml" />
>     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
>     <import
> resource="classpath:META-INF/cxf/cxf-extension-http-binding.xml" />
>     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
> 
>     <bean id="wsclient" class="org.tempuri.IStock" factory-bean="wsFactory"
>         factory-method="create" />
> 
>     <bean id="wsFactory"
> class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property
> name="serviceClass" value="org.tempuri.IStock" /> <property name="address"
>             value="http://wss.aduanas.gub.uy/LuciaWsSecurity/Stock.svc"; />
>         <property name="outInterceptors">
>             <list>
>                 <bean
> class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor" />
>                 <ref bean="wss4jOutInterceptor" />
>             </list>
>         </property>
>         <property name="bindingId"
> value="http://apache.org/cxf/binding/http"; />
>         <property name="transportId" value="
> http://schemas.xmlsoap.org/wsdl/soap/http"; />
>     </bean>
> 
>     <bean id="wss4jOutInterceptor"
> class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
>         <constructor-arg>
>             <map>
>                 <entry key="action" value="Signature Timestamp" />
>                 <entry key="signaturePropFile"
> value="Client_Sign.properties" />
>                 <entry key="user"
> value="le-60dca1be-6392-48b3-bbc2-0dfb1ab41d25" />
>                 <entry key="passwordCallbackRef">
>                     <ref bean="signaturePwdCallback" />
>                 </entry>
>             </map>
>         </constructor-arg>
>     </bean>
> 
>     <bean id="signaturePwdCallback"
> class="org.jpp.ws.client.ClientCallback" />
> </beans>
> 
> 
> Somebody knows the reason? There are some example/tutorial to avoid the
> error?
> 
> 
> Thanks!!
> 
> 
> 
> 
> WARNING: Interceptor for {
> http://tempuri.org/}IStockService#{http://tempuri.org/}MensajeStock has
> thrown exception, unwinding now
> java.lang.ClassCastException: org.apache.cxf.message.XMLMessage cannot be
> cast to org.apache.cxf.binding.soap.SoapMessage
>     at
> org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor.handleMessage(SAAJOutIn
> terceptor.java:70) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:247) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265) at
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
>     at $Proxy36.mensajeStock(Unknown Source)
>     at org.jpp.ws.client.Client.main(Client.java:65)
> Dec 15, 2010 4:19:51 PM org.apache.cxf.phase.PhaseInterceptorChain unwind
> WARNING: Exception in handleFault on interceptor
> org.apache.cxf.binding.soap.saaj.saajoutintercep...@57f7cdc7
> java.lang.ClassCastException: org.apache.cxf.message.XMLMessage cannot be
> cast to org.apache.cxf.binding.soap.SoapMessage
>     at
> org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor.handleFault(SAAJOutInte
> rceptor.java:70) at
> org.apache.cxf.phase.PhaseInterceptorChain.unwind(PhaseInterceptorChain.jav
> a:411) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:294) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265) at
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
>     at $Proxy36.mensajeStock(Unknown Source)
>     at org.jpp.ws.client.Client.main(Client.java:65)
> Exception in thread "main" javax.xml.ws.http.HTTPException
>     at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:138)
>     at $Proxy36.mensajeStock(Unknown Source)
>     at org.jpp.ws.client.Client.main(Client.java:65)
> Caused by: java.lang.ClassCastException: org.apache.cxf.message.XMLMessage
> cannot be cast to org.apache.cxf.binding.soap.SoapMessage
>     at
> org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor.handleFault(SAAJOutInte
> rceptor.java:70) at
> org.apache.cxf.phase.PhaseInterceptorChain.unwind(PhaseInterceptorChain.jav
> a:411) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:294) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265) at
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
>     ... 2 more

-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog

Reply via email to