Specification: Jakarta Connectors

Version: 2.0

Status: Final Release

Release: 2020-10-10T17:55:36Z

Copyright (c) 2018, 2020 Eclipse Foundation.

Eclipse Foundation Specification License

By using and/or copying this document, or the Eclipse Foundation document from which this statement is linked, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:

Permission to copy, and distribute the contents of this document, or the Eclipse Foundation document from which this statement is linked, in any medium for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the document, or portions thereof, that you use:

  • link or URL to the original Eclipse Foundation document.

  • All existing copyright notices, or if one does not exist, a notice (hypertext is preferred, but a textual representation is permitted) of the form: "Copyright (c) [$date-of-document] Eclipse Foundation, Inc. https://www.eclipse.org/legal/efsl.php"

Inclusion of the full text of this NOTICE must be provided. We request that authorship attribution be provided in any software, documents, or other items or products that you create pursuant to the implementation of the contents of this document, or any portion thereof.

No right to create modifications or derivatives of Eclipse Foundation documents is granted pursuant to this license, except anyone may prepare and distribute derivative works and portions of this document in software that implements the specification, in supporting materials accompanying such software, and in documentation of such software, PROVIDED that all such works include the notice below. HOWEVER, the publication of derivative works of this document for use as a technical specification is expressly prohibited.

The notice is:

"Copyright (c) 2018, 2020 Eclipse Foundation. This software or document includes material copied from or derived from Jakarta™ Connectors https://jakarta.ee/specifications/connectors/2.0/"

Disclaimers

THIS DOCUMENT IS PROVIDED "AS IS," AND THE COPYRIGHT HOLDERS AND THE ECLIPSE FOUNDATION MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

THE COPYRIGHT HOLDERS AND THE ECLIPSE FOUNDATION WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.

The name and trademarks of the copyright holders or the Eclipse Foundation may NOT be used in advertising or publicity pertaining to this document or its contents without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders.

1. Jakarta Connectors, Version 2.0

Copyright (c) 2013, 2020 Oracle and/or its affiliates

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

2. Introduction

The Jakarta Platform, Enterprise Edition (Jakarta EE platform) provides containers for client applications, web components based on Jakarta Servlets and Jakarta Server Pages and Jakarta Enterprise Beans components. These containers provide deployment and runtime support for application components. They provide a federated view of the services provided by the underlying application server for the application components.

Containers can run on existing systems; for example, web servers for the web containers; application servers, TP monitors, and database systems for Enterprise Bean containers. This enables enterprises to leverage both the advantages of their existing systems and those of Jakarta EE. Enterprises can write, or rewrite, new applications using Jakarta EE capabilities and can also encapsulate parts of existing applications in Enterprise Beans, Jakarta Server Pages or servlets.

Enterprise applications access functions and data associated with applications running on Enterprise Information Systems (EIS). Application servers extend their containers and support connectivity to heterogeneous EISs. Enterprise tools and Enterprise Application Integration (EAI) vendors add value by providing tools and frameworks to simplify the EIS integration task.

For enterprise application integration, bi-directional connectivity between enterprise applications and EIS is essential. Jakarta Connectors defines standard contracts that allow bi-directional connectivity between enterprise applications and EISs. It also formalizes the relationships, interactions, and the packaging of the integration layer, thus enabling enterprise application integration.

2.1. Overview

Jakarta Connectors defines a standard architecture for connecting the Jakarta EE platform to heterogeneous EISs. Examples of EISs include Enterprise Resource Planning (ERP), mainframe transaction processing (TP), and database systems.

Jakarta Connectors defines a set of scalable, secure, and transactional mechanisms that enable the integration of EISs with application servers1 and enterprise applications.

Jakarta Connectors also defines a Common Client Interface (CCI) for EIS access. The CCI defines a client API for interacting with heterogeneous EISs.

Jakarta Connectora enables an EIS vendor to provide a standard resource adapter for its EIS. A resource adapter is a system-level software driver that is used by a Java application to connect to an EIS. The resource adapter plugs into an application server and provides connectivity between the EIS, the application server, and the enterprise application. The resource adapter serves as a protocol adapter that allows any arbitrary EIS communication protocol to be used for connectivity.

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

2.2. Scope

Version 2.0 of the connector architecture defines:

  • A standard set of system-level contracts between an application server and EIS. These contracts focus on the important system-level aspects of integration: connection management, transaction management, and security.

  • A Common Client Interface (CCI) that defines a client API for interacting with multiple EISs.

  • A standard deployment and packaging protocol for resource adapters.

Refer to section 2.2.2 for the rationale behind the Common Client Interface.

  • Lifecycle management contract. A contract between an application server and a resource adapter that allows an application server to manage the lifecycle of a resource adapter. 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 undeployment or during an orderly shutdown of the application server.

  • Work management contract. A contract between an application server and a resource adapter that allows a resource adapter to do work (monitor network endpoints, call application components, etc.) 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 security context and transaction context with which Work instances are executed.

  • Transaction inflow contract. A contract between an application server and a resource adapter that allows 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 ACID (Atomicity, Consistency, Isolation and Durability) properties of the imported transaction are preserved.

  • Message inflow contract. A standard, generic contract between an application server and a resource adapter that allows 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), etc.) to be plugged into any Java EE compatible application server by way of a resource adapter.

  • Packaging Model. Describes the packaging model for different types of resource adapters (outbound only, inbound only, or both).

  • Generic work context contract. A generic contract that enables a resource adapter to control the execution context of a Work instance that it has submitted to the application server for execution. The Generic work contract provides the mechanism for a resource adapter to augment the runtime context of a Work instance with additional contextual information flown-in from the EIS. This contract enables a resource adapter to control, in a more flexible manner, the contexts in which the Work instances submitted by it are executed by the application server’s WorkManager .

  • Security work context. A standard contract that enables a resource adapter to establish security information while submiting a Work instance for execution to a WorkManager and while delivering messages to message endpoints residing in the application server. This contract provides a mechanism to support the execution of a Work instance in the context of an established identity. It also supports the propagation of user information/Principal information from an EIS to a MessageEndpoint during Message Inflow.

Version 2.0 of Jakarta Connectors moves the old Java Connectors Architecture specification to Jakarta EE.

2.3. Target Audience

The target audience for this specification includes:

  • EIS vendors and resource adapter providers

  • Messaging system vendors

  • Application server vendors and container providers

  • Enterprise application developers and system integrators

  • Enterprise tool and EAI vendors

The system-level contracts between an application server and an EIS are targeted towards EIS vendors (or resource adapter providers, if the two roles are different) and application server vendors. The CCI is targeted primarily towards enterprise tools and EAI vendors.

2.4. JDBC and Jakarta Connectors

The JavaTM DataBase Connectivity ("JDBCTM") API defines a standard Java API for accessing relational databases. The JDBC technology provides an API for sending SQL statements to a database and processing the tabular data returned by the database.

The connector architecture is a standard architecture for integrating Java EE applications with EISs that are not relational databases. Each of these EISs currently provides a native function call API for identifying a function to call, specifying its input data, and processing its output data. The goal of the Common Client Interface (CCI) is to provide an EIS independent API for coding these EIS function calls.

The CCI is targeted at EIS development tools and other sophisticated users of EISs. The CCI provides a way to minimize the EIS specific code required by such tools. Most Java EE developers will access EISs using these tools rather than using CCI directly.

It is expected that many Java EE applications will combine relational database access using JDBC with EIS access using EIS access tools based on CCI.

The connector architecture defines a standard SPI (Service Provider Interface) for integrating the transaction, security, and connection management facilities of an application server with those of a transactional resource manager. The JDBC 3.0 specification JDBC API Specification, version 4.1 specifies the relationship of JDBC to the SPI specified in the connector architecture.

2.5. Relationship With Other Integration Technologies (JBI and SCA)

The Enterprise Application Integration (EAI) and Business to Business integration (B2B) functional space may be considered, in an abstract sense, as forms of network service composition. That is, in a typical EAI/B2B scenario, an enterprise application may make use of network resources to realize some of its functionality. In this context, the network resource may be a REST service, a SOAP service, a database server, a JMS topic/queue, some legacy application, etc.

The Java Business Integration (JBI) and Service Component Architecture (SCA) are integration technologies that come to mind in the EAI/B2B space. They allow the creation and consumption of such network services. They enable the building of applications through composition of services in an enterprise by adopting a Service Oriented Architecture (SOA). These technologies can be used to implement integration with various forms of network resources that are not tied to a specific external architectural style.

The Connector architecture covers the category of network resources that expose some form of connection oriented protocol. Database servers, JMS systems, legacy apps, etc. typically fall into this category of network resource. The Connector architecture is the mechanism that the Java EE platform provides to simplify use of such network resources.

2.6. Organization

This document begins by describing the rationale and goals for creating a standard architecture to integrate an application server with multiple heterogeneous EISs. It then describes the key concepts relevant to the connector architecture. These sections provide an overview of the architecture.

This document then describes typical scenarios for using the connector architecture. This chapter introduces the various roles and responsibilities involved in the development and deployment of enterprise applications that integrate with multiple EISs.

After these descriptive sections, this document focuses on the prescriptive aspects of the connector architecture.

2.7. Document Conventions

A regular Palatino font is used for describing the connector architecture.

An italic font is used for paragraphs that contain descriptive notes providing clarifications.

A regular Courier font is used for Java source code, class, interface and method names.

The requirements section occurring in various chapters of this document highlight only the salient requirements, but do not contain all the requirements. So, this entire document must be used as a requirements specification.

Note that the scenarios described in this document are illustrative in scope. The intent of the scenarios is not to specify a prescriptive way of implementing a particular contract.

This document uses the Jakarta Enterprise Beans component model to describe some scenarios. The Jakarta Enterprise Beans specification (see Jakarta Enterprise Beans Specification, version 3.2 provides the latest details of the component model.

3. Overview

This chapter introduces key concepts that are required to understand Jakarta Connectors. It lays down a reference framework to facilitate a formal specification of the connector architecture in the subsequent chapters of this document.

3.1. Definitions

3.1.1. Enterprise Information System (EIS)

An EIS provides the information infrastructure for an enterprise. An EIS offers a set of services to its clients. These services are exposed to clients as local and/or remote interfaces. Examples of an EIS include:

  • Enterprise Resource Planning (ERP) system

  • Mainframe transaction processing (TP) system

  • Legacy database system

There are two aspects of an EIS:

  • System level services - for example, SAP RFC, CICS ECI

  • An application specific interface - for example, the table schema and specific stored procedures of a database, the specific CICS TP program

3.1.2. Connector Architecture

An architecture for integrating Jakarta EE servers with EISs. There are two parts to this architecture: an EIS vendor-provided resource adapter and an application server that allows this resource adapter to be plugged in. This architecture defines a set of contracts (such as transactions, security, connection management) that a resource adapter has to support to plug in to an application server.

These contracts support bi-directional communication (outbound and inbound) between an application server and an EIS by way of a resource adapter. That is, the application server may use the resource adapter for outbound communication to the EIS, and it may also use the resource adapter for inbound communication from the EIS.

3.1.3. EIS Resource

An EIS resource provides EIS-specific functionality to its clients. Examples are:

  • A record or set of records in a database system

  • A business object in an ERP system

  • A transaction program in a transaction processing system

3.1.4. Resource Manager (RM)

A resource manager manages a set of shared EIS resources. A client requests access to a resource manager to use its managed resources. A transactional resource manager can participate in transactions that are externally controlled and coordinated by a transaction manager.

In the context of the connector architecture, a client of a resource manager can either be a middle-tier application server or a client-tier application. A resource manager is typically in a different address space or on a different machine from the client that accesses it.

This document refers to an EIS as a resource manager when it is mentioned in the context of transaction management. Examples of resource managers are a database system, a mainframe TP system, and an ERP system.

3.1.5. Managed Environment

A managed environment defines an operational environment for a Jakarta EE-based, multi-tier, web-enabled application that accesses EISs. The application consists of one or more application components—Jakarta Enterprise Beans, Jakarta Server Pages, servlets—which are deployed on containers. These containers can be one of the following:

  • Web containers that host Jakarta Server Pages, servlets, and static HTML pages

  • Enterprise Bean containers that host Enterprise Bean components

  • Application client containers that host standalone application clients

3.1.6. Non-Managed Environment

A non-managed environment defines an operational environment for a two-tier application. An application client directly uses a resource adapter to access the EIS, which defines the second tier of a two-tier application.

3.1.7. Connection

A connection provides connectivity to a resource manager. It enables an application client to connect to a resource manager, perform transactions, and access services provided by that resource manager. A connection can be either transactional or non-transactional. Examples include a database connection and an SAP R/3 connection. A connection to a resource manager may be used by a client for bi-directional communication, depending on the capabilities of the resource manager.

3.1.8. Application Component

An application component can be a server-side component, such as an Jakarta Enterprise Bean, Jakarta Server Page, or servlet, that is deployed, managed, and executed on an application server. It can also be a component executed on the web-client tier but made available to the web-client by an application server. Examples of the latter type of application component include a Java applet, and a DHTML page.

3.1.9. Container

A container is a part of an application server that provides deployment and runtime support for application components. It provides a federated view of the services provided by the underlying application server for the application components. For more details on different types of standard containers, refer to the Jakarta Enterprise Beans (see Jakarta™ Enterprise Beans Specification, Version 3.2, Jakarta Server Pages, and servlet specifications.

3.2. Rationale

This section describes the rationale behind Jakarta Connectors.

3.2.1. System Contracts

A standard architecture is needed to integrate various EISs with an application server. Without a standard, EIS vendors and application server vendors may have to use vendor-specific architectures to provide EIS integration.

Jakarta Connectors provides a Java solution to the problem of bi-directional connectivity between the multitude of application servers and EISs. By using the Jakarta Connectors, it is no longer necessary for EIS vendors to customize their product for each application server. An application server vendor who conforms to the Jakarta Connectors also does not need to add custom code whenever it wants to extend its application server to support connectivity to a new EIS.

Jakarta Connectors enables an EIS vendor to provide a standard resource adapter for its EIS. The resource adapter plugs into an application server and provides the underlying infrastructure for the integration between an EIS and the application server.

An application server vendor extends its system only once to support Jakarta Connectors 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 Jakarta Connectors.

The following figure shows that a standard EIS resource adapter can plug into multiple application servers. Similarly, multiple resource adapters for different EISs can plug into an application server. This system-level pluggability is made possible through Jakarta Connectors.

If there are m application servers and n EISs, Jakarta Connectors reduces the scope of the integration problem from an m x n problem to an m + n problem.

Figure System Level Pluggability Between Application Servers and EISs

image

3.2.2. Common Client Interface

An enterprise tools vendor provides tools that lead to a simple application programming model for EIS access, thereby reducing the effort required in EIS integration. An EAI vendor provides a framework that supports integration across multiple EISs. Both types of vendors need to integrate across heterogeneous EISs.

Each EIS typically has a client API that is specific to the EIS. Examples of EIS client APIs are RFC for SAP R/3 and ECI for CICS.

An enterprise tools vendor adapts different client APIs for target EISs to a common client API. The adapted API is typically specific to a tools vendor and supports an application programming model common across all EISs. Adapting the API requires significant effort on the part of a tools vendor. In this case, the m x n integration problem applies to tools vendors.

Jakarta Connectors provides a solution for the m x n integration problem for tools and EAI vendors. Jakarta Connectors specifies a standard Common Client Interface (CCI) that supports a common client API across heterogeneous EISs.

All EIS resource adapters that support CCI are capable of being plugged into enterprise tools and EAI frameworks in a standard way. A tools vendor need not do any API adoption; the vendor can focus on providing its added value of simplifying EIS integration.

The CCI drastically reduces the effort and learning requirements for tools vendor by narrowing the scope of an m x n problem to an m + n problem if there are m tools and n EISs.

3.3. Goals

Jakarta Connectors has been designed with the following goals:

  • Simplify the development of scalable, secure, and transactional resource adapters for a wide range of EISs—ERP systems, database systems, mainframe-based transaction processing systems.

  • Be sufficiently general to cover a wide range of heterogeneous EISs. The sufficient generality of Jakarta Connectors ensures that there are various implementation choices for different resource adapters; each choice is based on the characteristics and mechanisms of an underlying EIS.

  • Be not tied to a specific application server implementation, but applicable to all Jakarta EE platform compliant application servers from multiple vendors.

  • Provide a standard client API for enterprise tools and EAI vendors. The standard API will be common across heterogeneous EISs.

  • Express itself in a manner that allows an organization to unambiguously determine whether or not an implementation is compatible.

  • Be simple to understand and easy to follow, regardless of whether one is designing a resource adapter for a particular EIS or developing/deploying application components that need to access multiple EISs. This simplicity means Jakarta Connectors introduces only a few new concepts, and places minimal implementation requirements so that it can be leveraged across different integration scenarios and environments.

  • Define contracts and responsibilities for various roles that provide pieces for standard bi-directional connectivity to an EIS. This enables a standard resource adapter from a EIS vendor to be pluggable across multiple application servers.

  • Enable an enterprise application programmer in a non-managed application environment to directly use the resource adapter to access the underlying EIS. This is in addition to managed access to an EIS, with the resource adapter deployed in the middle-tier application server.

4. Architecture of Jakarta Connectors

This chapter gives an overview of the architecture.

Multiple resource adapters—that is, one resource adapter per type of EIS—are pluggable into an application server. This capability enables application components deployed on the application server to access the underlying EISs.

An application server and an EIS collaborate to keep all system-level mechanisms—transactions, security, and connection management—transparent from the application components. As a result, an application component provider focuses on the development of business and presentation logic for its application components and need not get involved in the system-level issues related to EIS integration. This leads to an easier and faster cycle for the development of scalable, secure, and transactional enterprise applications that require connectivity with multiple EISs.

Figure Overview of the Jakarta Connectors architecture

image

4.1. System Contracts

To achieve a standard system-level pluggability between application servers and EISs, Jakarta Connectors defines a standard set of system-level contracts between an application server and an EIS. The EIS side of these system-level contracts are implemented in a resource adapter.

A resource adapter is specific to an underlying EIS. It is a system-level software driver that is used by an application server or an application component to connect to an EIS.

A resource adapter plugs into an application server. The resource adapter and application server collaborate to provide the underlying mechanisms—transactions, security, connection pooling, and dispatch to application components.

A resource adapter is used within the address space of the application server. Examples of resource adapters are:

  • A JDBC driver to connect to a relational database, as specified in the JDBC specification. For more information on JDBC, see JDBC API Specification, version 4.1

  • A resource adapter to connect to an ERP system

  • A resource adapter to connect to a TP system

  • A resource adapter to plug-in a messaging system

A resource adapter may provide different types of connectivity between an application and an EIS.

  • Outbound communication. The resource adapter allows an application to connect to an EIS system and perform work. All communication is initiated by the application. In this case, the resource adapter serves as a passive library for connecting to an EIS, and executes in the context of the application threads.

  • Inbound communication. The resource adapter allows an EIS to call application components and perform work. All communication is initiated by the EIS. The resource adapter may request threads from the application server or create its own threads.

  • Bi-directional communication. The resource adapter supports both outbound and inbound communication.

Jakarta Connectors defines the following set of standard contracts between an application server and EIS:

  • A connection management contract that enables an application server to pool connections to an underlying EIS, and enables application components to connect to an EIS. This leads to a scalable application environment that can support a large number of clients requiring access to EISs.

  • A transaction management contract between the transaction manager and an EIS that supports transactional access to EIS resource managers. This contract 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.

  • A security contract that enables secure access to an EIS. This contract provides support for a secure application environment that reduces security threats to the EIS and protects valuable information resources managed by the EIS.

  • A lifecycle management contract that allows an application server to manage the lifecycle of a resource adapter. 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 undeployment or during an orderly shutdown of the application server.

  • A work management contract that allows a resource adapter to do work (monitor network endpoints, call application components, etc.) 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 security context and transaction context with which Work instances are executed.

  • A generic work context contract that enables a resource adapter to control the execution context of a Work instance that it has submitted to the application server for execution. The Generic Work Context Contract provides the mechanism for a resource adapter to augment the runtime context of a Work instance with additional contextual information flown-in from the EIS. This contract enables a resource adapter to control, in a more flexible manner, the contexts in which the Work instances submitted by it are executed by the application server’s WorkManager .

  • A transaction inflow contract that allows 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 ACID properties of the imported transaction are preserved.

  • A security work context that enables a resource adapter to establish security information while submiting a Work instance for execution to a WorkManager and while delivering messages to message endpoints residing in the application server. This contract provides a mechanism to support the execution of a Work instance in the context of an established identity. It also supports the propagation of user information/Principal information from an EIS to a MessageEndpoint during Message Inflow.

  • A message inflow contract that allows 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 (Jakarta Messaging, Jakarta XML Web Services, etc.) to be plugged into any Jakarta EE compatible application server by way of a resource adapter.

Overview of Jakarta Connectors Architecture does not illustrate any contracts that are internal to an application server implementation. The specific mechanisms and contracts within an application server are outside the scope of the connector architecture specification. This specification focuses on the system-level contracts between the application server and the EIS.

Overview of Jakarta Connectors Architecture, the application server, application component and resource adapter are shown as separate entities. This is done to illustrate that there is a logical separation of the respective roles and responsibilities defined for the support of the system level contracts. However, this separation does not imply a physical separation, as in an application server, application component and a resource adapter running in separate processes.

4.2. Client API

The client API used by application components for EIS access may be defined as:

  • The standard Common Client Interface (CCI) as specified in Common Client Interface.

  • A client API specific to the type of a resource adapter and its underlying EIS. An example of such an EIS specific client API is JDBC for relational databases.

The Common Client Interface (CCI) defines a common client API for accessing EISs. The CCI is targeted towards Enterprise Application Integration (EAI) and enterprise tools vendors.

4.3. Requirements

Jakarta Connectors requires that the Jakarta Connectors-compliant resource adapter and the application server support the system contracts. Detailed requirements for each system contract are specified in later chapters.

Jakarta Connectors recommends, though it does not mandate, that a resource adapter support CCI as the client API. The recommendation enables Jakarta Connectors to provide a solution for the m x n integration problem for application development tools and EAI vendors.

Jakarta Connectors allows a resource adapter with an EIS-specific client API to support system contracts and to be capable of standard Jakarta Connectors-based pluggability into an application server.

4.4. Non-Managed Environment

Jakarta Connectors supports access to EISs from non-managed application clients; for example, Java applications and applets.

In a non-managed two-tier application environment, an application client directly uses a resource adapter library. A resource adapter, in this case, exposes its low-level transactions and security APIs to its clients. An application client has to take responsibility for managing security and transactions (and rely on connection pooling if done by the resource adapter internally) by using the low-level APIs exposed by the resource adapter. This model is similar to the way a two-tier JDBC application client accesses a database system in a non-managed environment.

4.5. Standalone Container Environment

Server Providers can provide a Connector container within a product that implements the Jakarta EE Full Profile or within a subset profile such as the Jakarta EE Web Profile. The complete set of application server requirements in this specification is required for a compliant Jakarta EE Connectors container within an implementation of the Jakarta EE Full Profile. The minimum set, listed below, must be supported for a compliant Jakarta EE Connectors container within an implementation of any subset of the Jakarta EE Full Profile. Overall profile requirements are described within the Jakarta™ EE Platform Specification Version 9.

Non-”Full Profile” implementations may only support a subset of the component specifications that were mandated to be present in a full Jakarta EE platform product implementation. An implementation of the Connector specification bundled in such a managed environment is described as standalone connector container below.

Based on the availability of other dependent component specification implementations, the following requirements must be satisfied by a standalone connector container.

  • If a MessageEndpointFactory implementation (such as support for message-driven beans) is available, the Message Inflow requirements specified in Message Inflow must be satisfied by it.

  • If an implementation of the Bean Validation specification is provided, the requirements in Jakarta™ Bean Validation Specification, Version 2.0 must be supported.

An existing resource adapter archive RAR may not be fully functional in a standalone implementation, though. For example a bi-directional resource adapter archive deployed on a standalone implementation that does not support Message Inflow would not have the corresponding Message Inflow support ( endpointActivation ) provided to the resource adapter.

A standalone connector container implementation that does not support one of the dependent component specification implementations listed above must not fail the deployment of a resource adapter that uses the capabilities in the unsupported specifications. For instance, if a bi-directional resource adapter is deployed to a standalone connector container that does not support Message Inflow, the container will not be able to make calls to the endpointActivation method in the ResourceAdapter JavaBean because the implementation does not support Message Inflow (and therefore MessageEndpoint deployment). However, the container must support the deployment of a bi-directional resource adapter and support other capabilities of the resource adapter that do not rely on support for Message Inflow (outbound communication, use of the WorkManager etc.).

The standalone connector container must support the baseline compatibility requirements as defined by the Jakarta™ Authentication specification and support the Security Inflow requirements specified in Security Inflow. See Jakarta™ Authentication Specification, Version 1.1 for more information on the Jakarta™ Authentication specification.

This specification does not define new application components or require any particular existing application component to be supported in the standalone connector container environment.

5. Roles and Scenarios

This chapter describes a set of roles specific to the connector architecture. The goal of this chapter is to specify contracts that ensure that the output of each role is compatible with the input of the other role. Later chapters specify a detailed set of responsibilities for each role, relative to the system-level contracts.

5.1. Roles

This section describes the roles and responsibilities specific to the connector architecture.

5.1.1. Resource Adapter Provider

The resource adapter provider is an expert in the technology related to an EIS and is responsible for providing a resource adapter for an EIS. Since this role is highly EIS specific, an EIS vendor typically provides the resource adapter for its system.

A third-party vendor (who is not an EIS vendor) may also provide an EIS resource adapter and its associated set of application development tools. Such a provider typically specializes in writing resource adapters and related tools for a large number of EISs.

5.1.2. Application Server Vendor

The application server vendor provides an implementation of a Jakarta EE-compliant application server that provides support for component based enterprise applications. A typical application server vendor is an OS vendor, middleware vendor, or database vendor. The role of an application server vendor is typically the same as that of a container provider.

The Jakarta EE platform specification (see Jakarta Platform, Enterprise Edition (Jakarta EE) Specification, version 9) specifies requirements for a Jakarta EE platform provider.

5.1.3. Container Provider

The container provider is responsible for providing a container implementation for a specific type of application component. For example, the container provider may provide a container for Jakarta Enterprise Beans components. Each type of application component—Jakarta Enterprise Bean, Jakarta Servlet, Server Pages—has its own set of responsibilities for its container provider. The respective specifications outline these responsibilities.

A container implementation typically provides the following functionality:

  • It provides deployed application components with transaction and security management, distribution of clients, scalable management of resources, and other services that are generally required as part of a managed server platform.

  • It provides application components with connectivity to an EIS by transparently managing security, resources, and transactions using the system-level contracts with the EIS-specific resource adapter.

  • It insulates application components from the specifics of the underlying system-level mechanisms by supporting a simple, standard contract with the application component. Refer to the Jakarta Enterprise Beans specification (Jakarta Enterprise Beans Specification, version 4.0) for more details on the Jakarta Enterprise Beans component contract.

The expertise of the container provider is system-level programming, with its focus on the development of a scalable, secure, and transaction-enabled container.

The container provider is also responsible for providing deployment tools necessary for the deployment of application components and resource adapters. It is also required to provide runtime support for the deployed application components.

The container provider typically provides tools that allow the system administrator to monitor and manage a container and application components during runtime.

5.1.4. Application Component Provider

In the context of the connector architecture, the application component provider produces an application component that accesses one or more EISs to provide its application functionality.

The application component provider is an application domain expert. In the case of application components targeted towards integration with multiple EISs, various business tasks and entities are implemented based on access to EIS data and functions.

The application component provider typically programs against easy-to-use Java abstractions produced by application development tools. These Java abstractions are based on the Common Client interface (CCI).

The application component provider is not required to be an expert at system level programming. The application component provider does not program transactions, security, concurrency, or distribution, but relies on a container to provide these services transparently.

The application component provider is responsible for specifying structural information for an application component and its external dependencies. This information includes, for example, the name and type of the connection factories, and security information.

The output of an application component provider is a Java™ Archive (JAR) file that contains the application components and any additional Java classes required to connect to EISs.

5.1.5. Enterprise Tools Vendors

The application component provider relies on tools to simplify application development and EIS integration. Since programming client access to EIS data and functions is a complex application development task, an application development tool reduces the effort and complexity involved in this task.

Enterprise tools serve different roles in the application development process, as follows:

  • Data and function mining tool - enables application component providers to look at the scope and structure of data and functions existing in an EIS

  • Analysis and design tool - enables application component providers to design an application in terms of EIS data and functions

  • Code generation tool - generates Java classes for accessing EIS data and functions. A mapping tool that bridges across two different programming models (object to relational or vice-versa) falls into this category of tools.

  • Application composition tool - enables application component providers to compose application components from Java classes generated by a code generation tool. This type of tool typically uses the JavaBeans™ component model to enhance the ease of programming and composition.

  • Deployment tool - used by application component providers and deployers to set transaction, security, and other deployment time requirements.

A number of these tools may be integrated together to form an end-to-end application development environment.

In addition, various tools and middleware vendors offer EAI frameworks that simplify integration across heterogeneous EISs.

5.1.6. Application Assembler

The application assembler combines various application components into a larger set of deployable units. The input of the application assembler is one or more JAR files produced by an application component provider and the output is one or more JAR files with a deployment descriptor. A deployment descriptor may not be provided by the application assembler if metadata annotations (see Metadata Annotations) are used to describe deployment information.

The application assembler is typically a domain expert who assembles application components to produce an enterprise application. To achieve this goal, the application assembler takes application components, possibly from multiple application component providers, and assembles these components.

5.1.7. Deployer

The deployer takes one or more deployable units of application components, produced by the application assembler or component provider, and deploys the application components in a target operational environment. An operational environment is comprised of an application server and multiple connected EISs.

The deployer is responsible for resolving all external dependencies declared by the application component provider. For example, the deployer ensures that all connection factories used by the application components are present in an operational environment. To perform its role, the deployer typically uses the application server-provided deployment tools.

The deployer is also responsible for the deployment of resource adapters. Since an operational environment may include multiple EISs, the role of the deployer is more intensive and complex than that in a non-EIS scenario. The deployer has to understand security, transaction, and connection management-related aspects of multiple EISs that are configured in an operational environment.

5.1.8. System Administrator

The system administrator is responsible for the configuration and administration of a complete enterprise infrastructure that includes multiple containers and EISs.

In an operational environment that has multiple EISs, the deployer should manage the operational environment by working closely with the system administrators of respective EISs. This enables the deployer to resolve deployment issues while deploying application components and resource adapters in a target operational environment.

This chapter introduced the roles involved in the connector architecture. The later chapters specify responsibilities for each role in more detail.

5.2. Scenario: Integrated Purchase Order System

This section describes a scenario that illustrates the use of the connector architecture. The following description is kept at a high level. Specific scenarios related to transaction management, security, connection management, and inbound communications are described in subsequent chapters.

The following diagram shows the different pieces that comprise this scenario:

5.2.1. Illustration of a Scenario Based on the Connector Architecture