# Java EE compliance: Java Transaction API and javax.sql interfaces

The Java Platform, Enterprise Edition (the Java EE platform) is a standard for development of enterprise applications based on reusable components in a multi-tier environment.

In addition to the features of the Java Platform, Standard Edition (the Java SE platform), the Java EE platform adds support for Enterprise JavaBeans (EJB) technology, the Java Persistence API, JavaServer Faces technology, Java Servlet technology, JavaServer Pages (JSP) technology, and many more. The Java EE platform architecture is used to bring together existing technologies and enterprise applications in a single, manageable environment.

Derby is a Java EE platform conformant component in a distributed Java EE system. As such, Derby is one part of a larger system that includes, among other things, a JNDI server, a connection pool module, a transaction manager, a resource manager, and user applications. Within this system, Derby can serve as the resource manager.

For more information on the Java EE platform, see http://www.oracle.com/technetwork/java/javaee/documentation/index.html.

In order to qualify as a resource manager in a Java EE system, the Java EE platform requires these basic areas of support:

- JNDI support

  Allows calling applications to register names for databases and access them through those names instead of through database connection URLs. Implementation of one of the JDBC interfaces, javax.sql.DataSource, provides this support.

- Connection pooling

  A mechanism by which a connection pool server keeps a set of open connections to a resource manager (Derby). A user requesting a connection can get one of the available connections from the pool. Such a connection pool is useful in client/server environments because establishing a connection is relatively expensive. In an embedded environment, connections are much cheaper, making the performance advantage of a connection pool negligible. Implementation of two of the JDBC interfaces, javax.sql.ConnectionPoolDataSource and javax.sql.PooledConnection, provides this support.

- XA support

  XA is one of several standards for distributed transaction management. It is based on two-phase commit. The javax.sql.XAxxx interfaces, along with the java.transaction.xa package, are an abstract implementation of XA. For more information about XA, see X/Open CAE Specification-Distributed Transaction Processing: The XA Specification, X/Open Document No. XO/CAE/91/300 or ISBN 1 872630 24 3. Implementation of the JTA API, the interfaces of the java.transaction.xa package (javax.sql.XAConnection, javax.sql.XADataSource, javax.transaction.xa.XAResource, javax.transaction.xa.Xid, and javax.transaction.xa.XAException), provides this support.

With the exception of the core JDBC interfaces, these interfaces are not visible to the end-user application; instead, they are used only by the other back-end components in the system.
Note: For information on the classes that implement these interfaces and on how to use Derby as a resource manager, see "Using Derby as a Java EE Resource Manager" in the Derby Developer's Guide.

- The JTA API
  The JTA API is made up of the two interfaces and one exception that are part of the java.transaction.xa package. Derby fully implements this API.
- javax.sql: JDBC interfaces
  Derby implements a number of JDBC interfaces for Java EE compliance.