You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by rli <ru...@gmail.com> on 2013/08/02 20:03:07 UTC
cxf soap call exception when using dataFormat=POJO
Hi,
I'm new to Camel and currently trying to setup a soap call to a web service
as part of my learning process.
*Environment:* JDK 1.6, Camel 2.11.0
*Web service:* http://www.webservicex.net/stockquote.asmx
*WSDL:* http://www.webservicex.net/stockquote.asmx?WSDL
*Client stub classes* generated based on WSDL with wsdl2java:
- GetQuote.java
- GetQuoteResponse.java
- ObjectFactory.java
- package-info.java
- StockQuote.java
- StockQuoteSoap.java
*In spring-camel.xml* I have:
<cxf:cxfEndpoint id="serviceEndpoint"
address="http://www.webservicex.net/stockquote.asmx"
wsdlURL="http://www.webservicex.net/stockquote.asmx?WSDL"
serviceClass="net.webservicex.StockQuoteSoap">
<cxf:properties>
<entry key="dataFormat" value="POJO"/>
</cxf:properties>
</cxf:cxfEndpoint>
*The route* is simple:
from("jms:queue:SoapRequestQueue?jmsMessageType=Text&concurrentConsumers=5")
.process(new QueueProcessor())
.to("cxf:bean:serviceEndpoint?dataFormat=POJO")
.process(new WsProcessor())
.to("mock:end");
* Input is through an ActiveMQ queue.
*QueueProcessor* class takes the ActiveMQ input and wraps it into GetQuote
object:
public class QueueProcessor implements Processor {
public void process(Exchange exchange) throws Exception {
String symbol = exchange.getIn().getBody(String.class);
GetQuote req = new GetQuote();
req.setSymbol(symbol);
exchange.getOut().setBody(req, GetQuote.class);
}
}
*WsProcessor* is supposed to retrieve the response:
public class WsProcessor implements Processor {
public void process(Exchange exchange) throws Exception {
MessageContentsList msgList = (MessageContentsList)
exchange.getIn().getBody();
GetQuoteResponse resp = (GetQuoteResponse) msgList.get(0);
String result = resp.getGetQuoteResult();
exchange.getIn().setBody(result, String.class);
}
}
When I run it, I got the following *exception*:
(camelContext) thread #34 - JmsConsumer[SoapRequestQueue]] WARN
o.a.cxf.phase.PhaseInterceptorChain - Interceptor for
{http://www.webserviceX.NET/}StockQuoteSoapService#{http://www.webserviceX.NET/}GetQuote
has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: net.webservicex.GetQuote cannot be cast to
java.lang.String
at
org.apache.cxf.jaxws.interceptors.WrapperClassOutInterceptor.handleMessage(WrapperClassOutInterceptor.java:117)
~[cxf-rt-frontend-jaxws-2.7.6.jar:2.7.6]
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
~[cxf-api-2.7.6.jar:2.7.6]
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:541)
[cxf-api-2.7.6.jar:2.7.6]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:467)
[cxf-api-2.7.6.jar:2.7.6]
at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:112)
[camel-cxf-2.11.0.jar:2.11.0]
I'm stuck here, can someone help me with this?
Thanks!
--
View this message in context: http://camel.465427.n5.nabble.com/cxf-soap-call-exception-when-using-dataFormat-POJO-tp5736712.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Re: cxf soap call PhaseInterceptorChain exception (cannot cast to
String) when using dataFormat=POJO
Posted by dbremmen <db...@gmail.com>.
Hi!
I'm stuck in the same area. Were you able to find out a solution?
Thanks!
David
--
View this message in context: http://camel.465427.n5.nabble.com/cxf-soap-call-PhaseInterceptorChain-exception-cannot-cast-to-String-when-using-dataFormat-POJO-tp5736712p5760898.html
Sent from the Camel - Users mailing list archive at Nabble.com.