标题处理程序容器

CICS® 提供的 SOAP 1.1 和 SOAP 1.2 消息处理程序通过使用通道 DFHHHC-V1 链接到标题处理程序。 在通道上传递的容器包括 DFHHEADER(专门用于报头处理程序接口),以及其他容器,如 DFHHEADER、DFHWS-XMLNS、DFHWS-BODY 和 DFHXMLSS-PARSE,这些容器在管道的其他部分可用,但在报头处理程序中有特定用途。

头处理程序接口还传递控制容器集、上下文容器集和用户容器集,管道中的所有头处理程序和消息处理程序都可以访问这些容器集。 有关这些容器的信息,请参阅 网络服务管道中使用的容器

DFHHEADER 容器

当调用报头处理程序时,DFHHEADER 包含导致报头处理程序被驱动的单个报头块。 如果在管道配置文件中用 <mandatory>true</mandatory><mandatory>1</mandatory> 指定了头信息程序,即使 SOAP 消息中没有匹配的头信息块,也会调用该程序。 在这种情况下,容器 DFHHEADER 的长度为零。 当调用报头处理程序向没有报头块的 SOAP 报文添加报头块时,就会出现这种情况。

CICS 创建的 SOAP 消息最初没有报头。 如果要在邮件中添加标题,必须通过指定 <mandatory>true</mandatory><mandatory>1</mandatory> 来确保至少调用一个标题处理程序。

当头文件程序返回时,容器 DFHHEADER 必须包含 0 个、1 个或多个头文件块,CICS 将在 SOAP 消息中插入这些头文件块,以取代原来的头文件块:
  • 您可以原封不动地返回原始标题块。
  • 您可以修改标题块的内容。
  • 您可以在原始数据块上添加一个或多个新的标题数据块。
  • 您可以用一个或多个不同的区块来替换原来的页眉区块。
  • 您可以完全删除标题块。

DFHWS-XMLNS 容器

当调用标头处理程序时,DFHWS-XMLNS 会包含 SOAP 信封中声明的 XML 命名空间信息。 头文件程序可以利用这些信息执行以下任务:
  • 解析标题块中遇到的限定名称。
  • 在新的或修改过的标题块中构建限定名称。
命名空间信息由命名空间声明列表组成,使用标准 XML 符号来声明命名空间。 DFHWS-XMLNS 中的命名空间声明用空格隔开,如下例所示。
示例
xmlns:na='http://abc.example.org/schema' xmlns:nx='http://xyz.example.org/schema'

您可以在 DFHWS-XMLNS 的内容中添加更多命名空间声明到 SOAP 信封中。 不过,如果命名空间的作用域是 SOAP 头文件块或 SOAP 主体,则最好分别在头文件块或主体中声明。 建议不要在标题处理程序中删除容器 DFHWS-XMLNS 中的命名空间声明,因为在程序中不可见的 XML 元素可能会依赖这些声明。

DFHWS-BODY 集装箱

该容器包含 SOAP 信封的主体部分。 标题处理程序可以修改内容。

调用标题处理程序时,DFHWS-BODY 包含 SOAP <Body> 元素。

当头文件程序返回时,容器 DFHWS-BODY 必须再次包含一个有效的 SOAP <Body> CICS 插入到 SOAP 消息中,以代替原来的 SOAP 消息:
  • 您可以原封不动地返回原始正文。
  • 您可以修改正文的内容。

您不能完全删除 SOAP 主体,因为每个 SOAP 消息都必须包含一个 <Body> 元素。

DFHXMLSS-PARSE 容器

在管道配置中使用 <cics_soap_1.1_handler><cics_soap_1.2_handler> 元素并调用头程序时,DFHXMLSS-PARSE 会包含该头的 XML 系统服务 (XMLSS) 记录。 使用 <cics_soap_1.1_handler_java><cics_soap_1.2_handler_java> 元素时,不会创建此容器。