Enterprise Server supports multiple XARs defined for a single
enterprise server region. The following scenarios provide XAR configuration
and application organization
recommendations that yield the best results when using multiple XARs:
- Scenario: Multiple XARs of different RM switch module types
- For a single
enterprise server region, you can define and use one XAR for each RM switch module type. A simple scenario such as this does not require any recompilation
of source code, nor does it require special XAR configuration.
Enterprise Server handles all
CICS transactions,
Web services, and batch jobs correctly.
- Scenario: Multiple XARs of the same type
-
In this scenario, suppose your application requires three XARs, all of the same type, but only one XAR is required for CICS
applications. The other two are used in batch jobs only.
Here, you define the XAR for the CICS application with no special configuration options, and the two XARs used for batch jobs
by including
BatchOnly=T in the xa_open string. See
SQL xa_open string Configuration Options for more information.
- Scenario: Multiple XARs of the same type
-
In this scenario, you have two XARs of the same type. Both are required for
CICS or
Web services applications, and each is used by a distinct SQL program module executed by the application.
Here you must take steps to ensure that every SQL statement uses the correct XAR when it executes under
Enterprise Server.
- Assign each XAR a unique XAR ID.
- Compile each SQL program module separately, using the appropriate preprocessor, and including the XAID compiler directive
option. For each program, set the XAID compiler directive option to the value of the appropriate, corresponding XAR ID.
- Scenario: Multiple XARs executed from the same program module
- In this scenario, you have an application that needs to access two distinct XARs of the same or differing types, but both
from within
the same source code module. In this case, you have two options:
- Separate the source code
- We highly recommend this option as it requires minimal source code changes:
- Separate the source code module into distinct modules, one for each that requires a distinct XAR.
- Compile each program module using the XAID compiler directive option set to the value of its corresponding XAR ID.
- Modify the source code
-
- DB2 applications
-
- Use EXEC SQL 'SET CONNECTION
connection-name' statements in programs to explicitly specify the current connection, where
connection-name matches the database alias used in the xa_open string.
- If you specify the XAID compiler directive option when compiling any other source code modules, to avoid confusion, we highly
recommend that you set the XAID value to match both the
connection-name and the RM ID specified in the XAR definition.
- If user impersonation is required, you must register the XAR statically.
- SQL Server applications
-
- Use EXEC SQL 'SET CONNECTION
connection-name' statements in programs to explicitly specify the current connection.
- Where
connection-name matches the CONNECTNAME parameter in the xa_open string. If CONNECTNAME is not present,
connection-name must match the RM ID specified in the XAR definition.
- If you specify the XAID compiler directive option when compiling any source code modules, to avoid confusion, we highly recommend
that its value match both
connection-name and the RM ID specified in the XAR definition.
- Use 'AT
dbname' prefix clause in every applicable SQL statement to explicitly specify the connection used.
- Where
dbname matches the CONNECTNAME parameter in the xa_open string. If CONNECTNAME is not present,
dbname must match the RM ID specified in the XAR definition.
- If you specify the XAID compiler directive option when compiling any other source code modules, to avoid confusion, we highly
recommend that its value match both
dbname and the RM ID specified in the XAR definition.
- Oracle applications
- Use 'AT
dbname' prefix clause in every applicable SQL statement to explicitly specify the connection used.
- Where
dbname matches the DB parameter in the xa_open string. If the DB parameter is not present,
dbname must match the RM ID specified in the XAR definition.
- If you specify the XAID compiler directive option when compiling any other source code modules, to avoid confusion, we highly
recommend that its value match both
dbname and the RM ID specified in the XAR definition.
- If user impersonation is required, you must register the XAR statically.
- Generic one-phase commit for ODBC and PostgreSQL applications
-
- Use EXEC SQL 'SET CONNECTION
connection-name' statements in programs to explicitly specify the current connection.
- Where
connection-name matches the RM ID specified in the XAR definition.
- If you specify the XAID compiler directive option when compiling any other source code modules, to avoid confusion, we highly
recommend that its value match both
connection-name and the RM ID specified in the XAR definition.
- Use 'AT
dbname' prefix clause in every applicable SQL statement to explicitly specify the connection used.
- Where
dbname matches RM ID specified in the XAR definition.
- If you specify the XAID compiler directive option when compiling any other source code modules, to avoid confusion, we highly
recommend that its value match both
dbname and the RM ID specified in the XAR definition.