在终端处理程序中动态路由入站请求
当服务提供者管道的终端处理程序是 CICS®提供的 SOAP 消息处理程序之一时,在某些情况下,容器 DFHWS-APPHANDLER 中指定的目标应用程序处理程序符合动态路由选择的条件。 在应用程序处理程序之前执行的所有管道处理始终在接收 SOAP 消息的 CICS 区域内本地执行。
当满足下列其中一个条件时,运行目标应用程序处理程序的事务有资格进行路由:
- 管道正在其下处理消息的事务定义为 DYNAMIC 或 REMOTE。 此事务在用于映射来自入站 SOAP 消息的 URI 的 URIMAP 中定义。
- 管道中的程序已将容器 DFHWS-USERID 的内容从其初始值更改为其他值。
- 管道中的程序已将容器 DFHWS-TRANID 的内容从其初始值更改为其他值。
- 入站 SOAP 消息中存在 WS-AT SOAP 头。
在所有上述场景中,在管道处理期间发生任务切换。 第二个任务在 DFHWS-TRANID 容器中指定的事务下运行。 此任务切换提供了执行动态路由的机会,但前提是使用 MRO 将 CICS 区域连接到一起。 此外,要路由到的 CICS 区域必须支持通道和容器。
仅当 DFHWS-TRANID 中指定的事务的 TRANSACTION 定义指定了下列其中一组属性时,才会进行路由:
- DYNAMIC(YES)
- 事务使用分布式路由模型进行路由,其中在 DSRTPGM 系统初始化参数中指定了路由程序。
- DYNAMIC (NO) REMOTESYSTEM (sysid)
- 事务将路由到由 sysid标识的系统。
有关 Web Service 请求路由的更多信息,请参阅技术说明: 路由提供程序方式 CICS Web Service 。
对于使用 CICS Web Service 助手部署的应用程序,在 CICS 链接到用户程序的位置,有第二次机会动态路由请求。 然后,将使用动态路由模型来路由请求,在该模型中,将在 DTRPGM 系统初始化参数中指定路由程序。 在本例中,路由资格由程序的特征确定。 如果在链接到程序时使用通道和容器,那么只能动态地将请求路由到 V3.1 或更高版本的 CICS 区域。 如果您正在使用 COMMAREA ,那么此限制不适用。
当请求已动态路由到目标区域时,无法将其从目标动态路由到第三个区域,即使事务定义为ROUTABLE(YES)及DYNAMIC(YES)但是,事务可以静态地从目标区域路由到第三个区域。