出站消息的 IMS 消息格式
使用 OTMA 将消息从 Liberty 发送到 IMS 时,zosLocalAdapters 功能部件必须将消息从 IMS 格式转换为 OTMA C/I 格式。要执行此转换,Liberty 必须知道请求和响应消息段的格式是 LLZZ 还是 LLLLZZ。
LLZZ 格式消息段以 2 字节字段开始,包含段的长度后跟 2 字节保留字段。剩余段部分由实际消息使用。多数 IMS 段使用此格式。
LLLLZZ 格式消息段以 4 字节字段开始,包含段的长度后跟 2 字节保留字段。剩余段部分由实际消息使用。LLLLZZ 格式由一些 PL/I 程序使用。
可以通过设置 OTMARequestLLZZ 和 OTMAResponseLLZZ 属性,在 server.xml 中连接工厂定义上指定请求和响应的段格式。还可以在从连接工厂获取连接时针对 ConnectionSpecImpl 类使用方法,指定或覆盖段格式。com.ibm.websphere.ola.ConnectionSpecImpl 所生成的 Javadoc 包含有关在连接级别设置 LLZZ 字段的更多信息。
将多段消息发送到 IMS 时,第一个消息段必须包含目标 IMS 事务的 8 字节 IMS 事务标识。此事务标识带 LLZZ 或 LLLLZZ 前缀。后续段不得包含事务标识。单段消息必须按多段消息的第一个段相同方式进行构造。多段消息可能类似于以下内容:
2 bytes LL 20
2 bytes ZZ 00
8 bytes transaction ID 'MYTRAN01'
8 bytes data 'DATA0000'
2 bytes LL 12
2 bytes ZZ 00
8 bytes data 'DATA0001'
2 bytes LL 12
2 bytes ZZ 00
8 bytes data 'DATA0002'
所有消息段必须合并到单字节数组,并使用 IndexedRecord 传递到 IMS。使用所提供的类 com.ibm.websphere.ola.IndexedRecordImpl 执行此操作。驱动 Interaction.execute 时,必须将单字节数组添加到 IndexedRecord 并将其传递到 WOLA。交互返回响应时,会返回 IndexedRecord,IndexedRecord 包含合并到单字节数组的所有响应段。根据 OTMAResponseLLZZ 属性的值,段的格式为 LLZZ 或 LLLLZZ。