# WebSphere Application Server for z/OS

IBM WebSphere Application Server for z/OS is one of the platform implementations of IBM's WebSphere Application Server family. The latest version is Version 9.0.
The open standard interfaces supported by WAS are common across all platforms provided the version and release levels are aligned. However, the functional implementation below the open standard specification line differs between platforms. That allows the specific attributes of the platform to be exploited without jeopardizing the common programming interface at the specification level and above.

## WAS z/OS Platform Exploitation

The WebSphere Application Server for z/OS V7 product has code to directly exploit the following attributes of the platform:
* WLM—is used for transaction classification, workload routing, server expansion and relative resource allocation
* SAF—products implemented behind the SAF interface (such as IBM's RACF) provide security definition and security enforcement for the product
* Cross-memory communications—shared memory buffer exchanges is at the heart of the WebSphere Optimized Local Adapters
* SMF—WAS z/OS writes SMF 120 records, including the new 120 subtype 9 introduced in WAS z/OS V7
* RRS—used for global syncpoint coordination between WAS z/OS and other participants in two-phase commit global transactions
* zAAP—specialty processors are used for Java workload to enhance the financial profile of the product

### Version 7.0 "z Differentiators" ("zDiff")

Version 7.0 of WebSphere Application Server for z/OS provides five functions that are informally known as the "zDiff" functions. They represent specific exploitation of the z/OS platform. Those functions are:
* New SMF 120, Subtype 9 -- A new SMF record designed new with V7.0 that addressed many of the shortcomings of the earlier SMF records cut by WAS z/OS. It provides a unified data view of each request/response to the applications servers.
* Optimized Local Adapters -- an externalization of a pre-existing cross-memory communication feature. This allows address spaces outside of the WAS z/OS application server the ability to participate in the same cross-memory exchange that exists within a WAS z/OS cell. The Optimized Local Adapters ("OLA" or "WOLA") are bi-directional, allowing the invocation of EJB assets from outside the application server, and the invocation of services in external facilities such as CICS, batch programs, or Unix Systems Services processes.
* FRCA -- "Fast Response Caching Accelerator," is a function of the Communication Server element of z/OS. It is a low-level caching mechanism of the TCP/IP stack. An API exists so higher-level functions may exploit the caching function. The IBM HTTP Server (Domino Go version) has for many years supported the use of the API. In Version 7 of WAS z/OS the application servers support the using of the API as well. The important distinction is that with WAS z/OS the FRCA caching is seen as an external caching provider to the WAS DynaCache facility. Application elements cached to DynaCache are then pushed to the lower caching mechanism of FRCA. All the update and invalidation characteristics of DynaCache are extended down to the lower FRCA cache as well. FRCA eliminates code path to process a request when the object requested is in FRCA cache.
* Thread Hang Recovery -- A facility that attempts to interrupt Java threads in the servant region JVM when the request timer has expired. If interruption is not possible it provides a mechanism to delay the EC3 abend of the servant region, which is the way WAS z/OS refreshes a JVM. The new function provides several enhancements over prior versions of WAS z/OS: the ability to set a custom number of threads per servant JVM; the ability to set a threshold percent of threads that may be marked hung before processing an EC3 abend; and a new "excessive CPU" variable that will quiesce the WLM enclave of a thread that has exceeded a specified amount of CPU time.
* DCS/XCF -- DCS stands for "Distributed Consistency Services" and is a feature common to WAS across all platforms. It is in essence a signaling mechanism used to keep key elements of the WAS cell aware of what functions and services are available and where they exist. XCF stands for Cross-Coupling Facility and is a function of the System z and z/OS Parallel Sysplex design. DCS/XCF is a function of WAS z/OS V7 that moves the DCS signaling off the default TCP/IP transport provider and to the XCF signaling facility.

### Version 8.0 "z Differentiators"

WebSphere Application Server for z/OS V8 introduced the ability to configure application server behavior down to the request level, rather than server level. This function is built upon the existing WLM classification file used to assign WLM transaction classes to identified requests. V8 provided additional XML tags to assign server behavior to requests identified in the XML.
The following XML tags apply to different behavior that may, with V8, apply to the identified individual requests:
* dispatch_timeout -- provides a value, expressed in seconds, for the timeout that applies to the received request from the point the request is placed in the WLM queue to when the request completes.
* queue_timeout_percent -- provides a timeout, expressed as a percent of the dispatch timeout, for how long a request may remain in the WLM queue before being timed out.
* request_timeout -- provides a timeout, expressed in seconds, that applies to outbound IIOP requests to an EJB located on another server.
* stalled_thread_dump_action -- provides the action WAS z/OS will take when a timeout has occurred and a thread is marked as stalled. Values include: svcdump, javacore, heapdump, traceback, javatdump and none.
* cputimeused_limit -- provides the amount of CPU time, expressed in milliseconds, that a request thread may consume before having its WLM enclave quiesced. A quiesced enclave is considered below discretionary in terms of WLM priorities.
* cputimeused_dump_action -- provides the action WAS z/OS will take when a CPU time used limit is exceeded. Values include: svcdump, javacore, heapdump, traceback, javatdump and none.
* dpm_interval -- DPM stands for Dispatch Progress Monitor, a tool that processes a dump action every n seconds (the dpm_interval value).
* dpm_dump_action -- provides the action WAS z/OS will take every dpm_interval. Values include: svcdump, javacore, heapdump, traceback, javatdump and none.
* SMF_request_activity_enabled -- enables SMF recording for the identified request.
* SMF_request_activity_timestamps -- enables SMF timestamp recording for the identified request.
* SMF_request_activity_security -- enables SMF security detail recording for the identified request.
* SMF_request_activity_CPU_detail -- SMF CPU detail for the identified request.
* classification_only_trace -- when set, this will activate tracing at the detail level specified for the server, but will only execute tracing for the identified request.
* message_tag -- provides a custom tag, up to 8 bytes in length, that is applied to all trace and log records for the identified request.
* timeout_recovery -- provides two values to apply to an identified request that times out: servant, which means the normal EC3 abend processing occurs (subject to thread hang recovery procedures outlined above that became available in V7); and session, which closes the TCP and HTTP session and issues an error back to the client.

### Version 8.5

WebSphere Application Server Version 8.5 was announced April 24, 2012. A component of V8.5 is the Liberty Profile runtime model, which is a composable web container server runtime with dynamic update capabilities.

#### Liberty Profile use of z/OS platform functions

Liberty Profile for z/OS has several extensions designed to take advantage of specific z/OS platform functions. These extensions are:
* SAF -- z/OS Security Access Facility (SAF) may be used for user authentication as well as a keystore or truststore for digital certificates.
* WLM -- z/OS Workload Manager (WLM) may be used to classify work into separate WLM enclaves. This provides the ability to separate requests within a Liberty Profile server into separate WLM reporting classes for the purposes of resource usage analysis and reporting.
* JDBC Type 2 with RRS --- JDBC Type 2 on z/OS makes use of a cross-memory connector into IBM DB2. When JDBC Type 2 is used then IBM Resource Recovery Services (RRS) is used to serve as the global transaction synchpoint coordinator between participants in the transaction.
* MODIFY -- The z/OS MODIFY command may be used to initiate and process SVC and transaction dumps for a named server