> > One last novice question. In the statement: > > > > from("seda:a").filter(header("foo").isEqualTo("bar")).to("seda:b"); > > > > Where does the "foo" comes from, I mean, where do I set it? From Eclipse > > I'm > > creating a JMS Message, but the only headers availbe is these: > > > > > > > http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/index.jsp?topic=/com.ibm.IBMDI.doc/referenceguide95.htm > > > > Do you know how I can use these headers/properties in a Camel choice > > statement? Basicly, I just want to create the most simple example, where > > to > > messages are send from Eclipse and goes to two different queues in a > Camel > > choice statement. The messages should be simple tect or objects. > > > > >You should be able to access any of the JMS headers you mentioned in the > >same way the "foo" header is referenced. So how are you sending JMS > messages > >from Eclipse? I'm assuming its a function of Tivoli in the link you > >provided? > > I (or the writer of the document I'm reading) made af "Response" class > called "InsuranceResponse". The response class is sent to the Camel > Routebuilder. I would like to swith on either the classname of the object > I'm sending or a field, e.g. "CompanyName", in the object. I create/send > like this: > > ObjectMessage insuranceMessage = session.createObjectMessage(); > InsuranceResponse response = new InsuranceResponse(); > response.setRequestID("1"); > response.setInsuranceCompanyName("Luxury Cars"); > response.setPrice(100f); > response.setResponseID(UUID.randomUUID().toString()); > insuranceMessage.setObject(response); > producer.send(insuranceMessage); > > Then I receive like this ("responseMessage" returns null all the time, but > I > guess it's beacuse my Camel Routebuilder isn't wotking, so no object is > send > to the queue): > > ObjectMessage responseMessage = (ObjectMessage) consumer.receive(); > InsuranceResponse insuranceMessageReceived = (InsuranceResponse) > responseMessage.getObject();
>>So I think you are looking at: >>http://soa.dzone.com/articles/pattern-based-development-with-0?page=0,3 Exactly. I'm hoping to use some of it as part of my master thesis. >>And it looks like they are using JIBX to convert between InsuranceResponses >>and XML. So, in the Camel route, the message is already in XML form so we >>can use an XPath expression something like the following to switch on the >>company name: Yes, I'm still with you. >>xpath("//ins:TravelInsuranceRequest/ins:insuranceCompanyName/text() = >>'Luxury Cars'").namespace("ins","http://dzone.com/insurance") >>I haven't booted up the example myself so I don't know why you are not >>getting any messages using the raw JMS API. Do the ServiceMix logs or Camel >>logs with trace enabled give you any more info on where the holdup could be? I don't think the message even get to the Camel router. The error Servicemix throws is: javax.jms.JMSException: Error sending JBI exchange at org.apache.servicemix.jms.endpoints.AbstractConsumerEndpoint.onMessage(AbstractConsumerEndpoint.java:575) at org.apache.servicemix.jms.endpoints.JmsConsumerEndpoint$1.onMessage(JmsConsumerEndpoint.java:505) at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:518) at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:479) at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876) at java.lang.Thread.run(Thread.java:619) Caused by: javax.jms.JMSException: Failed to build body from bytes. Reason: java.io.IOException: terror.model.TerrorType1Request at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:35) at org.apache.activemq.command.ActiveMQObjectMessage.getObject(ActiveMQObjectMessage.java:183) at kenneth.util.TerrorJMSMarshaler.populateMessage(TerrorJMSMarshaler.java:15) at org.apache.servicemix.jms.endpoints.DefaultConsumerMarshaler.createExchange(DefaultConsumerMarshaler.java:99) at org.apache.servicemix.jms.endpoints.AbstractConsumerEndpoint.onMessage(AbstractConsumerEndpoint.java:544) ... 10 more I looked the error up on the net and found: http://www.mail-archive.com/u...@geronimo.apache.org/msg10579.html http://issues.apache.org/activemq/browse/AMQ-1588 It seems like there is a problem with deserializing the object I'm sending, but I don't quite understand how to fix it. The two answers above talks about moving some classes? Any ideas to solve it? -- View this message in context: http://old.nabble.com/Help-to-understand-xpath-expression-in-camel-routebuilder-tp26779963p26801956.html Sent from the Camel - Users mailing list archive at Nabble.com.