Package oracle.jdbc.xa
Class OracleXid
java.lang.Object
oracle.jdbc.xa.OracleXid
- All Implemented Interfaces:
Serializable,Xid
The OracleXid class:
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionOracleXid(int fId, byte[] gId, byte[] bId) OracleXid() -- The constructor that constructs an OracleXid with given formatId, global transaction Id and branch qualifier.OracleXid(int fId, byte[] gId, byte[] bId, byte[] context) OracleXid() -- The constructor that constructs an OracleXid with given formatId, global transaction Id and branch qualifier, and transaction context. -
Method Summary
Modifier and TypeMethodDescriptionbooleanbyte[]getBranchQualifier() -- Obtain the txn branch qualifier of the XIDprotected oracle.jdbc.internal.OracleConnectionCompares the given transaction identifiers with this.intgetFormatId() -- Obtain the format identifier part of the Xid.byte[]getGlobalTransactionId() -- Obtain the global txn id of the XIDinthashCode()static final booleanisLocalTransaction(Xid xid)
-
Field Details
-
MAXGTRIDSIZE
public static final int MAXGTRIDSIZE- See Also:
-
MAXBQUALSIZE
public static final int MAXBQUALSIZE- See Also:
-
-
Constructor Details
-
OracleXid
OracleXid() -- The constructor that constructs an OracleXid with given formatId, global transaction Id and branch qualifier.- Parameters:
fId- format IDgId- global transaction ID (no copy performed)bId- branch Qualifier (no copy performed)- Throws:
XAException- if the size of gId or bId is more than 64 bytes
-
OracleXid
OracleXid() -- The constructor that constructs an OracleXid with given formatId, global transaction Id and branch qualifier, and transaction context.- Parameters:
fId- format IDgId- global transaction ID (no copy performed)bId- branch Qualifier (no copy performed)context- transaction context (no copy performed)- Throws:
XAException- if the size of gId or bId is more than 64 bytes
-
-
Method Details
-
getFormatId
public int getFormatId()getFormatId() -- Obtain the format identifier part of the Xid.- Specified by:
getFormatIdin interfaceXid- Returns:
- Format identifier. 0 means the OSI CCR format.
-
getGlobalTransactionId
public byte[] getGlobalTransactionId()getGlobalTransactionId() -- Obtain the global txn id of the XID- Specified by:
getGlobalTransactionIdin interfaceXid- Returns:
- A byte array containing the global transaction identifier.
-
getBranchQualifier
public byte[] getBranchQualifier()getBranchQualifier() -- Obtain the txn branch qualifier of the XID- Specified by:
getBranchQualifierin interfaceXid- Returns:
- A byte array containing the branch qualifier of the transaction.
-
isLocalTransaction
-
equals
-
hashCode
public int hashCode() -
getConnectionDuringExceptionHandling
protected oracle.jdbc.internal.OracleConnection getConnectionDuringExceptionHandling()Compares the given transaction identifiers with this. If the format is different or any byte in the global transaction if or the branch qualifier differs from this, then false is returned. public boolean equals(Object obj) { if(obj==this) return true; OracleXid xid =null; try { xid = (OracleXid)obj; } catch(ClassCastException e){ return false; } if(formatId != xid.getFormatId()) return false; byte[] gtridB = xid.getGlobalTransactionId(); byte[] bqualB = xid.getBranchQualifier(); if(gtrid != gtridB){ if( (gtrid == null && gtridB != null) || (gtridB == null && gtrid != null) ) return false; if(gtridB!=null){ if(gtridB.length != gtrid.length) return false; for(int i=0;i<gtrid.length;i++){ if(gtridB[i] != gtrid[i]) return false; } } } if(bqual != bqualB){ if( ( bqualB == null && bqual != null) || (bqual == null && bqualB != null) ) return false; if(bqualB!=null){ if(bqualB.length != bqual.length) return false; for(int i=0;i<bqualB.length;i++){ if(bqualB[i] != bqual[i]) return false; } } } return true; } public int hashCode() { int ret = formatId; int temp = 0; for(int i=0;i<gtrid.length/4;i++){ temp = (int)gtrid[i] + ((int)(gtrid[i+1]<<8))&0xff00 + ((int)(gtrid[i+2]<<16))&0xff0000 + ((int)(gtrid[i+3]<<24))&0xff000000; ret += temp; } for(int i=0;i<bqual.length/4;i++){ temp = (int)bqual[i] + ((int)(bqual[i+1]<<8))&0xff00 + ((int)(bqual[i+2]<<16))&0xff0000 + ((int)(bqual[i+3]<<24))&0xff000000; ret += temp; } return ret; }
-