Hi Willem, Issue created: https://issues.apache.org/activemq/browse/CAMEL-286
Best regards, Wilson willem.jiang wrote: > > Hi Wilson, > > Yes , it must be a camel-cxf component's bug. Could you fill a JIRA[1] > for it ? > > [1]http://issues.apache.org/activemq/browse/CAMEL > > Willem. > > Wilson wrote: >> Hi, >> >> I found a workaround for the problem. I added a processor after the CXF >> router endpoint: >> >> -------JAVA-CODE--BEGIN------------------------------------------- >> String anyEndpoint = "activemq:pedidos"; >> >> from(StringUtils.join(cxfRouterURI)).process(new Processor(){ >> public void process(Exchange exchange) throws Exception >> { >> exchange.setOut(exchange.getIn()); >> } >> }).to(anyEndpoint).to(StringUtils.join(cxfServiceURI)); >> -------JAVA-CODE--END------------------------------------------- >> >> Now it is working. >> >> I think there is a bug in CXF Camel code. >> >> -- >> Wilson >> >> >> Wilson wrote: >> >>> Hi Willem, >>> >>> I am using Camel 1.3. I am using Maven to build the project. Today I >>> updated to the snapshot released on 2008-01-09 but the problem is still >>> there. >>> >>> Thank you. >>> >>> Wilson >>> >>> >>> willem.jiang wrote: >>> >>>> Hi Wilson, >>>> >>>> Which version of Camel are you using? >>>> Please try out Camel 1.3 snapshot which fixed a camel-cxf component's >>>> issue which can't pass the exchange back form the cxf producer. >>>> >>>> Willem. >>>> >>>> Wilson wrote: >>>> >>>>> Hi Willem, >>>>> >>>>> Thank you for your reply! >>>>> >>>>> I changed my code in order to use a SEI to describe the Web Service. >>>>> Now >>>>> it >>>>> is working fine but I am having problems when I add an endpoint >>>>> between >>>>> the >>>>> cxf endpoints. >>>>> >>>>> The (working) code looks like this: >>>>> >>>>> -------------------------------------------------------- >>>>> package com.tc.eai; >>>>> >>>>> import org.apache.camel.builder.RouteBuilder; >>>>> import org.apache.camel.spring.Main; >>>>> import org.apache.commons.lang.StringUtils; >>>>> >>>>> public class MyRouteBuilder extends RouteBuilder { >>>>> >>>>> private static String ROUTER_ADDRESS = >>>>> "http://localhost:9003/pedidoService"; >>>>> private static String DATA_FORMAT = "dataFormat=MESSAGE"; >>>>> private static String SERVICE_NAME = >>>>> "serviceName=%7bhttp://www.tc.com/pedido%7dpedido"; >>>>> private static String SERVICE_CLASS = >>>>> "serviceClass=com.tc.eai.PedidoService"; >>>>> private static String PORT_NAME = >>>>> "portName=%7bhttp://www.tc.com/pedido%7dpedidoSOAP"; >>>>> private static String SERVICE_ADDRESS = >>>>> "http://localhost:9000/pedidoService"; >>>>> >>>>> /** >>>>> * A main() so we can easily run these routing rules in our IDE >>>>> */ >>>>> public static void main(String... args) { >>>>> Main.main(args); >>>>> } >>>>> >>>>> /** >>>>> * Lets configure the Camel routing rules using Java code... >>>>> */ >>>>> public void configure() { >>>>> //-- Router receives requests from external clients and send to >>>>> channel >>>>> String[] cxfRouterURI = { >>>>> "cxf://" >>>>> ,ROUTER_ADDRESS >>>>> ,"?" >>>>> ,DATA_FORMAT >>>>> ,"&" >>>>> ,SERVICE_NAME >>>>> ,"&" >>>>> ,SERVICE_CLASS >>>>> ,"&" >>>>> ,PORT_NAME >>>>> }; >>>>> >>>>> //-- Service points to external web service. The request routed >>>>> by >>>>> the >>>>> Router >>>>> //-- is send to the external service provider >>>>> String[] cxfServiceURI = { >>>>> "cxf://" >>>>> ,SERVICE_ADDRESS >>>>> ,"?" >>>>> ,DATA_FORMAT >>>>> ,"&" >>>>> ,SERVICE_NAME >>>>> ,"&" >>>>> ,SERVICE_CLASS >>>>> ,"&" >>>>> ,PORT_NAME >>>>> }; >>>>> >>>>> >>>>> from(StringUtils.join(cxfRouterURI)).to(StringUtils.join(cxfServiceURI)); >>>>> } >>>>> } >>>>> -------------------------------------------------------- >>>>> >>>>> When change the route this way: >>>>> >>>>> String anyEndpoint = "log:org.apache.camel?level=DEBUG"; >>>>> >>>>> >>>>> from(StringUtils.join(cxfRouterURI)).to(anyEndpoint).to(StringUtils.join(cxfServiceURI)); >>>>> >>>>> I get this error: >>>>> >>>>> ------Exception Begin---------------------------- >>>>> 09/01/2008 18:32:40 org.apache.cxf.phase.PhaseInterceptorChain >>>>> doIntercept >>>>> INFO: Interceptor has thrown exception, unwinding now >>>>> org.apache.cxf.interceptor.Fault >>>>> at >>>>> org.apache.camel.component.cxf.interceptors.RawMessageContentRedirectInterceptor.handleMessage(RawMessageContentRedirectInterceptor.java:43) >>>>> at >>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207) >>>>> at >>>>> org.apache.camel.component.cxf.invoker.CxfClient.invokeWithMessageStream(CxfClient.java:137) >>>>> at >>>>> org.apache.camel.component.cxf.invoker.CxfClient.dispatch(CxfClient.java:89) >>>>> at >>>>> org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:202) >>>>> at >>>>> org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:152) >>>>> at >>>>> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44) >>>>> at >>>>> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:73) >>>>> at >>>>> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:143) >>>>> at >>>>> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:87) >>>>> at >>>>> org.apache.camel.processor.Pipeline.process(Pipeline.java:101) >>>>> at >>>>> org.apache.camel.processor.Pipeline.process(Pipeline.java:85) >>>>> at >>>>> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:40) >>>>> at >>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44) >>>>> at >>>>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:68) >>>>> at >>>>> org.apache.camel.component.cxf.CamelInvoker.invoke(CamelInvoker.java:71) >>>>> at >>>>> org.apache.camel.component.cxf.interceptors.AbstractInvokerInterceptor.handleMessage(AbstractInvokerInterceptor.java:65) >>>>> at >>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207) >>>>> at >>>>> org.apache.camel.component.cxf.CxfMessageObserver.onMessage(CxfMessageObserver.java:83) >>>>> at >>>>> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:284) >>>>> at >>>>> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:240) >>>>> at >>>>> org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:54) >>>>> at >>>>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712) >>>>> at >>>>> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211) >>>>> at >>>>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) >>>>> at org.mortbay.jetty.Server.handle(Server.java:313) >>>>> at >>>>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506) >>>>> at >>>>> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844) >>>>> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:726) >>>>> at >>>>> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) >>>>> at >>>>> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) >>>>> at >>>>> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396) >>>>> at >>>>> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442) >>>>> Caused by: java.lang.NullPointerException >>>>> at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1025) >>>>> at org.apache.commons.io.IOUtils.copy(IOUtils.java:999) >>>>> at >>>>> org.apache.camel.component.cxf.interceptors.RawMessageContentRedirectInterceptor.handleMessage(RawMessageContentRedirectInterceptor.java:39) >>>>> ... 32 more >>>>> ------Exception End---------------------------- >>>>> >>>>> The same problem happens with seda and activemq endpoints. >>>>> >>>>> Thank you, >>>>> >>>>> Wilson >>>>> >>>>> >>>>> Hi Wilson, >>>>> >>>>> I am afraid you need to provide the SEI class for camel-cxf component >>>>> to initiate the endpoint. >>>>> If you do not want to unmarshal the request message , I think you >>>>> could >>>>> use soap message or raw message data formate. >>>>> Now I am thinking to do some refactoring work to enable the web >>>>> services endpoint without SEI class. >>>>> >>>>> Willem. >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>> >> >> > > > -- View this message in context: http://www.nabble.com/About-JIRA-issue-CAMEL-180-tp14702992s22882p14760729.html Sent from the Camel - Users mailing list archive at Nabble.com.
