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/

Reply via email to