Class 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

      Fields 
      Modifier and Type Field Description
      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

      Constructors 
      Modifier Constructor Description
      private XASupport()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      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 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
    • 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[]