/* * @seeorg.springframework.jdbc.datasource.DataSourceTransactionManager# * doCleanupAfterCompletion(java.lang.Object) */ public void doCleanupAfterCompletion(Object transaction) { log.debug("Cleaning stored transaction synchronization"); TransactionSynchronizationManager.unbindResource(getTransactionSynchronizationKey()); CompensatingTransactionObject txObject = (CompensatingTransactionObject) transaction; CompensatingTransactionHolderSupport transactionHolderSupport = txObject.getHolder(); closeTargetResource(transactionHolderSupport); txObject.getHolder().clear(); }
/* * @see * org.springframework.jdbc.datasource.DataSourceTransactionManager#doBegin * (java.lang.Object, org.springframework.transaction.TransactionDefinition) */ public void doBegin(Object transaction, TransactionDefinition definition) throws TransactionException { try { CompensatingTransactionObject txObject = (CompensatingTransactionObject) transaction; if (txObject.getHolder() == null) { CompensatingTransactionHolderSupport contextHolder = getNewHolder(); txObject.setHolder(contextHolder); TransactionSynchronizationManager.bindResource( getTransactionSynchronizationKey(), contextHolder); } } catch (Exception e) { throw new CannotCreateTransactionException( "Could not create DirContext instance for transaction", e); } }
/* * @see * org.springframework.jdbc.datasource.DataSourceTransactionManager#doCommit * (org.springframework.transaction.support.DefaultTransactionStatus) */ public void doCommit(DefaultTransactionStatus status) throws TransactionException { CompensatingTransactionObject txObject = (CompensatingTransactionObject) status.getTransaction(); txObject.getHolder().getTransactionOperationManager().commit(); }