Package oracle.jdbc.xa.client
Class OracleXAResource
java.lang.Object
oracle.jdbc.xa.OracleXAResource
oracle.jdbc.xa.client.OracleXAResource
- All Implemented Interfaces:
XAResource,oracle.jdbc.diagnostics.Diagnosable,oracle.jdbc.diagnostics.PropertyChangeListener,oracle.jdbc.internal.Monitor
- Direct Known Subclasses:
OracleXAHeteroResource
Implements javax.transaction.xa.XAResource.
-
Nested Class Summary
Nested classes/interfaces inherited from interface oracle.jdbc.internal.Monitor
oracle.jdbc.internal.Monitor.CloseableLock, oracle.jdbc.internal.Monitor.WaitableMonitor -
Field Summary
Fields inherited from class oracle.jdbc.xa.OracleXAResource
activeXid, canBeMigratablySuspended, connection, dblink, DEFAULT_XA_TIMEOUT, ORAISOLATIONMASK, ORATMREADONLY, ORATMREADWRITE, ORATMSERIALIZABLE, ORATRANSLOOSE, savedConnectionAutoCommit, savedXAConnectionAutoCommit, timeout, TMENDRSCAN, TMFAIL, TMJOIN, TMMIGRATE, TMNOFLAGS, TMNOMIGRATE, TMONEPHASE, TMPROMOTE, TMRESUME, TMSTARTRSCAN, TMSUCCESS, TMSUSPEND, XA_OK, xaconnection, xidHashFields inherited from interface javax.transaction.xa.XAResource
XA_RDONLY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidcommit() -- Commit work done by global transaction specified by xid.protected voidCommit sessionless transaction when XAThroughSessionlessTransactions is enabled.protected voidprotected intdoDoTwoPhaseAction(int nsites, int action, String[] dbnames, Xid[] xids) protected intprotected intprotected intprotected voiddoRollback(Xid xid) protected intvoiddoTwoPhaseAction(int nsites, int action, String[] dbnames, Xid[] xids) voidend()-- End work performed on behalf of a transaction branch.protected voidSuspend sessionless transaction when XAThroughSessionlessTransactions is enabled.voidforget() -- Tell RM to forget about a heuristically completed txn branchintprepare() -- Ask RM to prepare for a commit of the txn specified in xid.voidrollback() -- Ask RM to roll back work done on behalf of a txn branch.protected voidRollback sessionless transaction when XAThroughSessionlessTransactions is enabled.voidstart() -- Starts work on behalf of a transaction branch.protected voidstartSessionlessTransaction(Xid xid, int flag) Start/Resume sessionless transaction when XAThroughSessionlessTransactions is enabled.Methods inherited from class oracle.jdbc.xa.OracleXAResource
allowGlobalTxnModeOnly, checkError, checkError, checkError, convertError, createOrUpdateXid, enterGlobalTxnMode, exitGlobalTxnMode, getConnectionDuringExceptionHandling, getDiagnosable, getMonitorLock, getPhysicalConnection, getTransactionTimeout, isOnStack, isSameRM, isXidListEmpty, isXidSuspended, recover, removeXidFromList, restoreAutoCommitModeForGlobalTransaction, restoreAutoCommitModeForSessionlessTransaction, resumeStacked, saveAndAlterAutoCommitModeForGlobalTransaction, saveAndAlterAutoCommitModeForSessionlessTransaction, setTransactionTimeout, suspendStacked, updateXidListMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface oracle.jdbc.diagnostics.Diagnosable
begin, beginCurrentSql, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debugp, end, endCurrentSql, format, isDebugEnabled, isDiagnoseFirstFailureEnabled, isLoggable, isSensitiveEnabled, onClose, propertyChange, resumeLogging, secure, suspendLogging, trace, tracepMethods inherited from interface oracle.jdbc.internal.Monitor
acquireCloseableLock, acquireLock, assertLockHeldByCurrentThread, isReentrantLock, releaseLock
-
Constructor Details
-
OracleXAResource
public OracleXAResource() -
OracleXAResource
- Throws:
XAException
-
-
Method Details
-
startSessionlessTransaction
Start/Resume sessionless transaction when XAThroughSessionlessTransactions is enabled.- Parameters:
xid- the transaction idflag- TMNOFLAGS, TMRESUME, TMJOIN- Throws:
XAException
-
endSessionlessTransaction
Suspend sessionless transaction when XAThroughSessionlessTransactions is enabled. These are cases where a program may call end() on a transaction that is different that the active one:- Transaction does not exist
- Transaction is active in a different session
- Transaction was already ended or suspended
- If transaction does not exist, the database throws an exception
- If the transaction is active in a different session, database will also throw an exception.
- If transaction has already been suspended or ended in a different session it is resumed first then ended. (I don't really know why it does that, it could just make it a no-op)
- Parameters:
xid- the id of the transaction to be suspend- Throws:
XAException
-
commitSessionlessTransaction
Commit sessionless transaction when XAThroughSessionlessTransactions is enabled.- Parameters:
xid- the transaction id- Throws:
XAException
-
rollbackSessionlessTransaction
Rollback sessionless transaction when XAThroughSessionlessTransactions is enabled.- Parameters:
xid- the transaction id- Throws:
XAException
-
start
start() -- Starts work on behalf of a transaction branch. If TMJOIN is specified, the start is for joining an existing txn branch xid. If TMRESUME is specified, the start is to resume a suspended transaction branch specified in xid. Transaction suspend is done by calling the end method specifying the TMSUSPEND flag. If neither TMJOIN nor TMRESUME is specified and the transaction branch specified in xid already exists, the resource manager raises the duplicate transaction exception via XAER_DUPID. start() allows Isolation flags to be set, only when beginning a new transaction. XAER_INVAL exception is raised for error cases, such as (1) when JOIN/RESUME specified on start (2) invalid Isol flag is set. The valid Isolation levels allowed are: ORATMREADONLY ORATMREADWRITE ORATMSERIALIZABLE- Specified by:
startin interfaceXAResource- Specified by:
startin classOracleXAResource- Parameters:
xid- A global transaction identifier.flag- One of TMNOFLAGS, TMJOIN, TMNOMIGRATE or TMRESUME.- Throws:
XAException- An error has occurred. Possible exceptions are XA_RB, XAER_RMERR, XAER_RMFAIL, XAER_DUPID, XAER_OUTSIDE, XAER_NOTA, XAER_INVAL, or XAER_PROTO.
-
doStart
- Throws:
XAExceptionSQLException
-
end
end()-- End work performed on behalf of a transaction branch. The resource manager dissociates the XA resource from the transaction branch specified and let the transaction be completed. If TMSUSPEND is specified in flag, the txn branch is temporarily suspended in incomplete state. The txn context is in suspended state and must be resumed via start with TMRESUME specified. If TMFAIL is specified, the portion of work has failed. The RM may mark the transaction as rollback-only. If TMSUCCESS is specified, the portion of work has completed successfully.- Specified by:
endin interfaceXAResource- Specified by:
endin classOracleXAResource- Parameters:
xid- A global transaction identifier that is the same as what was used previously in the start method.flag- One of TMSUCCESS, TMFAIL, or TMSUSPEND.- Throws:
XAException- An error has occurred. Possible XAException values are XAER_RMERR, XAER_RMFAILED, XAER_NOTA, XAER_INVAL, XAER_PROTO, or XA_RB.
-
doEnd
- Throws:
XAExceptionSQLException
-
commit
commit() -- Commit work done by global transaction specified by xid.- Specified by:
commitin interfaceXAResource- Specified by:
commitin classOracleXAResource- Parameters:
xid- A global transaction identifier.onePhase- If true, the RM should use a 1-phase commit protocol to commit the work done on behalf of xid.- Throws:
XAException- (An error has occurred.) Possible XAExceptions are XA_HEURHAZ, XA_HEURCOM, XA_HEURRB, XA_HEURMIX, XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO. If the resource manager did not commit the txn and the parameter onePhase is set to true, the RM may raise one of the XA_RB exceptions. Upon return, the RM has rolled back the branch's work and has released all held resources.
-
doCommit
- Throws:
XAExceptionSQLException
-
prepare
prepare() -- Ask RM to prepare for a commit of the txn specified in xid.- Specified by:
preparein interfaceXAResource- Specified by:
preparein classOracleXAResource- Parameters:
xid- A global transaction identifier.- Returns:
- A value indicating the resource manager's vote on the outcome of the txn. The possible values are: XA_RDONLY or XA_OK. If the RM wants to roll back the transaction, it should do so by raising an appropriate XAException in the prepare method.
- Throws:
XAException- (An error has occurred.) Possible exception values are: XA_RB, XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO.
-
doPrepare
- Throws:
XAExceptionSQLException
-
forget
forget() -- Tell RM to forget about a heuristically completed txn branch- Specified by:
forgetin interfaceXAResource- Specified by:
forgetin classOracleXAResource- Parameters:
xid- A global transaction identifier.- Throws:
XAException- An error has occurred. Possible exception values are XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO.
-
doForget
- Throws:
XAExceptionSQLException
-
rollback
rollback() -- Ask RM to roll back work done on behalf of a txn branch.- Specified by:
rollbackin interfaceXAResource- Specified by:
rollbackin classOracleXAResource- Parameters:
xid- A global transaction identifier.- Throws:
XAException- An error has occurred.
-
doRollback
- Throws:
XAExceptionSQLException
-
doTwoPhaseAction
public void doTwoPhaseAction(int nsites, int action, String[] dbnames, Xid[] xids) throws XAException - Throws:
XAException
-
doDoTwoPhaseAction
protected int doDoTwoPhaseAction(int nsites, int action, String[] dbnames, Xid[] xids) throws XAException - Throws:
XAException
-