# Jakarta Connectors

Jakarta Connectors (JCA; formerly known as Java EE Connector Architecture and J2EE Connector Architecture) are a set of Java programming language tools designed for connecting application servers and enterprise information systems (EIS) as a part of enterprise application integration (EAI). While JDBC is specifically used to establish connections between Java applications and databases, JCA provides a more versatile architecture for connecting to legacy systems.

## JCA and Java EE

JCA was developed through the Java Community Process, with versions including JSR 16 (JCA 1.0), JSR 112 (JCA 1.5), and JSR 322 (JCA 1.6).
J2EE Version 1.3 requires application servers to support JCA Version 1.0.
J2EE Version 1.4 requires application servers to support JCA Version 1.5.
Java EE Version 6 requires application servers to support JCA version 1.6.

## Contracts

The Jakarta Connector Architecture defines a standard for connecting a compliant application server to an EIS. It defines a standard set of system-level contracts between the Jakarta EE application server and a resource adapter. The system contracts defined by Version 1.0 of the J2EE Connector Architecture are described by the specification as follows:

### Connection management

    Connection management enables an application server to pool connections to the underlying EIS and enables application components to connect. This leads to a scalable application environment that can support a large number of clients.

### Transaction management

Transaction management enables an application server to use a transaction manager to manage transactions across multiple resource managers. This contract also supports transactions that are managed internal to an EIS resource manager without the necessity of involving an external transaction manager.

### Security management

    Security management reduces security threats to the EIS and protects valuable information resources managed by the EIS.
JCA Version 1.5 adds system contracts to the specification as follows:

### Life cycle management

    Life cycle management enables an application server to manage the life cycle of a resource adapter from initiation through upgrades to obsolescence. This contract provides a mechanism for the application server to bootstrap a resource adapter instance during its deployment or application server startup, and to notify the resource adapter instance during its withdrawal or during an orderly shutdown.

### Work management

    Work management enables a resource adapter to do work (monitor network endpoints, invoke application components, and so on) by submitting work instances to an application server for execution. The application server dispatches threads to execute submitted work instances. This allows a resource adapter to avoid creating or managing threads directly, and allows an application server to efficiently pool threads and have more control over its runtime environment. The resource adapter can control the transaction context with which work instances are executed.

### Transaction inflow management

    Transaction inflow management enables a resource adapter to propagate an imported transaction to an application server. This contract also allows a resource adapter to transmit transaction completion and crash recovery calls initiated by an EIS, and ensures that the Atomicity, Consistency, Isolation and Durability (ACID) properties of the imported transaction are preserved.

### Message inflow management

    Message inflow management enables a resource adapter to asynchronously deliver messages to message endpoints residing in the application server, independent of the specific messaging style, messaging semantics and messaging infrastructure used to deliver messages. This contract also serves as the standard message provider pluggability contract that allows a wide range of message providers (Java Message Service (JMS), Java API for XML Messaging (JAXM), and so on) to be plugged into any Java EE compatible application server with a resource adapter.

## EIS Integration

JCA adapters can be built to integrate with various Enterprise Information System such as Siebel Systems, SAP AG, Great Plains Systems, Oracle Applications, etc. Siebel provides API to integrate with various platforms like Java, C++, .NET, Visual Basic, etc. For Java it provides an interface called 'Java Data Bean' (JDB). The Siebel adapter provides data access via the JDB API. Great Plains Systems provides an interface called eConnect to integrate with other platforms. SAP provides an interface for Java called SAP Java Connector (SAP JCo).