On Tue, May 17, 2011 at 11:23 AM, James Talbut <[email protected]> wrote: > Thanks Claus, > > Does that mean it's not currently possible to run this set of routes with > multiple failures? > Is there any way to workaround it? >
I dont have time to look into a workaround. Just spotted the exception and fixed the camel-jms component. > Thanks > > Jim > > > On Tue, May 17, 2011 at 10:59:36AM +0200, Claus Ibsen wrote: >> Hi >> >> I have created a ticket to fix that class cast exception >> https://issues.apache.org/jira/browse/CAMEL-3979 >> >> On Tue, May 17, 2011 at 10:46 AM, James Talbut <[email protected]> >> wrote: >> > Hi, >> > >> > I've got the following three routes: >> > <camel:camelContext id="sampleHashCamelContext" > >> > <camel:route> >> > <camel:from uri="cxf:bean:serviceEndpoint" /> >> > <camel:transacted /> >> > <camel:to uri="activemq:queue:SampleAsyncHashCamelQueue" >> > pattern="InOnly" /> >> > </camel:route> >> > >> > <camel:route streamCache="true" handleFault="false"> >> > <camel:from uri="activemq:queue:SampleAsyncHashCamelQueue" /> >> > <camel:transacted /> >> > <camel:loadBalance> >> > <camel:roundRobin /> >> > <camel:to uri="cxf:bean:targetEndpoint1"/> >> > <camel:to uri="cxf:bean:targetEndpoint2"/> >> > <camel:to uri="cxf:bean:targetEndpoint3"/> >> > </camel:loadBalance> >> > <camel:to uri="activemq:queue:SampleAsyncHashCamelQueueReply" /> >> > </camel:route> >> > >> > <camel:route> >> > <camel:from uri="activemq:queue:SampleAsyncHashCamelQueueReply" /> >> > <camel:transacted /> >> > <camel:to uri="http://192.168.1.100:8080/sampleHashCamelContext" >> > pattern="InOnly" /> >> > </camel:route> >> > </camel:camelContext> >> > >> > >> > In the no-error case everything works perfectly, one of the CXF endpoints >> > gets called asynchronously and the results get sent to an http endpoint. >> > >> > To test the error handling I change the CXF endpoints to point to TCP >> > ports that aren't listening. >> > When I do this for one endpoint everything continues to work correctly. >> > When I change two endpoints I get the following error: >> > Interceptor for >> > {http://spudsoft.co.uk/}Hash#{http://spudsoft.co.uk/}HashFiles has thrown >> > exception, unwinding now >> > org.apache.cxf.interceptor.Fault: org.apache.camel.impl.DefaultMessage >> > cannot be cast to org.apache.camel.component.jms.JmsMessage >> > at >> > org.apache.camel.component.cxf.CxfConsumer$1.checkFailure(CxfConsumer.java:218)[136:org.apache.camel.camel-cxf:2.7.1] >> > ... >> > Caused by: java.lang.ClassCastException: >> > org.apache.camel.impl.DefaultMessage cannot be cast to >> > org.apache.camel.component.jms.JmsMessage >> > at >> > org.apache.camel.component.jms.JmsProducer.setMessageId(JmsProducer.java:365)[155:org.apache.camel.camel-jms:2.7.1] >> > ... >> > >> > In the docs for transactional-client there is an example of a similar >> > route that has to explicitly create a new transaction for the second stage. >> > Should I be doing this? >> > If so, how does camel know that it should wrap the three routes in a >> > single transaction (i.e. if something else were to dequeue messages >> > wouldn't that leave the >> > transaction hanging?) >> > >> > If I don't need to explicitly declare transaction policies, what is >> > causing the error? >> > >> > Thanks. >> > >> > Jim >> > >> >> >> >> -- >> Claus Ibsen >> ----------------- >> FuseSource >> Email: [email protected] >> Web: http://fusesource.com >> CamelOne 2011: http://fusesource.com/camelone2011/ >> Twitter: davsclaus, fusenews >> Blog: http://davsclaus.blogspot.com/ >> Author of Camel in Action: http://www.manning.com/ibsen/ > -- Claus Ibsen ----------------- FuseSource Email: [email protected] Web: http://fusesource.com CamelOne 2011: http://fusesource.com/camelone2011/ Twitter: davsclaus, fusenews Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/
