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.