Module java.sql
Package javax.sql

## Interface XADataSource

All Superinterfaces:
  CommonDataSource

    public interface XADataSource
    extends CommonDataSource

A factory for `XAConnection` objects that is used internally. An object that implements the `XADataSource` interface is typically registered with a naming service that uses the Java Naming and Directory Interface™ (JNDI).

An implementation of `XADataSource` must include a public no-arg constructor.

Since:
  1.4

### Method Summary

All Methods Instance Methods Abstract Methods Default Methods
`default XAConnectionBuilder` `createXAConnectionBuilder()` Creates a new `XAConnectionBuilder` instance
`XAConnection` `getXAConnection()` Attempts to establish a physical database connection that can be used in a distributed transaction.
`XAConnection` `getXAConnection(String user, String password)` Attempts to establish a physical database connection, using the given user name and password.

### Methods inherited from interface javax.sql.CommonDataSource

`createShardingKeyBuilder, getLoginTimeout, getLogWriter, getParentLogger, setLoginTimeout, setLogWriter`

### Method Detail

#### getXAConnection

    XAConnection getXAConnection()
                          throws SQLException

Attempts to establish a physical database connection that can be used in a distributed transaction.

Returns:
  an `XAConnection` object, which represents a physical connection to a data source, that can be used in a distributed transaction
Throws:
  `SQLException` - if a database access error occurs
  `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
  `SQLTimeoutException` - when the driver has determined that the timeout value specified by the `setLoginTimeout` method has been exceeded and has at least tried to cancel the current database connection attempt
Since:
  1.4

#### getXAConnection

    XAConnection getXAConnection(String user,
                                 String password)
                          throws SQLException

Attempts to establish a physical database connection, using the given user name and password. The connection that is returned is one that can be used in a distributed transaction.

Parameters:
  `user` - the database user on whose behalf the connection is being made
  `password` - the user's password
Returns:
  an `XAConnection` object, which represents a physical connection to a data source, that can be used in a distributed transaction
Throws:
  `SQLException` - if a database access error occurs
  `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
  `SQLTimeoutException` - when the driver has determined that the timeout value specified by the `setLoginTimeout` method has been exceeded and has at least tried to cancel the current database connection attempt
Since:
  1.4

#### createXAConnectionBuilder

    default XAConnectionBuilder createXAConnectionBuilder()
                                                   throws SQLException

Creates a new `XAConnectionBuilder` instance

Implementation Requirements:
  The default implementation will throw a `SQLFeatureNotSupportedException`.
Returns:
  The XAConnectionBuilder instance that was created
Throws:
  `SQLException` - if an error occurs creating the builder
  `SQLFeatureNotSupportedException` - if the driver does not support sharding
Since:
  9
See Also:
  `XAConnectionBuilder`