This class contains static utility methods used to implement distributed transactions.
For SQL Server 2000 the driver can provide true distributed transactions provided that
the external stored procedure in JtdsXA.dll is installed. For other types of server
only an emulation is available at this stage.
TM_ID
private static final String TM_ID
xa_open login string unique to jTDS.
XA_CLOSE
private static final int XA_CLOSE
XA_COMMIT
private static final int XA_COMMIT
XA_COMPLETE
private static final int XA_COMPLETE
XA_END
private static final int XA_END
XA_FORGET
private static final int XA_FORGET
XA_OPEN
private static final int XA_OPEN
XA_PREPARE
private static final int XA_PREPARE
XA_RECOVER
private static final int XA_RECOVER
XA_RMID
private static final int XA_RMID
The Resource Manager ID allocated by jTDS
XA_ROLLBACK
private static final int XA_ROLLBACK
XA_START
private static final int XA_START
XA_TRACE
private static final int XA_TRACE
Set this field to 1 to enable XA tracing.
raiseXAException
public static void raiseXAException(SQLException sqle)
throws XAException
Construct and throw an XAException
with an explanatory message derived from the
SQLException
and the XA error code set to XAER_RMFAIL
.
raiseXAException
public static void raiseXAException(int errorCode)
throws XAException
Construct and throw an XAException
with an explanatory message and the XA error code set.
errorCode
- the XA Error code
toBytesXid
private static byte[] toBytesXid(Xid xid)
Format an XA transaction ID into a 140 byte array.
xid
- the XA transaction ID
- the formatted ID as a
byte[]
xa_close
public static void xa_close(Connection connection,
int xaConId)
throws SQLException
Invoke the xa_close routine on the SQL Server.
connection
- JDBC Connection to be enlisted in the transactionxaConId
- the connection ID allocated by the server
xa_commit
public static void xa_commit(Connection connection,
int xaConId,
Xid xid,
boolean onePhase)
throws XAException
Invoke the xa_commit routine on the SQL Server.
connection
- JDBC Connection enlisted in the transactionxaConId
- the connection ID allocated by the serverxid
- the XA Transaction ID objectonePhase
- true
if single phase commit required
xa_end
public static void xa_end(Connection connection,
int xaConId,
Xid xid,
int flags)
throws XAException
Invoke the xa_end routine on the SQL Server.
connection
- JDBC Connection enlisted in the transactionxaConId
- the connection ID allocated by the serverxid
- the XA Transaction ID objectflags
- XA Flags for start command
xa_forget
public static void xa_forget(Connection connection,
int xaConId,
Xid xid)
throws XAException
Invoke the xa_forget routine on the SQL Server.
connection
- JDBC Connection enlisted in the transactionxaConId
- the connection ID allocated by the serverxid
- the XA Transaction ID object
xa_open
public static int xa_open(Connection connection)
throws SQLException
Invoke the xa_open routine on the SQL Server.
connection
- the parent XAConnection object
- the XA connection ID allocated by xp_jtdsxa
xa_prepare
public static int xa_prepare(Connection connection,
int xaConId,
Xid xid)
throws XAException
Invoke the xa_prepare routine on the SQL Server.
connection
- JDBC Connection enlisted in the transaction.xaConId
- The connection ID allocated by the server.xid
- The XA Transaction ID object.
- prepare status (XA_OK or XA_RDONLY) as an
int
.
xa_recover
public static Xid[] xa_recover(Connection connection,
int xaConId,
int flags)
throws XAException
Invoke the xa_recover routine on the SQL Server.
This version of xa_recover will return all XIDs on the first call.
connection
- JDBC Connection enlisted in the transactionxaConId
- the connection ID allocated by the serverflags
- XA Flags for start command
- transactions to recover as a
Xid[]
xa_rollback
public static void xa_rollback(Connection connection,
int xaConId,
Xid xid)
throws XAException
Invoke the xa_rollback routine on the SQL Server.
connection
- JDBC Connection enlisted in the transactionxaConId
- the connection ID allocated by the serverxid
- the XA Transaction ID object
xa_start
public static void xa_start(Connection connection,
int xaConId,
Xid xid,
int flags)
throws XAException
Invoke the xa_start routine on the SQL Server.
connection
- JDBC Connection to be enlisted in the transactionxaConId
- the connection ID allocated by the serverxid
- the XA Transaction ID objectflags
- XA Flags for start command