应用程序处理程序
应用程序处理程序是一个 CICS®程序,SOAP 服务提供者管道的终端处理程序在运行时会链接到该程序。 应用程序处理程序负责处理 SOAP 请求正文,并使用返回的数据生成响应。 应用程序处理程序可以调用其他程序来完成此处理。 通常,应用程序处理程序充当围绕一个或多个业务应用程序的通用表示层。 它负责将 XML 映射到应用程序可以使用的表单,连接该应用程序,然后使用返回的数据生成响应。
应用程序处理程序用于提供模式管道,其中终端处理程序是 CICS 提供的 SOAP 消息处理程序之一,即 <terminal_handler> 元素包含 <cics_soap_1.1_handler>、<cics_soap_1.2_handler>、<cics_soap_1.1_handler_java> 或 <cics_soap_1.2_handler_java> 元素。
如何附加应用程序处理程序
- 典型的机制包括通道和控制容器(因此称为 通道附加应用程序处理程序)。
- 另一种方法是使用Java绑定 Axis2。
通道连接的应用程序处理程序
<provider_pipeline> 元素的 <apphandler> 元素中指定。 运行时,DFHWS-APPHANDLER 容器由 <apphandler> 的内容填充。 不过,DFHWS-APPHANDLER 容器可由任何其他消息处理程序动态更新。 因此,运行时链接到的程序可能与 <apphandler> 元素中指定的程序不同。 可在 <apphandler> 元素或 DFHWS-APPHANDLER 容器中指定以下应用程序处理程序:- 提供的通道连接的 SOAP 应用程序处理程序 DFHPITP。
- 您自己的通道连接的应用程序处理程序。 此应用程序处理程序可以使用 Java 以外的语言编写。
- 您自己的 Java 应用程序处理程序,用于基于 Java 的管道,它实现了 ApplicationHandler Java 接口,并使用 Axis2 MessageContext 连接到管道。 有关 ApplicationHandler Java 接口的更多信息,请参阅 接口 ApplicationHandler 。
应用程序处理程序使用的通道是 DFHAHC-V1 通道。 该通道在终端处理程序和提供商模式网络服务应用程序之间传递以下容器:
- DFHWS-XMLNS
- 包含将命名空间前缀映射到命名空间的名-值对列表。
- 输入时,该列表包含 SOAP 信封范围内的命名空间。
- 输出时,列表包含假定在封套标记中的命名空间数据。
- DFHWS-BODY
- 包含 SOAP 信封的主体部分。 通常情况下,应用程序会修改内容。 如果应用程序不修改内容,应用程序处理程序必须更新此容器的内容,即使在返回终端处理程序之前将相同的内容放回容器中。
- DFHNORESPONSE
- 在服务请求者管道的请求阶段,表示不希望服务提供者返回响应。 容器 DFHNORESPONSE 的内容未定义;需要知道服务提供者是否会返回响应的消息处理程序只需确定容器是否存在:
- 如果存在容器 DFHNORESPONSE,则预计不会有响应。
- 如果容器 DFHNORESPONSE 不存在,则预期会有一个 是 响应。
通道还会传递传递给终端处理程序的所有上下文容器。 例如,标题处理程序可以将容器添加到通道中。 这些容器作为用户容器传递。
有关可在通道附加应用程序处理程序中使用的控制容器的更多信息,请参阅 控制容器。
<?xml version="1.0" encoding="EBCDIC-CP-US"?>
<provider_pipeline
xmlns="http://www.ibm.com/software/htp/cics/pipeline"
<service>
<terminal_handler>
<cics_soap_1.1_handler/>
</terminal_handler>
</service>
<apphandler>DFHPITP</apphandler>
</provider_pipeline>
有关此示例的解释,请参阅 提供程序管道配置文件示例(通道附加应用程序处理程序)。
Axis2 应用程序处理程序
要使用将 Java 绑定用于 Axis2的应用程序处理程序,必须指定 <provider_pipeline> 元素的 <apphandler_class> 元素。 Axis2 应用程序处理程序还要求 JVM 服务器必须存在才能在其上运行的 Web Service 管道和应用程序处理程序,并且 Web Service 管道的终端处理程序必须是 <cics_soap_1.1_handler_java> 或 <cics_soap_1.2_handler_java> 消息处理程序。 要使用提供的 Axis2 应用程序处理程序,必须在 <apphandler_class> 元素中指定 com.ibm.cicsts.axis2.CICSAxis2ApplicationHandler ,但是可以指定您自己的 Axis2 应用程序处理程序类。 在运行时, DFHWS-APPHANCLAS 容器由 <apphandler_class>的内容填充。
还可以使用 Web Service 部署的 Axis2 样式在 CICS 中将 Axis2 应用程序作为提供程序方式 Web Service 进行部署。 有关更多信息,请参阅 在 Axis2 JVM 服务器中部署 Java 提供程序方式 Web Service。
<?xml version="1.0" encoding="EBCDIC-CP-US"?>
<provider_pipeline
xmlns="http://www.ibm.com/software/htp/cics/pipeline"
<service>
<terminal_handler>
<cics_soap_1.1_handler_java>
<jvmserver>DFHAXIS</jvmserver>
</cics_soap_1.1_handler_java>
</terminal_handler>
</service>
<apphandler_class>com.ibm.cicsts.axis2.CICSAxis2ApplicationHandler</apphandler_class>
</provider_pipeline>
有关此示例的解释,请参阅 提供程序管道配置文件示例(Axis2 应用程序处理程序)。
注意事项
对于使用 CICS Web Service 助手部署的 Web Service 应用程序,必须在 <apphandler> 元素中指定 DFHPITP 或您自己的使用 DFHPITP 的应用程序处理程序,或者在 <apphandler_class> 元素中指定 com.ibm.cicsts.axis2.CICSAxis2ApplicationHandler 。 有关 CICS Web Service 助手的更多信息,请参阅 CICS Web Service 助手。