Class JDBCXID

java.lang.Object
org.hsqldb.jdbc.pool.JDBCXID
All Implemented Interfaces:
Xid

public class JDBCXID extends Object implements Xid
Implementation of Xid for tests.
// Example usage:

JDBCXADataSource ds = new JDBCXADataSource();

ds.setUser(user);
ds.setPassword(password);
ds.setUrl(jdbcUrl);

XAConnection xaCon = ds.getConnection();
Connection con = xaCon.getConnection();
Xid xid = JDBCXID.getUniqueXid((int)Thread.currentThread().getId());
XAResource xaRes = xaCon.getXAResource();

 // Start the transaction.
System.out.println("Starting XA transaction with xid = " + xid.toString());

xaRes.setTransactionTimeout(0);
xaRes.start(xid,XAResource.TMNOFLAGS);

// Do work here ....

// Commit the transaction.
xaRes.end(xid,XAResource.TMSUCCESS);
xaRes.commit(xid,true);

// Cleanup.
con.close();
xaCon.close();
Author:
Fred Toussi (fredt@users dot sourceforge.net), Campbell Burnet (campbell-burnet@users dot sourceforge.net)
  • Constructor Details

    • JDBCXID

      public JDBCXID(int formatID, byte[] txID, byte[] txBranch)
  • Method Details

    • getFormatId

      public int getFormatId()
      Specified by:
      getFormatId in interface Xid
    • getGlobalTransactionId

      public byte[] getGlobalTransactionId()
      Specified by:
      getGlobalTransactionId in interface Xid
    • getBranchQualifier

      public byte[] getBranchQualifier()
      Specified by:
      getBranchQualifier in interface Xid
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getUniqueXid

      public static Xid getUniqueXid(int threadId)
      Retrieves a randomly generated JDBCXID.

      The newly generated object is based on the local IP address, the given threadId and a randomly generated number using the current time in milliseconds as the random seed.

      Note that java.util.Random is used, not java.security.SecureRandom.

      Parameters:
      threadId - can be a real thread id or just some convenient tracking value.
      Returns:
      a randomly generated JDBCXID