You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by devylon <in...@gmail.com> on 2010/02/11 19:09:56 UTC

Re: cxf-se --> camel --> message exchange problems InOut

Gert,

sorry... i hadn't the time to work on my servicemix/camel prototyping.
I removed all the sed queues and updated the components to 2009.02

The message is now routed through camel and all the jbi endpoints.
Unfortunatly
add the very end i got an exception from the CxfSeEndpoint:


DEBUG - CxfSeComponent                 - Received exchange: status: Active,
role: consumer
DEBUG - CxfSeComponent                 - Retrieved correlation id:
ID:192.168.0.5-126be36b032-4:0
11.02.2010 19:07:27 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
WARNUNG: Interceptor has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: unknown operation
{http://ns.devylon.org/fulfillment/v1_0/FulfillmentService}fulfill
        at
org.apache.cxf.binding.jbi.interceptor.JBIOperationInInterceptor.handleMessage(JBIOperationInInterceptor.java:58)
        at
org.apache.cxf.binding.jbi.interceptor.JBIOperationInInterceptor.handleMessage(JBIOperationInInterceptor.java:39)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
        at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:109)
        at
org.apache.cxf.transport.jbi.JBIDispatcherUtil.dispatch(JBIDispatcherUtil.java:156)
        at
org.apache.servicemix.cxfse.CxfSeEndpoint.process(CxfSeEndpoint.java:432)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:598)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
        at
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:623)
        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        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:637)
11.02.2010 19:07:28 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
WARNUNG: Interceptor has thrown exception, unwinding now
java.lang.NullPointerException
        at
org.apache.cxf.binding.jbi.interceptor.JBIFaultOutInterceptor.handleMessage(JBIFaultOutInterceptor.java:65)
        at
org.apache.cxf.binding.jbi.interceptor.JBIFaultOutInterceptor.handleMessage(JBIFaultOutInterceptor.java:40)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
        at
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:96)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:284)
        at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:109)
        at
org.apache.cxf.transport.jbi.JBIDispatcherUtil.dispatch(JBIDispatcherUtil.java:156)
        at
org.apache.servicemix.cxfse.CxfSeEndpoint.process(CxfSeEndpoint.java:432)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:598)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
        at
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:623)
        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        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:637)


-- Ingo



Gert Vanthienen wrote:
> 
> L.S.,
> 
> Sorry for the delay, I lost track of your question...  Anyway, I
> suspect the problem is coming from the seda: queues in the routes.
> The seda component has been significantly improved over the last
> versions of Camel, but this version probably isn't capable of handling
> the InOut MEP correct over a seda queue.  Could you try replacing the
> seda: endpoitns with direct: endpoints to see if that fixes the
> problem?  We're in the process of releasing new components and
> container version, but I don't think you really need the seda: here
> for performance/scalability.  The JBI runtime will already use seda
> and/or jms queues to communicate between components.
> 
> Regards,
> 
> Gert Vanthienen
> ------------------------
> Open Source SOA: http://fusesource.com
> Blog: http://gertvanthienen.blogspot.com/
> 
> 
> 
> 2009/12/14 devylon <in...@gmail.com>:
>>
>> Gert,
>>
>> i attached the servicemix logfile...
>>
>> My first camel route looks like this:
>>                Namespaces ns = new Namespaces("msg", FULFILLMENT_MSG_NS);
>>
>>                from("jbi:endpoint:"+ FULFILLMENT_JBI)
>>              
>>  .to("log:com.kdfs.fulfillment.camel.ChoiceFulfiller?level=INFO")
>>                        .choice()
>>                        .when().xpath("//msg:orderFormat/text() = 'FOO'",
>> ns)
>>                              
>>  .to("log:com.kdfs.fulfillment.routing.camel.xpath.to.foo?level=DEBUG")
>>
>> .to("jbi:endpoint:http://namespace.kdfs.com/fulfillment/foo/FooService/FooEndpoint")
>>                        .when().xpath("//msg:orderFormat/text() = 'BAR'",
>> ns)
>>                              
>>  .to("log:com.kdfs.fulfillment.routing.camel.xpath.to.bar?level=DEBUG")
>>
>> .to("jbi:endpoint:http://namespace.kdfs.com/fulfillment/bar/BarService/BarEndpoint")
>>                        .otherwise()
>>                                .to("seda:cleanup");
>>
>>                from("seda:cleanup")
>>                .to("log:com.kdfs.fulfillment.camel.Cleanup?level=INFO");
>>
>> and the second route:
>>
>>
>> from("jbi:endpoint:http://namespace.kdfs.com/fulfillment/bar/BarService/BarEndpoint")
>> //                      .streamCaching()
>>                        .to("seda:bar-transform");
>>
>>                from("seda:bar-transform")
>>              
>>  .to("log:com.kdfs.fulfillment.camel.BarTransform?level=INFO")
>>                        .to("jbi:endpoint:" + BAR_TRANSFORMER)
>>                        .to("seda:ot-transform");
>> ....
>>
>> Regards,
>> Ingo
>>
>>
>> Gert Vanthienen wrote:
>>>
>>> Ingo,
>>>
>>> What version of servicemix are you using?  With the exact version, I
>>> can take a look at the cause for the NPE in the first stacktrace.  For
>>> the second exception, that usually happens if you are handling
>>> exchanges asynchronously (like e.g. using the threads() in DSL or
>>> using an aggregator).  It means that the component is trying to answer
>>> an exchange that has already been answered (so the consuming component
>>> 'owns' the exchange again).
>>>
>>> One thing that would help us troubleshoot this issue, is if you could
>>> provide us with a DEBUG log that contains the exchanges up to the
>>> moment where you start getting the exceptions.  This gives us an idea
>>> on what kind of data is being conveyed in the ESB and it should also
>>> show an exchange being answered from the camel route right before we
>>> get the exception.
>>>
>>> Regards,
>>>
>>> Gert Vanthienen
>>> ------------------------
>>> Open Source SOA: http://fusesource.com
>>> Blog: http://gertvanthienen.blogspot.com/
>>>
>>>
>>> 2009/12/14 devylon <in...@gmail.com>:
>>>>
>>>> Hi,
>>>>
>>>> i'm struggling with camel and mep and home someone can me help or give
>>>> me
>>>> a hint what i'm doing wrong. my scenario is the following:
>>>> - cxf-bc service unit
>>>> - cxf-se service unit
>>>> - camel service unit
>>>> -- routing the message to some bean service units
>>>>
>>>> the cxf-bc is defining a wsdl and sends the message to the cxf-se:
>>>>        <cxfbc:consumer
>>>> wsdl="classpath:META-INF/FulfillmentService_v1_0.wsdl"
>>>>                targetService="foo:FulfillmentService_v1_0"
>>>>                targetInterface="foo:FulfillmentService_v1_0" >
>>>>        </cxfbc:consumer>
>>>>
>>>> The cxf-se implements the webservice interface:
>>>>        <cxfse:endpoint useJBIWrapper="true" useSOAPEnvelope="true">
>>>>                <cxfse:pojo>
>>>>                        <bean
>>>> class="foo.ws.cxf.FulfillmentServiceEndpointV10" />
>>>>                </cxfse:pojo>
>>>>        </cxfse:endpoint>
>>>>
>>>> and in the implementation of the webserice i'm routing the message to
>>>> the
>>>> bus:
>>>>                        InOut exchange = client.createInOutExchange();
>>>>                        exchange.setService(new
>>>> QName("http://ns1.foo.com/fulfillment/v1_0/FulfillmentService","FulfillmentService_v1_0_JBI"));
>>>>                        exchange.setInterfaceName(new
>>>> QName("http://ns1.foo.com/fulfillment/v1_0/FulfillmentService","FulfillmentService_v1_0_JBI/JBI"));
>>>>
>>>>                        NormalizedMessage message =
>>>> exchange.getInMessage();
>>>>                        message.setContent(new
>>>> StringSource(writer.getBuffer().toString()));
>>>>
>>>>                        client.send(exchange);
>>>>
>>>> My camel route is definded in a camel service unit:
>>>> ...
>>>> from("jbi:endpoint:http://ns1.foo.com/fulfillment/v1_0/FulfillmentService/FulfillmentService_v1_0_JBI/JBI)
>>>> .to("jbi:endpoint:http://ns1.foo.com/fulfillment/MyService/MyEndpoint");
>>>>
>>>> The MySerice serivce assembly contains a bean-su and a camel-su:
>>>>
>>>> camel-su:
>>>> ...
>>>> from("jbi:endpoint:http://ns1.foo.com/fulfillment/MyService/MyEndpoint")
>>>> .to("jbi:endpoint:http://ns1.foo.com/fulfillment/transform/MyService/MyEndpoint")
>>>> .to("jbi:endpoint:http://ns1.foo.com/fulfillment/dosomething/MyService/MyEndpoint")
>>>>
>>>> 1st bean-su:
>>>>    <bean:endpoint service="bar:MyService" endpoint="MyEndpoint"
>>>>        bean="#myEndpointImpl">
>>>>    </bean:endpoint>
>>>>
>>>> 2nd bean-su:
>>>>    <bean:endpoint service="doo:MyService" endpoint="MyEndpoint"
>>>>        bean="#myOtherEndpointImpl">
>>>>    </bean:endpoint>
>>>>
>>>>
>>>> The routing works until the message receives in the 1st bean-su.
>>>>
>>>> In the implementation i'm doing something likethis:
>>>>                                NormalizedMessage outMessage =
>>>> exchange.createMessage();
>>>>                                LOGGER.debug("outMessage: " +
>>>> outMessage);
>>>>                                outMessage.setContent(new
>>>> StringSource(message));
>>>>                                exchange.setMessage(outMessage, "out");
>>>>                                channel.send(exchange);
>>>>
>>>> This seems to throw an error on the bus:
>>>>
>>>> jvm 1    | java.lang.NullPointerException
>>>> jvm 1    |      at
>>>> org.apache.servicemix.camel.CamelConsumerEndpoint.process(CamelConsumerEndpoint.java:68)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:598)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:623)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>>> jvm 1    |      at
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>>> jvm 1    |      at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>> jvm 1    |      at java.lang.Thread.run(Thread.java:636)
>>>>
>>>> and
>>>>
>>>> jvm 1    | java.lang.IllegalStateException: component is not owner
>>>> jvm 1    |      at
>>>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.setMessage(MessageExchangeImpl.java:338)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.camel.JbiExchange.createMessage(JbiExchange.java:174)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.camel.JbiExchange.createOutMessage(JbiExchange.java:150)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.camel.JbiExchange.createOutMessage(JbiExchange.java:37)
>>>> jvm 1    |      at
>>>> org.apache.camel.impl.DefaultExchange.getOut(DefaultExchange.java:213)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.camel.JbiExchange.getOut(JbiExchange.java:71)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.camel.JbiExchange.getOut(JbiExchange.java:37)
>>>> jvm 1    |      at
>>>> org.apache.camel.impl.DefaultExchange.getOut(DefaultExchange.java:208)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.camel.JbiExchange.getOut(JbiExchange.java:66)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.camel.JbiExchange.getOut(JbiExchange.java:37)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.camel.CamelConsumerEndpoint.process(CamelConsumerEndpoint.java:68)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:598)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:623)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
>>>> jvm 1    |      at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>>> jvm 1    |      at
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>>> jvm 1    |      at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>> jvm 1    |      at java.lang.Thread.run(Thread.java:636)
>>>>
>>>> Hope someone can help me ?!?
>>>>
>>>> -- Ingo
>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://old.nabble.com/cxf-se---%3E-camel---%3E-message-exchange-problems-InOut-tp26775867p26775867.html
>>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>> -----
>>> ---
>>> Gert Vanthienen
>>> http://gertvanthienen.blogspot.com
>>>
>> http://old.nabble.com/file/p26778348/servicemix.log servicemix.log
>> --
>> View this message in context:
>> http://old.nabble.com/cxf-se---%3E-camel---%3E-message-exchange-problems-InOut-tp26775867p26778348.html
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> -----
> ---
> Gert Vanthienen
> http://gertvanthienen.blogspot.com
> 

-- 
View this message in context: http://old.nabble.com/cxf-se---%3E-camel---%3E-message-exchange-problems-InOut-tp26775867p27551845.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.