CICS 作为使用 CICS Java 管道的 JSON 请求的服务提供者
要使 CICS 向外部 JSON 客户机提供服务,它必须接收请求并将其通过管道传递到目标应用程序。 来自应用程序的响应通过同一管道返回到 JSON 客户机。 JSON 转换是在 JVM 服务器中使用 Java™ 进行的。
图 1 显示了当 CICS 是使用 Java 管道的服务提供者时,处理来自外部 JSON 客户机的请求所需的体系结构和资源的示例配置。 JSON 请求的管道处理类似于 CICS 在 Java 管道中处理 SOAP 请求的方式。 有关更多信息,请参阅 基于 Java 的 SOAP 管道。

CICS 如何处理 JSON 请求
- 接收来自服务请求者的请求。
TCPIPSERVICE 资源指定入局请求的端口。 此端口受 CICS提供的套接字侦听器任务 (CSOL) 监视。
- 检查请求,并抽取与目标应用程序相关的内容。
在相应端口上接收到请求消息时,将扫描 URIMAP 资源定义以查找其 USAGE 属性设置为 PIPELINE 的 URIMAP 定义,并将其 PATH 属性设置为请求中找到的 URI。 如果找到相应的 URIMAP 定义,那么将使用来自 URIMAP 定义的 PIPELINE 和 WEBSERVICE 属性的 PIPELINE 和 WEBSERVICE 定义。 URIMAP 定义的 TRANSACTION 属性确定应该连接以处理管道的事务的名称。 缺省情况下,将使用 CPIH 事务。 URIMAP 定义还标识要使用的 PIPELINE 和 WEBSERVICE 资源。
这些 PIPELINE 和 WEBSERVICE 资源控制 CICS 执行的处理。 特别是, WEBSERVICE 资源所指向的 WSBind 文件用于 JSON 和语言结构之间的数据转换。 JSON Web Service 的 WSBind 文件是使用实用程序 DFHLS2JS 和 DFHJS2LS生成的。
注: 不支持针对模式对 JSON 数据进行运行时验证。 将忽略与 JSON 有效内容配合使用的 WEBSERVICE 资源的 VALIDATION 属性值。有关适用的任何限制的信息,请参阅 JSON Web Service 限制。 - 管道处理将开始,并且请求将流经定义的任何处理程序。 预期 CICS for SOAP Web Service 当前提供的任何处理程序都不会与 JSON Web Service 相关。
- 在管道结束时,将调用 JSON 终端处理程序。 此终端处理程序是与 Axis2 管道进行交互的 Java 程序。 终端处理程序执行 Axis2的必要设置,然后使用 HTTP启动 Axis2。 在 Axis2 ,JSON 主体(如果存在)将被解析,并构建一个表示内容的 Java 对象模型。 CICS 随后调用应用程序处理程序。 应用程序处理程序的主要作用是将请求的 Java 对象模型表示映射到应用程序数据中。 此映射通过使用 WSBind 文件中的语言结构描述来执行。
- 调用应用程序,传递从请求中抽取的数据。
然后,应用程序处理程序链接到应用程序。 程序将处理此输入并向应用程序处理程序返回响应。
- 使用应用程序返回的数据构造响应,并向服务请求者发送响应。
应用程序处理程序和消息处理程序将从服务提供者应用程序接收到的响应消息转换为原始请求格式的消息。 此消息将发送回服务请求者。
管道中的某些处理有资格卸载到 IBM® z Systems ® Application Assist Processor (zAAP)。