-
1. Re: Process after cxf enpoint
njiang Apr 28, 2011 9:53 PM (in response to kaczan)Hi,
As you are using the Message dataformat, you don't need to add a CXF interceptor to change the namespace. You can use the transform to do this kind of job easily.
<route> <from uri="cxf:bean:serviceEnpoint"></from> <to uri="xslt:org/apache/camel/spring/processor/request.xsl"></to> <to uri="cxf:bean:targetEnpoint"></to> <to uri="xslt:org/apache/camel/spring/processor/response.xsl"></to> </route>
Willem
-
2. Re: Process after cxf enpoint
kaczan Apr 29, 2011 6:10 AM (in response to njiang)I tried, and i have still same problem with web service output.
It's my logs:
12:02:37,787 | INFO | Request-thread-1 | beforeRequest | rg.apache.camel.processor.Logger 88 | Exchange[BodyType:org.apache.camel.converter.stream.InputStreamCache, Body:<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sap="http://location.com/channel/sap">
<soapenv:Header>
<sap:requestHeader>
<sap:requestDate>?</sap:requestDate>
<sap:user>?</sap:user>
</sap:requestHeader>
</soapenv:Header>
<soapenv:Body>
<sap:getTeamSchedule>
<sap:user>?</sap:user>
<sap:district>?</sap:district>
<sap:plannersGroup>?</sap:plannersGroup>
<sap:dateFrom>?</sap:dateFrom>
<sap:dateTo>?</sap:dateTo>
</sap:getTeamSchedule>
</soapenv:Body>
</soapenv:Envelope>]
12:02:37,881 | INFO | Request-thread-1 | getTeamScheduleRequest | rg.apache.camel.processor.Logger 88 | Exchange[BodyType:String, Body:<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ah:requestHeader xmlns:ah="http://location.com/service/ah"><ah:requestDate>?</ah:requestDate><ah:user>?</ah:user></ah:requestHeader></soapenv:Header><soapenv:Body><ah:getTeamSchedule xmlns:ah="http://location.com/service/ah"><ah:user>?</ah:user><ah:district>?</ah:district><ah:plannersGroup>?</ah:plannersGroup><ah:dateFrom>?</ah:dateFrom><ah:dateTo>?</ah:dateTo></ah:getTeamSchedule></soapenv:Body></soapenv:Envelope>]
12:02:37,897 | INFO | Request-thread-1 | ReflectionServiceFactoryBean | ory.ReflectionServiceFactoryBean 400 | Creating Service TeamScheduleService from WSDL: http://localhost:8088/teamScheduleAS?wsdl
12:02:37,975 | INFO | Request-thread-1 | fromResponse | rg.apache.camel.processor.Logger 88 | Exchange[BodyType:sun.net.www.protocol.http.HttpURLConnection.HttpInputStream, Body:[BUSHESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSłąąśąśóąśłśąó]
12:02:37,975 | ERROR | Request-thread-1 | DefaultErrorHandler | rg.apache.camel.processor.Logger 248 | Failed delivery for exchangeId: 4819e701-c1f0-4cb0-8d90-1fa64102cdac. Exhausted after delivery attempt: 1 caught: org.apache.camel.ExpectedBodyTypeException: Could not extract IN message body as type: interface javax.xml.transform.Source body is: org.apache.camel.converter.stream.InputStreamCache@906eac
org.apache.camel.ExpectedBodyTypeException: Could not extract IN message body as type: interface javax.xml.transform.Source body is: org.apache.camel.converter.stream.InputStreamCache@906eac
at org.apache.camel.builder.xml.XsltBuilder.getSource(XsltBuilder.java:256)
at org.apache.camel.builder.xml.XsltBuilder.process(XsltBuilder.java:74)
at org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:95)
at org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:65)
at org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:97)
at org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:95)
at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146)
at org.apache.camel.processor.SendProcessor.doProcess(SendProcessor.java:94)
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:82)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
at org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53)
at org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82)
at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:93)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
at org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:177)
at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:143)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88)
at org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49)
at org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:228)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:74)
at org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:66)
at org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
at org.apache.servicemix.camel.nmr.ServiceMixConsumer.process(ServiceMixConsumer.java:69)
at org.apache.servicemix.nmr.core.InternalEndpointWrapper.process(InternalEndpointWrapper.java:86)
at org.apache.servicemix.nmr.core.ChannelImpl.process(ChannelImpl.java:255)
at org.apache.servicemix.nmr.core.ChannelImpl$1.run(ChannelImpl.java:215)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
12:02:38,006 | INFO | 6@qtp-12195796-0 | teamInfo | rg.apache.camel.processor.Logger 88 | Exchange[BodyType:null, Body:null]
12:02:38,006 | WARN | 6@qtp-12195796-0 | PhaseInterceptorChain | ache.cxf.common.logging.LogUtils 361 | Interceptor for TeamScheduleService has thrown exception, unwinding now
java.lang.NullPointerException
at org.apache.camel.component.cxf.interceptors.RawMessageContentRedirectInterceptor.handleMessage(RawMessageContentRedirectInterceptor.java:48)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:76)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:109)
at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:312)
at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:276)
at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
So as you can see the output message is stream and cannot by change into string. I tried change it by transform.. but UTF-8 enconding change nothing, maybe there are other encoding? Other format that text (but text/xml is show in header). Have you got any idea why it's happen?
Edited by: kaczan on Apr 29, 2011 10:09 AM
-
3. Re: Process after cxf enpoint
davsclaus Apr 29, 2011 7:00 AM (in response to kaczan)Add a before the XSLT endpoints
-
4. Re: Process after cxf enpoint
davsclaus Apr 29, 2011 7:02 AM (in response to kaczan)What version of Fuse are you using?
-
5. Re: Process after cxf enpoint
kaczan Apr 29, 2011 7:58 AM (in response to davsclaus)I'm use 4.2 version.
-
6. Re: Process after cxf enpoint
kaczan Apr 29, 2011 8:12 AM (in response to davsclaus)I try convert body and I have still the same error but it's on converting point. The are also more bushes, becouse the top part of stack trace are "converted".
-
7. Re: Process after cxf enpoint
kaczan Apr 29, 2011 9:02 AM (in response to kaczan)I found solution. The respons was gzip data. When i make unmarshal it's start working ok.
So if somone want change something in web service respons he could expect gzip format in message.