Peter Smith wrote:

I've been looking at the ServiceMix version 1.0 source code.

I have a question. I do not understand the following AckHelper processing in the DeliveryChannelImpl.processInBound method .

               if (ack != null) {
ack.getMessageExchange().setPacket(packet); // WHY IS THIS REQUIRED
                   ack.done();
               }else {

My understanding (after debugging my simple configuration) is that the ExchangePacket instance remains the same throughout the entire process flow. So the packet instance in the ME held by the AckHelper is the same packet instance that was in that ME when the DeliveryChannelImpl.sendSync(ME) was done in the first place....

I'm confused. Can somebody shed some light on why this statement is needed at all?

Thanks!



I also noticed that calling setPacket is side-effecting the source ME status changing it from ACTIVE it to DONE. (because the packet has status DONE set by the destination component - eg SaajBinding called PojoSupport.done in my case).

But I can't quite convince myself that this was all deliberate.....

Reply via email to