public void before(TransactionContext workContext) throws WorkCompletedException { if (workContext.getXid() != null) { try { long transactionTimeout = workContext.getTransactionTimeout(); //translate -1 value to 0 to indicate default transaction timeout. xaWork.begin(workContext.getXid(), transactionTimeout < 0 ? 0 : transactionTimeout); } catch (XAException e) { throw (WorkCompletedException)new WorkCompletedException("Transaction import failed for xid " + workContext.getXid(), WorkCompletedException.TX_RECREATE_FAILED).initCause(e); } catch (InvalidTransactionException e) { throw (WorkCompletedException)new WorkCompletedException("Transaction import failed for xid " + workContext.getXid(), WorkCompletedException.TX_RECREATE_FAILED).initCause(e); } catch (SystemException e) { throw (WorkCompletedException)new WorkCompletedException("Transaction import failed for xid " + workContext.getXid(), WorkCompletedException.TX_RECREATE_FAILED).initCause(e); } catch (ImportedTransactionActiveException e) { throw (WorkCompletedException)new WorkCompletedException("Transaction already active for xid " + workContext.getXid(), WorkCompletedException.TX_CONCURRENT_WORK_DISALLOWED).initCause(e); } } }
List<WorkContext> workContexts = NO_INFLOW_CONTEXT; if (executionContext != null) { TransactionContext txWorkContext = new TransactionContext(); try { txWorkContext.setTransactionTimeout(executionContext.getTransactionTimeout()); } catch (NotSupportedException e) { txWorkContext.setXid(executionContext.getXid()); workContexts = Collections.<WorkContext>singletonList(txWorkContext); log.info("Translated ExecutionContext to TransactionContext");
public void after(TransactionContext workContext) throws WorkCompletedException { if (workContext.getXid() != null) { try { xaWork.end(workContext.getXid()); } catch (XAException e) { throw (WorkCompletedException)new WorkCompletedException("Transaction end failed for xid " + workContext.getXid(), WorkCompletedException.TX_RECREATE_FAILED).initCause(e); } catch (SystemException e) { throw (WorkCompletedException)new WorkCompletedException("Transaction end failed for xid " + workContext.getXid(), WorkCompletedException.TX_RECREATE_FAILED).initCause(e); } } }