# javax.transaction.xa

***

**1. Creating a XADataSource**

```java
import javax.transaction.xa.XADataSource;

// Create a XADataSource implementation
public class MyXADataSource implements XADataSource {
    // Implementation details
}
```

**2. Obtaining a XAConnection**

```java
import javax.transaction.xa.XAConnection;
import javax.transaction.xa.XADataSource;

// Get a XADataSource
XADataSource ds = ...;

// Create a XAConnection
XAConnection conn = ds.getXAConnection();
```

**3. Obtaining a XAResource**

```java
import javax.transaction.xa.XAConnection;
import javax.transaction.xa.XAResource;

// Get a XAConnection
XAConnection conn = ...;

// Get a XAResource
XAResource res = conn.getXAResource();
```

**4. Starting a Transaction**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Start a transaction
res.start(xid, flags);
```

**5. Ending a Transaction**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// End a transaction
res.end(xid, flags);
```

**6. Preparing a Transaction**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Prepare a transaction
res.prepare(xid);
```

**7. Committing a Transaction**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Commit a transaction
res.commit(xid, onePhase);
```

**8. Rolling Back a Transaction**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Rollback a transaction
res.rollback(xid);
```

**9. Recovering Transactions**

```java
import javax.transaction.xa.XARecoveryCallback;
import javax.transaction.xa.XAResourceManager;

// Create a XARecoveryCallback implementation
public class MyXARecoveryCallback implements XARecoveryCallback {
    // Implementation details
}

// Get a XAResourceManager
XAResourceManager rm = ...;

// Recover transactions
rm.recover(flags, callback);
```

**10. Registering a XAResource with a Transaction Manager**

```java
import javax.transaction.xa.XAResource;
import javax.transaction.xa.XAResourceManager;
import javax.transaction.TransactionManager;

// Get a TransactionManager
TransactionManager tm = ...;

// Get a XAResourceManager
XAResourceManager rm = ...;

// Register a XAResource with the Transaction Manager
tm.registerResource(rm);
```

**11. Getting a Trace Identifier from a XAResource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Get a trace identifier
byte[] trace = res.getTraceIdentifier();
```

**12. Setting a Trace Identifier on a XAResource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Set a trace identifier
res.setTraceIdentifier(trace);
```

**13. Getting the Transaction Timeout from a XAResource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Get the transaction timeout
int timeout = res.getTransactionTimeout();
```

**14. Setting the Transaction Timeout on a XAResource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Set the transaction timeout
res.setTransactionTimeout(timeout);
```

**15. Getting the Resource Manager Id from a XAResource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Get the resource manager id
int rmId = res.getResourceManagerId();
```

**16. Creating a Transaction**

```java
import javax.transaction.xa.Xid;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;

// Get a TransactionManager
TransactionManager tm = ...;

// Create a new transaction
Transaction tx = tm.getTransaction();
```

**17. Getting the Transaction Id**

```java
import javax.transaction.xa.Xid;
import javax.transaction.Transaction;

// Get a Transaction
Transaction tx = ...;

// Get the transaction id
Xid xid = tx.getXid();
```

**18. Getting the Status of a Transaction**

```java
import javax.transaction.xa.Xid;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;

// Get a TransactionManager
TransactionManager tm = ...;

// Check the status of a transaction
int status = tm.getStatus();
```

**19. Committing a Transaction**

```java
import javax.transaction.xa.Xid;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;

// Get a TransactionManager
TransactionManager tm = ...;

// Commit a transaction
tm.commit();
```

**20. Rolling Back a Transaction**

```java
import javax.transaction.xa.Xid;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;

// Get a TransactionManager
TransactionManager tm = ...;

// Rollback a transaction
tm.rollback();
```

**21. Suspending a Transaction**

```java
import javax.transaction.xa.Xid;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;

// Get a TransactionManager
TransactionManager tm = ...;

// Suspend a transaction
Xid xid = tm.suspend();
```

**22. Resuming a Transaction**

```java
import javax.transaction.xa.Xid;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;

// Get a TransactionManager
TransactionManager tm = ...;

// Resume a transaction
Transaction tx = tm.resume(xid);
```

**23. Getting the Transaction Date**

```java
import javax.transaction.xa.Xid;
import javax.transaction.Transaction;

// Get a Transaction
Transaction tx = ...;

// Get the transaction date
Date date = tx.getDate();
```

**24. Getting the Transaction Time**

```java
import javax.transaction.xa.Xid;
import javax.transaction.Transaction;

// Get a Transaction
Transaction tx = ...;

// Get the transaction time
Time time = tx.getTime();
```

**25. Creating a Branch Qualifier**

```java
import javax.transaction.xa.BranchQualifier;

// Create a branch qualifier
BranchQualifier qualifier = new BranchQualifier(bytes);
```

**26. Getting the Bytes from a Branch Qualifier**

```java
import javax.transaction.xa.BranchQualifier;

// Get a BranchQualifier
BranchQualifier qualifier = ...;

// Get the bytes from the branch qualifier
byte[] bytes = qualifier.getBytes();
```

**27. Getting the Format Id from a Branch Qualifier**

```java
import javax.transaction.xa.BranchQualifier;

// Get a BranchQualifier
BranchQualifier qualifier = ...;

// Get the format id from the branch qualifier
int formatId = qualifier.getFormatId();
```

**28. Associating a Resource with a Transaction**

```java
import javax.transaction.xa.XAResource;
import javax.transaction.Transaction;

// Get a Transaction
Transaction tx = ...;

// Get a XAResource
XAResource res = ...;

// Associate a resource with a transaction
res.associate(tx);
```

**29. Disassociating a Resource from a Transaction**

```java
import javax.transaction.xa.XAResource;
import javax.transaction.Transaction;

// Get a Transaction
Transaction tx = ...;

// Get a XAResource
XAResource res = ...;

// Disassociate a resource from a transaction
res.disassociate(tx);
```

**30. Getting the Associated Transaction from a Resource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Get the associated transaction
Transaction tx = res.getTransaction();
```

**31. Getting the Global Transaction Id from a Resource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Get the global transaction id
Xid xid = res.getXid();
```

**32. Setting the Global Transaction Id on a Resource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Set the global transaction id
res.setXid(xid);
```

**33. Checking if a Resource is Associated with a Transaction**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Check if the resource is associated with a transaction
boolean associated = res.isAssociated();
```

**34. Getting the XAResourceManager from a Resource**

```java
import javax.transaction.xa.XAResource;
import javax.transaction.xa.XAResourceManager;

// Get a XAResource
XAResource res = ...;

// Get the XAResourceManager from the resource
XAResourceManager rm = res.getResourceManager();
```

**35. Getting the Resource Type from a Resource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Get the resource type
int type = res.getResourceType();
```

**36. Getting the Recovery Id from a Resource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Get the recovery id
Object id = res.getRecoveryId();
```

**37. Setting the Recovery Id on a Resource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Set the recovery id
res.setRecoveryId(id);
```

**38. Checking if a Resource Supports a Feature**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Check if the resource supports a feature
boolean supported = res.supports(feature);
```

**39. Recovering a Resource**

```java
import javax.transaction.xa.XAResource;
import javax.transaction.xa.XARecoveryCallback;

// Get a XAResource
XAResource res = ...;

// Get a XARecoveryCallback
XARecoveryCallback callback = ...;

// Recover the resource
res.recover(callback);
```

**40. Rolling Back a Resource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Rollback the resource
res.rollback();
```

**41. Getting the Current State of a Resource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Get the current state of the resource
int state = res.getState();
```

**42. Setting the Current State of a Resource**

```java
import javax.transaction.xa.XAResource;

// Get a XAResource
XAResource res = ...;

// Set the current state of the resource
res.setState(state);
```

**43. Getting the Name of a ResourceManager**

```java
import javax.transaction.xa.XAResourceManager;

// Get a XAResourceManager
XAResourceManager rm = ...;

// Get the name of the resource manager
String name = rm.getName();
```

**44. Getting the Version of a ResourceManager**

```java
import javax.transaction.xa.XAResourceManager;

// Get a XAResourceManager
XAResourceManager rm = ...;

// Get the version of the resource manager
int version = rm.getVersion();
```

**45. Getting the Recovery Coordinator for a ResourceManager**

```java
import javax.transaction.xa.XAResourceManager;
import javax.transaction.xa.XAResourceRecovery;

// Get a XAResourceManager
XAResourceManager rm = ...;

// Get the recovery coordinator for the resource manager
XAResourceRecovery coordinator = rm.getRecoveryCoordinator();
```

**46. Getting the XAConnectionFactory for a ResourceManager**

```java
import javax.transaction.xa.XAResourceManager;
import javax.transaction.xa.XAConnectionFactory;

// Get a XAResourceManager
XAResourceManager rm = ...;

// Get the XAConnectionFactory for the resource manager
XAConnectionFactory factory = rm.getXAConnectionFactory();
```

**47. Creating a Transactional Resource**

```java
import javax.transaction.xa.TransactionalResource;

// Create a TransactionalResource
TransactionalResource tr = new TransactionalResource(res);
```

**48. Getting the Underlying Resource from a Transactional Resource**

```java
import javax.transaction.xa.TransactionalResource;
import javax.transaction.xa.XAResource;

// Get a TransactionalResource
TransactionalResource tr = ...;

// Get the underlying resource from the transactional resource
XAResource res = tr.getResource();
```

**49. Getting the Transaction Manager from a Transactional Resource**

```java
import javax.transaction.xa.TransactionalResource;
import javax.transaction.TransactionManager;

// Get a TransactionalResource
TransactionalResource tr = ...;

// Get the transaction manager from the transactional resource
TransactionManager tm = tr.getTransactionManager();
```

**50. Setting the Transaction Manager on a Transactional Resource**

```java
import javax.transaction.xa.TransactionalResource;
import javax.transaction.TransactionManager;

// Get a TransactionalResource
TransactionalResource tr = ...;

// Get a TransactionManager
TransactionManager tm = ...;

// Set the transaction manager on the transactional resource
tr.setTransactionManager(tm);
```
