![[z/OS]](../images/ngzos.gif)
使用优化本地适配器通过 OTMA 来调用现有 IMS 事务
可以使用 WebSphere® Application Server for z/OS® 优化本地适配器通过开放式事务管理器访问可调用接口 (OTMA C/I) 支持来调用作为消息处理程序 (MPP) 或者快速路径程序 (IFP) 运行的现有未更改的 IMS™ 事务。此支持由一组新的本机模块提供,这组模块由使用 IMS OTMA C/I 的优化本地适配器引入。
部署在 WebSphere Application Server for z/OS 上并且必须调用现有 IMS 事务的应用程序使用 ola.rar 文件来访问 OTMA C/I 接口模块。有若干新的连接工厂属性,它们允许应用程序提供目标 IMS 系统的名称和相关联的 OTMA XCF 信息。还添加了一个属性,它允许应用程序设置用于交换的同步级别。有关这些参数的更多详细信息,请参阅“优化本地适配器的连接工厂注意事项”主题。
V8.5.0.2 和更高版本中支持 IMS 全局事务。如果 WebSphere Application Server 作为将使用 WOLA over OTMA 支持来调用现有 IMS 应用程序的落实协调程序,那么在全局事务中执行的应用程序可以将 IMS 事务包括在同一全局事务上下文中。
有关此支持的更多信息,请参阅全局事务 - 调用 IMS 应用程序的 WebSphere 应用程序这一节。
消息格式要求
在 V8 中支持多段消息之前,请求和响应消息必须为单个段,并且最大发送和接收段大小不得超过 32760 个字节(包括消息头在内)。
<----------------- HEADER ----------------> <------ DATA ------>
LL + ZZ + IMS Transaction Name + Message request data
(2 bytes) | (2 bytes) | (8 bytes) | (up to 32744 bytes)
消息中的“事务名称”用于调用 OTMA C/I,并且必须是在 IMS MPR 或者快速路径从属区域中已定义且可访问的事务。
<----- HEADER -----> <------------------ DATA ----------------->
LLLL + Message response data
(4 bytes) | (up to 32756 bytes)
Rational® Application Developer 中的“CICS/IMS Java™ 数据绑定”向导用来创建 helper 类,这些 helper 类具有可以用来处理在数据与 Java 对象和二进制表单之间建立映射的 setter 方法和 getter 方法。此数据映射适用于从 WebSphere Application Server 发送至 IMS 的消息以及响应数据。多段消息支持
IMS 多段消息支持请求消息超过前面限定的 32744 个字节,响应消息超过前面限定的 32756 个字节。但是,单个段不能超过 32768 个字节(包括消息头在内)。
- OTMAMaxSegments
OTMAMaxSegments 表示支持通过当前连接发送和接收的 IMS 消息的最大段数。如果未指定值,那么缺省值为 1。
- OTMAMaxRecvSize
OTMAMaxRecvSize 表示可以使用 WebSphere 优化本地适配器通过 OTMA 支持从 IMS 返回的可能达到的最长消息。如果未指定值,那么缺省值为 32768。
全局事务 - 调用 IMS 应用程序的 WebSphere 应用程序
- 该应用程序要使用配置为使用 OTMA 的连接,并且受管连接工厂属性 RRSTransactional 设置为 True(或者 1)。将 RRSTransactional 属性设置为 True(或者 1)可对连接启用 RRS 事务。
- WebSphere Application Server for z/OS 服务器在安装了 ola_rrs_context_propagate_otma 环境变量并且设置为 True(或者 1)的情况下运行。
- IMS 环境在配置了 RRS=YES 的情况下运行。
如果您需要实现任何这些配置设置,那么在全局事务中运行的应用程序和 WebSphere Application Server 使在 IMS 中运行的应用程序与其事务上下文协调之前,您必须重新启动 WebSphere Application Server for z/OS 服务器和 IMS 环境。
多段消息的消息格式要求
对于多段消息,从 WebSphere 优化本地适配器发送至 IMS 的请求的缺省值为 LLZZ。从 IMS 发送至 WebSphere Application Server 的响应的缺省 LLLL+ 消息数据保持不变。
对此支持提供了用于更改这些缺省值的方法。setOTMARequestLLZZ() 和 setOTMARequestLLLL() 方法能够设置从 WebSphere Application Server 发送至 IMS 的消息请求的长度前缀样式。setOTMAResponseLLZZ() 和 setOTMAResponseLLLL() 方法能够将消息响应的消息前缀样式设置为 LLZZ 或 LLLL。以下示例是从 WebSphere Application Server 中的应用程序调用 IMS 时期望使用的消息格式。
<----------------- HEADER ------------------>
LL + ZZ + IMS Transaction Name +
(2 bytes) | (2 bytes) | (8 bytes)
<-------------------------- DATA SEGMENT 1 ---------------------->
Message segment 1 data
(up to 32756 bytes)
<-------------------------- DATA SEGMENT 2 ---------------------->
+ LL + ZZ + Message segment 1 data
(2 bytes) | (2 bytes) | (up to 32764 bytes)
…
<-------------------------- DATA SEGMENT N ---------------------->
+ LL + ZZ + Message segment N data
(2 bytes) | (2 bytes) | (up to 32764 bytes)
<----------------- HEADER ------------------>
LLLLZZ + IMS Transaction Name +
(6 bytes) | (8 bytes)
<-------------------------- DATA SEGMENT 1 ---------------------->
Message segment 1 data
(up to 32754 bytes)
<-------------------------- DATA SEGMENT 2 ---------------------->
+ LLLLZZ + Message segment 1 data
(6 bytes) | (up to 32762 bytes)
…
<-------------------------- DATA SEGMENT N ---------------------->
+ LLLLZZ + Message segment 1 data
(6 bytes) | (up to 32762 bytes)
<----- HEADER -----> <----------- DATA SEGMENY 1 ------------>
+ LL + ZZ + Message segment 1 data
(2 bytes) | (2 bytes) | (up to 32764 bytes)
<-------------------------- DATA SEGMENT 2 ---------------------->
+ LL + ZZ + Message segment 2 data
(2 bytes) | (2 bytes) | (up to 32764 bytes)
…
<-------------------------- DATA SEGMENT N ---------------------->
+ LL + ZZ + Message segment N data
(2 bytes) | (2 bytes) | (up to 32764 bytes)
-- HEADER --> <----------- DATA SEGMENT 1 ------------>
+ LLLLZZ + Message segment 1 data
(6 bytes) | (up to 32762 bytes)
<-------------------------- DATA SEGMENT 2 ---------------------->
+ LLLLZZ + Message segment 2 data
(6 bytes) | (up to 32762 bytes)
…
<-------------------------- DATA SEGMENT N ---------------------->
+ LLLLZZ + Message segment N data
(6 bytes) | (up to 32762 bytes)