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); } } }
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); } } }
/** * setup transaction-work-context for the work * * @param tic transaction-context * @param listener listener that has to be notified */ private void setupTransactionWorkContext(TransactionContext tic, WorkContextLifecycleListener listener) throws WorkCompletedException { try { setupExecutionContext(tic); notifyContextSetupComplete(listener); } catch (Exception e) { notifyContextSetupFailure(listener, WorkContextErrorCodes.CONTEXT_SETUP_FAILED); //TODO WorkCompletedException wce = new WorkCompletedException(e.getMessage()); wce.initCause(e); throw wce; } }
/** * setup security work context for the work * * @param securityWorkContext security work context * @param listener listener to be notified * @param raName resource-adapter name */ private void setupSecurityWorkContext(SecurityContext securityWorkContext, WorkContextLifecycleListener listener, String raName) throws WorkCompletedException{ try { Subject executionSubject = new Subject(); Subject serviceSubject = new Subject(); //TODO need to populate with server's credentials ? //Map securityMap = getSecurityWorkContextMap(raName); Map securityMap = getWorkContextMap(raName); CallbackHandler handler = new ConnectorCallbackHandler(executionSubject, runtime.getCallbackHandler(), securityMap); securityWorkContext.setupSecurityContext(handler, executionSubject, serviceSubject); notifyContextSetupComplete(listener); } catch (Exception e) { logger.log(Level.WARNING, RAR_SETUP_SECURITY_CONTEXT_ERROR, e); notifyContextSetupFailure(listener, WorkContextErrorCodes.CONTEXT_SETUP_FAILED); WorkCompletedException wce = new WorkCompletedException(e.getMessage()); wce.initCause(e); throw wce; } }
workException = (WorkException) (e instanceof WorkCompletedException ? e : new WorkCompletedException("Unknown error", WorkCompletedException.UNDEFINED).initCause(e)); workListener.workCompleted(new WorkEvent(this, WorkEvent.WORK_REJECTED, adaptee, workException));
WorkCompletedException.UNDEFINED).initCause(e)); workListener.workCompleted(new WorkEvent(this, WorkEvent.WORK_REJECTED, worker, workException));