java - how to get the transaction Status from HibernateTransactionManager -


i trying upgrade spring transaction manager jtatransactionmanager hibernatetransactionmanager. in jta transactionmanager have 1 method gives status of current transaction. based on status doing operations. implementation follows :

private void checktransactionstatus(transactionstatus status){              if(status instanceof defaulttransactionstatus) {                 defaulttransactionstatus transactionstatus = (defaulttransactionstatus) status;                 if(transactionstatus.gettransaction() instanceof jtatransactionobject){                     jtatransactionobject txobject = (jtatransactionobject) transactionstatus.gettransaction();                     int jtastatus;                     try {                         jtastatus = txobject.getusertransaction().getstatus();                         if(jtastatus==status.status_marked_rollback){                             // logic heare                         }                     } catch (systemexception e) {}                 }              }            } 

i want replace method hibernatetransactionmanager specific code. analyzed , found that, hibernatetransactionmanager using hibernatetransactionobject transaction object. but, unfortunately it's private inner class can't use status. tried use parent class jdbctransactionobjectsupport. but, don't know how status parent class object.

private void checktransactionstatus(transactionstatus status){          if(status instanceof defaulttransactionstatus) {             defaulttransactionstatus transactionstatus = (defaulttransactionstatus) status;             if(transactionstatus.gettransaction() instanceof jdbctransactionobjectsupport){                 jdbctransactionobjectsupport txobject = (jdbctransactionobjectsupport) transactionstatus.gettransaction();                 //how current status ?             }          }        } 

spring has mechanism receiving callbacks. can implement transactionsynchronization interface (or easier extend transactionsynchronizationadapter). want implement aftercompletion(int) method , put logic in there.

public class mytxcallback extends transactionsynchronizationadapter {      public void aftercompletion(int status) {         if (status==status_rolled_back) {             //logic here.         }     }  } 

you can bind transaction calling transactionsynchronizationmanager when transaction started. when transaction done method called , can logic (regardless of underlying transactional resource used).


Comments

Popular posts from this blog

How to connect android app to App engine -

gcc - MinGW's ld cannot perform PE operations on non PE output file -

php - display validation error message next to the textbox in codeigniter -