3/22/2005

JCA and SPI

JCA is an architecture for integrating J2EE servers with EISs.
EISs are accessible thru adapters that they provide. This is similar to drivers e.g. Oracle JDBC driver for accessing oracle database. These adapters are known as resource adapters in JCA parlance. JCA defines contracts that exists between J2EE server and these resource adapters. JCA contract ensures that a resource adapter would be pluggable in any J2EE server. JCA also specifies how these resource adapters are to be packaged and deployed (rar file). Actual implementation classes for the contract are specified in the deployment descriptor.

"An application server vendor extends its system only once to support the connector architecture and is then assured of connectivity to multiple EISs. Likewise, an EIS vendor provides one standard resource adapter and it has the capability to plug in to any application server that supports the connector architecture."

To be more precise, JCA SPI is the contract between the Server and the Resource Adapter. JCA CCI is the contract between the Application and the Resource Adapter. SPI allows Server to manage Connections, Transactions and Security. CCI allows application to connect and fetch records from underlying EIS in a platform independent way. However, Resource Adapter providers are not required to satisfy CCI. They must comply with SPI.
Moreover, CCI is not targeted towards Application, it is meant for use by EAI tools as it ensures seamless integration of different EISs. The CCI would be typically used in non-managed scenario where there in no Server and client has to manage everything.

Sun has just released a JCA Connector for JDBC drivers. This connector can plug any JDBC driver and then can be used as a JCA compliant resource adapter in any J2EE server.

"Many of the APIs that make up the J2EE platform include an SPI layer that allows service providers or other system level components to be plugged in. This specification does not describe the execution environment for all such service providers, nor the packaging and deployment requirements for all service providers. However, the J2EE Connector Architecture does define the requirements for certain types of service providers called resource adapters. Future versions of this specification will more fully define the J2EE SPI."