Hello Elias,

Thanks for your answer. I had considered some similar approaches like the one 
you propose.

However, if I include a non-transactional component in the design, there is the 
possibility to introduce a race condition.

Imagine this scenario:
1) The JMS message is delivered for the first time, and starts transaction T1 
to process Object A.
2) During the process, a business error is detected and an exception with the 
message is thrown.
3) As this exception is thrown, somewhere a handler sends also a 
non-transacitonal message to the process queue.
4) The JMS message is redelivered in T2, and the MDB has to flag this process 
as failed (and maybe update Object A to a new state?).
5) At the same time, the second message is processed in T3, that has to update 
Object A to attach the error message to it.

In this hypothetical case, it would be very unlikely that this race condition 
materializes to a real threat, because we would take care that T2 and T3 will 
not update the same objects. However, this is not valid for a more general 
case. Maybe if I don't find a better solution I will have to settle for this.

Regards,
Tomas

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4122682#4122682

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4122682
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to