Business-critical systems must be resilient and scalable to meet the needs of modern organizations. While there’s no better platform than the System z to base such systems on, you must work at it to get the best from it. This article suggests how sites that use CICS Transaction Gateway (CTG) can achieve optimal performance by exploiting z/OS named tokens and the CICSPlex System Manager (SM) Application Program Interface (API).
CTG provides secure, easy access from Java client applications to CICS applications using standard Internet protocols in a range of configurations. You can implement it as an e-business connector for IBM WebSphere Application Server (WAS), which is a Java 2 Enterprise Edition (J2EE)-compliant, run-time environment for Java servlets and enterprise beans. CTG runs on a wide variety of operating systems. On operating systems other than z/OS, CTG can access many different types of CICS servers. On z/OS, the CTG can access only CICS Transaction Server (TS) for z/OS.
As an e-business connector for IBM WAS for z/OS or in a standalone CTG for z/OS, the CTG uses the External CICS Interface (EXCI) to connect and communicate to CICS TS for z/OS. CTG version 7.2 and CICS TS 3.2 allow IP connectivity as an alternative communication path.
As part of the EXCI, a user-replaceable module, DFHXCURM, is invoked on EXCI Allocate_Pipe requests and after detection of EXCI errors such as:
- The target CICS region isn’t available.
- No pipes are available on the target CICS region.
In early releases of CTG, an EXCI pipe was established, used, and deallocated for each ECI flow. CTG now creates a pipe for only the first ECI flow and subsequent calls reuse this pipe. As a result, it’s no longer possible to perform workload management per ECI flow using the EXCI user-replaceable module, DFHXCURM. That’s because the code is called only on the first ECI flow. However, it’s still possible to perform some sort of workload management per thread because the DFHXCURM is called in the Allocate_Pipe stage.
Reusing the same pipe for EXCI calls benefits CTG performance because the Initialize_User and Allocate_Pipe EXCI commands are called only once per worker thread per APPLID. In the past, they were called at the start of every ECI flow.
The APPLID of the CICS TS for z/OS that the Java servlet or enterprise bean in WAS wishes to communicate with is hard-coded in a field in the connection factory. The APPLID of the CICS TS system in CTG for z/OS is contained in the environment variables, DFHJVSYSTEM_nn, where nn is 00 to 99. While this allows some flexibility in selecting a suitable APPLID in the Java application itself, there’s still the problem of that code being maintained in the face of CICS infrastructure changes such as in APPLID standards, new CICS TS systems, and common code for the different application levels (e.g., unit test, system test, production proving, and production).
This article outlines how the DFHXCURM user-replaceable module could be used as a bridging service that increases flexibility, eases maintenance, and eliminates single points of failure. It must use the API to CICSPlex SM and a z/OS capability called name/token pairs.
A name/token pair is an area of storage z/OS services manages; it contains a one- to 16-byte name with a one- to 16- byte token. The name can contain characters, integer blanks, or an address. The token can contain any 16 bytes of information you want associated with the provided name. z/OS handles storage allocation and information retrieval.