头处理程序接口
CICS提供的 SOAP 1.1 和 SOAP 1.2 消息处理程序链接到使用通道 DFHHHC-V1的头处理程序。 在通道上传递的容器包括几个特定于头处理程序接口的容器,以及可供管道中所有头处理程序和消息处理程序访问的 上下文容器 和 用户容器 的集合。
容器 DFHHEADER 特定于头处理程序接口。 其他容器在管道中的其他位置可用,但在头处理程序中具有特定用途。 此类别中的容器是 DFHWS-XMLNS , DFHWS-BODY 和 DFHXMLSS-PARSE。
注: 虽然使用 Axis2 来处理 SOAP 消息的 Web Service 可以使用头处理程序接口,但以 Java 编写您自己的 Axis2 处理程序来处理 SOAP 头更有效。 有关创建 Axis2 处理程序的更多信息,请参阅 编写您自己的 Axis2 模块
容器 DFHHEADER
当调用头处理程序时, DFHHEADER 包含导致头处理程序被驱动的单个头块。 如果在管道配置文件中使用 <mandatory>true</mandatory> 或 <mandatory>1</mandatory> 指定了头程序,那么即使 SOAP 消息中没有匹配的头块,也会调用该头程序。 在这种情况下,容器 DFHHEADER 的长度为零。 调用头处理程序以将头块添加到没有头块的 SOAP 消息时就是这种情况。
CICS® 创建的 SOAP 消息最初没有头。 如果要向消息添加头,必须通过指定 <mandatory>true</mandatory> 或 <mandatory>1</mandatory>来确保至少调用一个头处理程序。
当头程序返回时,容器 DFHHEADER 必须包含 CICS 在 SOAP 消息中插入的零个,一个或多个头块,以代替原始头块:
- 您可以返回未更改的原始头块。
- 您可以修改头块的内容。
- 您可以将一个或多个新头块附加到原始块。
- 您可以将原始头块替换为一个或多个不同的块。
- 您可以完全删除头块。
容器 DFHWS-XMLNS
调用头处理程序时, DFHWS-XMLNS 包含有关 SOAP 包络中声明的 XML 名称空间的信息。 头程序可以使用此信息来执行以下任务:- 解析它在头块中迂到的限定名
- 在新的或已修改的头块中构造限定名。
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 消息以代替原始消息:- 您可以返回未更改的原始主体。
- 您可以修改主体的内容。
<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> 元素时,不会创建此容器。