No, it's not the JAXB unmarshaller that throws the exception. Unmarshalling seems to work fine.
It's for exceptions thrown *after* unmarshalling that the message body is lost. My testing indicates that the presence of the unmarshalling step causes message body loss if an exception occurs afterwards. - Rune Claus Ibsen-2 wrote: > > On Thu, Jun 18, 2009 at 3:28 PM, RuneB <rune.b...@spk.no> wrote: > >> >> A couple of more points: >> >> * 1.6.0 behaves like 1.6.1, as far as I can tell. >> >> * Loss of message body only occurs if *unmarshalling has taken place*. >> We've >> an element like this: >> <unmarshal> >> <jaxb prettyPrint="true" >> contextPath="no.spk.felles.domene.melding" /> >> </unmarshal> >> If I replace this element (and the bean calls it's for), with a bean >> call >> that simply throws an exception, >> the message body will be intact after the message has been moved by >> onException. >> > > Is it the JAXB unmarshaller that throws the exception? Eg does the > exception > occur during JAXB unmarshalling? > > What does the body look like after the unmarshal? You can use a processor > to > do some system out, or use the Tracer in Camel to look it. > > Maybe the JAXB clears the body before hand it tries to convert it. > > > As a side note: > In Camel 2.0 there is a new option: useOriginalBody that allows you to use > the body that you received when the route started. > This allows you to store the original payload instead of the mutated. > > > > >> - Rune >> >> >> >> Claus Ibsen-2 wrote: >> > >> > On Thu, Jun 18, 2009 at 10:51 AM, RuneB <rune.b...@spk.no> wrote: >> > >> >> >> >> Hi, >> >> >> >> The message body is definitely there when the message is consumed from >> >> the >> >> original queue. >> >> >> >> It's in the moving to the destination queue, as a result of an >> exception, >> >> that the message body is lost. >> >> >> >> I'm inspecting the destination queue using the ActiveMQ admin tool. >> Also, >> >> we >> >> have a bean that in turn consumes the destination queue; debugging >> this >> >> bean >> >> confirms that the body is lost. >> >> >> >> I'll get back to you about the other things you asked. >> > >> > >> > Cool. I will be out of office in a hour or so, but will be back on >> monday. >> > >> > >> > >> >> >> >> >> >> - Rune >> >> >> >> >> >> >> >> Claus Ibsen-2 wrote: >> >> > >> >> > Hi >> >> > No we have not have this reported before. >> >> > Could you create a small unit test that demonstrates this bug / >> issue? >> >> > >> >> > Do you say you loose the body when you consume it from the JMS >> queue? >> >> > Or do you lose the body before its sent to the JMS queue? >> >> > eg when you use a JMS queue browser can you see the body? >> >> > >> >> > Can you try with 1.6.0 also. That would help narrow down the number >> of >> >> > code >> >> > changes in between. >> >> > >> >> > >> >> > >> >> > >> >> > On Thu, Jun 18, 2009 at 10:23 AM, RuneB <rune.b...@spk.no> wrote: >> >> > >> >> >> >> >> >> After upgrading from 1.5.0 to 1.6.1, we find that that exception >> >> clauses >> >> >> such >> >> >> as this one >> >> >> >> >> >> <onException> >> >> >> <exception>my.package.SomeException</exception> >> >> >> <redeliveryPolicy maximumRedeliveries="0" /> >> >> >> <handled> >> >> >> <constant>true</constant> >> >> >> </handled> >> >> >> <to ref="tpforholdArbeidskoe" /> >> >> >> </onException> >> >> >> >> >> >> cause the message body to be *empty* after the message has been >> moved >> >> to >> >> >> tpforholdArbeidskoe. >> >> >> >> >> >> (tpforholdArbeidskoe is a message queue on ActiveMQ, as is the >> route's >> >> >> from-endpoint). >> >> >> >> >> >> The following trace may be of relevance: >> >> >> --------------------------------------------------- >> >> >> 17:11:20,844 ERROR [STDERR] 17.jun.2009 17:11:20 >> >> >> org.apache.camel.component.jms.JmsProducer process >> >> >> WARNING: Disabling JMSReplyTo as this Exchange is not OUT capable: >> >> >> Exchange[JmsMessage: ActiveMQTextMessage {commandId = >> >> >> 8, responseRequired = false, messageId = >> >> >> ID:vmutvjee1-b58-2757-1245247294282-2:3:1:1:4, originalDestination >> = >> >> >> null, >> >> >> ori >> >> >> ginalTransactionId = null, producerId = >> >> >> ID:vmutvjee1-b58-2757-1245247294282-2:3:1:1, destination = >> >> >> queue://queue.samordn >> >> >> ing.TPForhold, transactionId = null, expiration = 0, timestamp = >> >> >> 1245251471047, arrival = 0, brokerInTime = 124525147106 >> >> >> 3, brokerOutTime = 1245251471063, correlationId = , replyTo = null, >> >> >> persistent = false, type = , priority = 0, groupID = >> >> >> null, groupSequence = 0, targetConsumerId = null, compressed = >> false, >> >> >> userID = null, content = null, marshalledProperti >> >> >> es = null, dataStructure = null, redeliveryCounter = 0, size = 0, >> >> >> properties >> >> >> = null, readOnlyProperties = true, readOnly >> >> >> Body = true, droppable = false, text = <?xml version="1.0" >> >> >> encoding="UTF-8"?> >> >> >> <TPForholdHendelse> >> >> >> <type>Opprett</type> >> >> >> <ordning>1015</ordning> >> >> >> <datKundeFoedtNum>xxxxxxx</datKundeFoedtNum> >> >> >> <ideKundePrsnr>xxxxxx</ideKundePrsnr> >> >> >> </TPForholdHendelse> >> >> >> }] with destination: queue.samordning.TPForholdTilArbeidskoe >> >> >> >> >> >> 17:11:20,860 ERROR [STDERR] 17.jun.2009 17:11:20 >> >> >> org.apache.camel.processor.Logger log >> >> >> SEVERE: Failed delivery for exchangeId: >> >> >> ID-vmutvjee1-b58/3030-1245251235079/0-0. Handled by the failure >> >> >> processor: >> >> >> Trace >> >> >> Interceptor[To[ref:tpforholdArbeidskoe]] >> >> >> >> >> >> 17:11:20,875 ERROR [STDERR] 17.jun.2009 17:11:20 >> >> >> org.apache.camel.processor.Logger process >> >> >> INFO: ID-vmutvjee1-b58/3030-1245251235079/2-1 -> choice(), >> >> Pattern:InOnly >> >> >> , >> >> >> Headers:{JMSTimestamp=1245251480860, org.apa >> >> >> che.camel.MultiParameterArray=false, JMSType=, >> >> >> org.apache.camel.RedeliveryCounter=0, JMSXGroupID=null, >> >> JMSReplyTo=null, >> >> >> JMSDestination=queue://queue.samordning.TPForholdTilArbeidskoe, >> >> >> JMSRedelivered=false, JMSExpiration=0, org.apache.camel. >> >> >> Redelivered=false, >> >> >> JMSMessageID=ID:vmutvjee1-b58-3023-1245251233625-0:642:1:1:1, >> >> >> JMSDeliveryMode=2, JMSCorrelationID=, J >> >> >> MSPriority=4} , BodyType:null , Body:null >> >> >> --------------------------------------------------- >> >> >> >> >> >> Anyone know the reason why we lose the message body? >> >> >> >> >> >> - Rune >> >> >> >> >> >> -- >> >> >> View this message in context: >> >> >> >> >> >> http://www.nabble.com/Message-body-lost-when-message-moved-by-exception-clause-tp24088536p24088536.html >> >> >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> >> >> >> >> >> >> > >> >> > >> >> > -- >> >> > Claus Ibsen >> >> > Apache Camel Committer >> >> > >> >> > Open Source Integration: http://fusesource.com >> >> > Blog: http://davsclaus.blogspot.com/ >> >> > Twitter: http://twitter.com/davsclaus >> >> > >> >> > >> >> >> >> -- >> >> View this message in context: >> >> >> http://www.nabble.com/Message-body-lost-when-message-moved-by-exception-clause-tp24088536p24088903.html >> >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> >> >> >> > >> > >> > -- >> > Claus Ibsen >> > Apache Camel Committer >> > >> > Open Source Integration: http://fusesource.com >> > Blog: http://davsclaus.blogspot.com/ >> > Twitter: http://twitter.com/davsclaus >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/Message-body-lost-when-message-moved-by-exception-clause-tp24088536p24092993.html >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> > > > -- > Claus Ibsen > Apache Camel Committer > > Open Source Integration: http://fusesource.com > Blog: http://davsclaus.blogspot.com/ > Twitter: http://twitter.com/davsclaus > > -- View this message in context: http://www.nabble.com/Message-body-lost-when-message-moved-by-exception-clause-tp24088536p24144738.html Sent from the Camel - Users mailing list archive at Nabble.com.