Class XASupport

java.lang.Object
net.sourceforge.jtds.jdbc.XASupport

public class XASupport extends 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

    Fields
    Modifier and Type
    Field
    Description
    private static final String
    xa_open login string unique to jTDS.
    private static final int
     
    private static final int
     
    private static final int
     
    private static final int
     
    private static final int
     
    private static final int
     
    private static final int
     
    private static final int
     
    private static final int
    The Resource Manager ID allocated by jTDS
    private static final int
     
    private static final int
     
    private static final int
    Set this field to 1 to enable XA tracing.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    raiseXAException(int errorCode)
    Construct and throw an XAException with an explanatory message and the XA error code set.
    static void
    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[]
    Format an XA transaction ID into a 140 byte array.
    static void
    xa_close(Connection connection, int xaConId)
    Invoke the xa_close routine on the SQL Server.
    static void
    xa_commit(Connection connection, int xaConId, Xid xid, boolean onePhase)
    Invoke the xa_commit routine on the SQL Server.
    static void
    xa_end(Connection connection, int xaConId, Xid xid, int flags)
    Invoke the xa_end routine on the SQL Server.
    static void
    xa_forget(Connection connection, int xaConId, Xid xid)
    Invoke the xa_forget routine on the SQL Server.
    static int
    xa_open(Connection connection)
    Invoke the xa_open routine on the SQL Server.
    static int
    xa_prepare(Connection connection, int xaConId, Xid xid)
    Invoke the xa_prepare routine on the SQL Server.
    static Xid[]
    xa_recover(Connection connection, int xaConId, int flags)
    Invoke the xa_recover routine on the SQL Server.
    static void
    xa_rollback(Connection connection, int xaConId, Xid xid)
    Invoke the xa_rollback routine on the SQL Server.
    static void
    xa_start(Connection connection, int xaConId, 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 Details

  • Constructor Details

    • XASupport

      private XASupport()
  • Method Details

    • xa_open

      public static int xa_open(Connection connection) throws 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:
      SQLException
    • xa_close

      public static void xa_close(Connection connection, int xaConId) throws 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:
      SQLException
    • 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.
      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:
      XAException - if an error condition occurs
    • 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.
      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:
      XAException - if an error condition occurs
    • xa_prepare

      public static int xa_prepare(Connection connection, int xaConId, Xid xid) throws 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:
      XAException - if an error condition occurs
    • 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.
      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:
      XAException - if an error condition occurs
    • xa_rollback

      public static void xa_rollback(Connection connection, int xaConId, Xid xid) throws 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:
      XAException - if an error condition occurs
    • 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.

      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:
      XAException - if an error condition occurs
    • xa_forget

      public static void xa_forget(Connection connection, int xaConId, Xid xid) throws 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:
      XAException - if an error condition occurs
    • 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.
      Parameters:
      sqle - The SQLException.
      Throws:
      XAException - exception derived from the code>SQLException
    • raiseXAException

      public static void raiseXAException(int errorCode) throws XAException
      Construct and throw an XAException with an explanatory message and the XA error code set.
      Parameters:
      errorCode - the XA Error code
      Throws:
      XAException - the constructed exception
    • toBytesXid

      private static byte[] toBytesXid(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[]