[jboss-dev] JTA question for the transaction gurus

Tim Fox tim.fox at jboss.com
Thu Jan 11 15:02:42 EST 2007


Or perhaps I should never attempt to retry the commit, but instead roll 
it back (not sure if rollback is really necessary), then start a new 
transaction, redo the work, and try and commit that?

Tim Fox wrote:
> If I have at least 2 participants enlisted in a JTA tx and call commit, 
> then the commit fails, e.g. due to network problems say due to the 
> XAResource being enable to contact it's server.
> 
> In this case is it possible the commit fails and the TRansaction is left 
> in state Status.STATUS_PREPARING?
> 
> Basically I have this situation:
> 
> I am have a JTA transaction where 2 JMS XAResources are enlisted 
> corresponding to two different servers.
> 
> I am acking some messages on one server and sending some messages on the 
> other (basically this is a message bridge).
> 
> If the network fails, the bridge should be able to catch exceptions and 
> retry until the network comes back up.
> 
> If the failure occurs during the Transaction.commit() call, then I only 
> want to retry the commit if the transaction didn't get prepared, since 
> if it got to the prepare stage then the transaction recovery (hopefully) 
> will commit it eventually.
> 
> So I am checking Transaction.getStatus() after the failure to work out 
> whether to retry commit or not. Basically my assumption is I should 
> retry after failure if the tx is not prepared.
> 
> Is this a correct approach?
> 
> 
> 

-- 
Tim Fox
JBoss Messaging Technical Lead
JBoss - a division of Red Hat
T: +44 2088006768
M: +44 7957983205
E: tim.fox at jboss.com tim.fox at redhat.com



More information about the jboss-development mailing list