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.

Reply via email to