net.sourceforge.jtds.jdbc
Class XASupport

java.lang.Object
  extended bynet.sourceforge.jtds.jdbc.XASupport

public class XASupport
extends java.lang.Object

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.


Field Summary
private static java.lang.String TM_ID
          xa_open login string unique to jTDS.
private static int XA_CLOSE
           
private static int XA_COMMIT
           
private static int XA_COMPLETE
           
private static int XA_END
           
private static int XA_FORGET
           
private static int XA_OPEN
           
private static int XA_PREPARE
           
private static int XA_RECOVER
           
private static int XA_RMID
          The Resource Manager ID allocated by jTDS
private static int XA_ROLLBACK
           
private static int XA_START
           
private static int XA_TRACE
          Set this field to 1 to enable XA tracing.
 
Constructor Summary
private XASupport()
           
 
Method Summary
static void raiseXAException(int errorCode)
          Construct and throw an XAException with an explanatory message and the XA error code set.
static void raiseXAException(java.sql.SQLException sqle)
          Construct and throw an XAException with an explanatory message derived from the SQLException and the XA error code set to XAER_RMFAIL.
private static byte[] toBytesXid(javax.transaction.xa.Xid xid)
          Format an XA transaction ID into a 140 byte array.
static void xa_close(java.sql.Connection connection, int xaConId)
          Invoke the xa_close routine on the SQL Server.
static void xa_commit(java.sql.Connection connection, int xaConId, javax.transaction.xa.Xid xid, boolean onePhase)
          Invoke the xa_commit routine on the SQL Server.
static void xa_end(java.sql.Connection connection, int xaConId, javax.transaction.xa.Xid xid, int flags)
          Invoke the xa_end routine on the SQL Server.
static void xa_forget(java.sql.Connection connection, int xaConId, javax.transaction.xa.Xid xid)
          Invoke the xa_forget routine on the SQL Server.
static int xa_open(java.sql.Connection connection)
          Invoke the xa_open routine on the SQL Server.
static int xa_prepare(java.sql.Connection connection, int xaConId, javax.transaction.xa.Xid xid)
          Invoke the xa_prepare routine on the SQL Server.
static javax.transaction.xa.Xid[] xa_recover(java.sql.Connection connection, int xaConId, int flags)
          Invoke the xa_recover routine on the SQL Server.
static void xa_rollback(java.sql.Connection connection, int xaConId, javax.transaction.xa.Xid xid)
          Invoke the xa_rollback routine on the SQL Server.
static void xa_start(java.sql.Connection connection, int xaConId, javax.transaction.xa.Xid xid, int flags)
          Invoke the xa_start routine on the SQL Server.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

XA_RMID

private static final int XA_RMID
The Resource Manager ID allocated by jTDS

See Also:
Constant Field Values

TM_ID

private static final java.lang.String TM_ID
xa_open login string unique to jTDS.

See Also:
Constant Field Values

XA_OPEN

private static final int XA_OPEN
See Also:
Constant Field Values

XA_CLOSE

private static final int XA_CLOSE
See Also:
Constant Field Values

XA_START

private static final int XA_START
See Also:
Constant Field Values

XA_END

private static final int XA_END
See Also:
Constant Field Values

XA_ROLLBACK

private static final int XA_ROLLBACK
See Also:
Constant Field Values

XA_PREPARE

private static final int XA_PREPARE
See Also:
Constant Field Values

XA_COMMIT

private static final int XA_COMMIT
See Also:
Constant Field Values

XA_RECOVER

private static final int XA_RECOVER
See Also:
Constant Field Values

XA_FORGET

private static final int XA_FORGET
See Also:
Constant Field Values

XA_COMPLETE

private static final int XA_COMPLETE
See Also:
Constant Field Values

XA_TRACE

private static final int XA_TRACE
Set this field to 1 to enable XA tracing.

See Also:
Constant Field Values
Constructor Detail

XASupport

private XASupport()
Method Detail

xa_open

public static int xa_open(java.sql.Connection connection)
                   throws java.sql.SQLException
Invoke the xa_open routine on the SQL Server.

Parameters:
connection - the parent XAConnection object
Returns:
the XA connection ID allocated by xp_jtdsxa
Throws:
java.sql.SQLException

xa_close

public static void xa_close(java.sql.Connection connection,
                            int xaConId)
                     throws java.sql.SQLException
Invoke the xa_close routine on the SQL Server.

Parameters:
connection - JDBC Connection to be enlisted in the transaction
xaConId - the connection ID allocated by the server
Throws:
java.sql.SQLException

xa_start

public static void xa_start(java.sql.Connection connection,
                            int xaConId,
                            javax.transaction.xa.Xid xid,
                            int flags)
                     throws javax.transaction.xa.XAException
Invoke the xa_start routine on the SQL Server.

Parameters:
connection - JDBC Connection to be enlisted in the transaction
xaConId - the connection ID allocated by the server
xid - the XA Transaction ID object
flags - XA Flags for start command
Throws:
javax.transaction.xa.XAException - if an error condition occurs

xa_end

public static void xa_end(java.sql.Connection connection,
                          int xaConId,
                          javax.transaction.xa.Xid xid,
                          int flags)
                   throws javax.transaction.xa.XAException
Invoke the xa_end routine on the SQL Server.

Parameters:
connection - JDBC Connection enlisted in the transaction
xaConId - the connection ID allocated by the server
xid - the XA Transaction ID object
flags - XA Flags for start command
Throws:
javax.transaction.xa.XAException - if an error condition occurs

xa_prepare

public static int xa_prepare(java.sql.Connection connection,
                             int xaConId,
                             javax.transaction.xa.Xid xid)
                      throws javax.transaction.xa.XAException
Invoke the xa_prepare routine on the SQL Server.

Parameters:
connection - JDBC Connection enlisted in the transaction.
xaConId - The connection ID allocated by the server.
xid - The XA Transaction ID object.
Returns:
prepare status (XA_OK or XA_RDONLY) as an int.
Throws:
javax.transaction.xa.XAException - if an error condition occurs

xa_commit

public static void xa_commit(java.sql.Connection connection,
                             int xaConId,
                             javax.transaction.xa.Xid xid,
                             boolean onePhase)
                      throws javax.transaction.xa.XAException
Invoke the xa_commit routine on the SQL Server.

Parameters:
connection - JDBC Connection enlisted in the transaction
xaConId - the connection ID allocated by the server
xid - the XA Transaction ID object
onePhase - true if single phase commit required
Throws:
javax.transaction.xa.XAException - if an error condition occurs

xa_rollback

public static void xa_rollback(java.sql.Connection connection,
                               int xaConId,
                               javax.transaction.xa.Xid xid)
                        throws javax.transaction.xa.XAException
Invoke the xa_rollback routine on the SQL Server.

Parameters:
connection - JDBC Connection enlisted in the transaction
xaConId - the connection ID allocated by the server
xid - the XA Transaction ID object
Throws:
javax.transaction.xa.XAException - if an error condition occurs

xa_recover

public static javax.transaction.xa.Xid[] xa_recover(java.sql.Connection connection,
                                                    int xaConId,
                                                    int flags)
                                             throws javax.transaction.xa.XAException
Invoke the xa_recover routine on the SQL Server.

This version of xa_recover will return all XIDs on the first call.

Parameters:
connection - JDBC Connection enlisted in the transaction
xaConId - the connection ID allocated by the server
flags - XA Flags for start command
Returns:
transactions to recover as a Xid[]
Throws:
javax.transaction.xa.XAException - if an error condition occurs

xa_forget

public static void xa_forget(java.sql.Connection connection,
                             int xaConId,
                             javax.transaction.xa.Xid xid)
                      throws javax.transaction.xa.XAException
Invoke the xa_forget routine on the SQL Server.

Parameters:
connection - JDBC Connection enlisted in the transaction
xaConId - the connection ID allocated by the server
xid - the XA Transaction ID object
Throws:
javax.transaction.xa.XAException - if an error condition occurs

raiseXAException

public static void raiseXAException(java.sql.SQLException sqle)
                             throws javax.transaction.xa.XAException
Construct and throw an XAException with an explanatory message derived from the SQLException and the XA error code set to XAER_RMFAIL.

Parameters:
sqle - The SQLException.
Throws:
javax.transaction.xa.XAException - exception derived from the code>SQLException

raiseXAException

public static void raiseXAException(int errorCode)
                             throws javax.transaction.xa.XAException
Construct and throw an XAException with an explanatory message and the XA error code set.

Parameters:
errorCode - the XA Error code
Throws:
javax.transaction.xa.XAException - the constructed exception

toBytesXid

private static byte[] toBytesXid(javax.transaction.xa.Xid xid)
Format an XA transaction ID into a 140 byte array.

Parameters:
xid - the XA transaction ID
Returns:
the formatted ID as a byte[]


Generated on October 27 2012