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.

Reply via email to