分析器程序
分析器程序与 TCPIPSERVICE 定义关联。 它们的主要作用是在以下情况下解释 HTTP 请求:如果 URIMAP 定义指定使用分析器程序,或者如果不存在 URIMAP 定义。
当 CICS® 是 HTTP 客户机或用于 Web Service 处理时,无法调用分析器程序; 仅当 CICS 是 HTTP 服务器时,才能调用分析器程序。 在 作为 HTTP 服务器的 CICS 的 HTTP 请求和响应处理中描述了作为 HTTP 服务器的 CICS 的 CICS Web Support 进程中分析器程序的角色。 对作为 HTTP 服务器的 CICS 启用 CICS Web 支持 具有帮助您规划作为 HTTP 服务器的 CICS 体系结构的信息。
分析器程序和 URIMAP 定义之间的关系
在 CICS Transaction Server for z/OS®V 3 Release 1之前,分析器程序解释了将 CICS 作为 HTTP 服务器的所有 HTTP 请求。 现在, URIMAP 资源是控制 HTTP 请求处理的策略方法。 它们取代了分析器程序的主要功能,将请求的 URL 与处理请求的应用程序匹配,以及指定使用转换器程序和别名事务。
然而,URIMAP 定义可以为选择的 HTTP 请求调用分析器程序,以接管某些处理阶段并执行其他操作(例如,监控或审计操作)。 命名为 CONVERTER(转换器程序名)、TRANSACTION(别名事务)、USERID(别名事务的用户标识)和 PROGRAM(处理请求的应用程序名)的 URIMAP 定义的属性(这些属性重新产生分析器函数)可以传递到分析器程序中,且分析器程序可以选择覆盖 它们。
您可以选择将 HTTP 请求直接传递到分析器程序,而不使用 URIMAP 定义,遵循 CICS Web Support 在 CICS Transaction Server for z/OSV 3 Release 1之前使用的过程。 但是,在没有 URIMAP 定义的情况下,如果要更改 CICS 响应特定 HTTP 请求的方式,那么需要更改分析器程序中的逻辑。 使用 URIMAP 定义,您可以将这些更改作为系统管理任务动态执行。 也请注意,如果继续使用分析器程序而不是 URIMAP 定义来处理请求,且如果需要在这方面遵从 HTTP/1.1,那么根据 HTTP/1.1 规范 (RFC 2616) 中声明的规则,必须编码分析器程序以执行 URL 比较。
如果您选择分析器程序,那么侦听器任务将无法直接连接用户事务以便快速访问 HTTP 请求。 有关更多信息,请参阅 使用直接连接的用户事务处理 HTTP 请求。
使用分析器程序进行错误处理
虽然现在每个 HTTP 请求的处理路径中都不需要分析器程序,但仍必须为用于 CICS Web Support 的每个 TCPIPSERVICE 资源指定分析器程序。
分析器程序的名称在资源定义的 URM 属性中指定。 您可以在每个 TCPIPSERVICE 定义中指定不同的分析器,或在多个 TCPIPSERVICE 定义中指定相同的分析器。 如果正在从 URIMAP 定义调用分析器程序,那么无法在不同的分析器程序间进行选择;您只能选择是否使用为 TCPIPSERVICE 定义指定的分析器程序。
如果 CICS 找不到请求的匹配 URIMAP 定义,那么将调用为 TCPIPSERVICE 定义指定的分析器程序来处理 HTTP 请求。 这可能由用户输入请求 URL 时出错而引起,或者是因为没有安装正确的 URIMAP 定义。 (如果 URIMAP 定义存在但已禁用,那么请求将由 Web 错误程序而不是分析器程序来处理。)
因为这个原因,最低限度,为每个 TCPIPSERVICE 定义指定的分析器程序应该包含一个过程,以处理它不识别的任何 HTTP 请求,并提供合适的错误响应。 您还可以识别本应该由 URIMAP 定义处理的特定请求,并提供更相关的错误响应。 错误情况下分析器程序的输出将传递给可用于修改 HTTP 响应的 Web 错误程序。 Web 错误程序 说明如何定制这些程序。
当 TCPIPSERVICE 定义指定 PROTOCOL(HTTP) 时,CICS 提供的缺省分析器程序 DFHWBAAX 是缺省值。 当端口上所有请求应该由 URIMAP 定义处理时,DFHWBAAX 提供基本错误处理。 它不支持使用 CICS Web Support 在 CICS TS 3.1之前使用的 URL 格式的请求。 如果您需要在分析器程序中为 URIMAP 定义不处理的请求提供处理,TCPIPSERVICE 定义中指定的分析器程序应该是 CICS 提供的样本分析器程序 DFHWBADX 或自己定制的分析器程序。
将分析器程序用于某些非 Web 感知应用程序和非 HTTP 消息
- 您正在使用非 Web 感知应用程序和转换器程序生成响应,并且需要对其进行标记以进行CICS TS 版本 3 之前的兼容性处理,因为 Web 客户机需要与它在 CICS TS 版本 3 之前接收到的响应相同的响应。 (例如,用户编写的客户机可能会迂到新错误响应或其他 HTTP 头的问题。) 仅当转换器程序在存储器块中手动生成响应时,该标志才起作用。 如果转换器程序使用 EXEC CICS WEB API 命令发送响应,那么该标志无效。
- 您正在使用非 Web 感知应用程序和转换器程序生成响应,且传递到存储器块中转换器程序的 Web 客户机请求的副本,或是通过转换器程序在存储器块中手动生成的 HTTP 响应,都需要非标准的代码页转换。 转换器程序无法为传入存储器块的 HTTP 请求或响应指定代码页转换设置。 编写转换器程序中描述了 CICS 用于代码页转换的标准设置 (如果处理路径中不存在分析器程序)。 如果这些标准设置不合适,或者如果不希望进行代码页转换,那么可以在处理路径中使用分析器程序来指定备用代码页转换设置。 作为使用分析器程序的替代方法,您可以使用转换器程序中的 EXEC CICS WEB API 命令来检查 Web 客户机的请求或生成响应,而不是使用存储块。 对于这种情况,可以象往常一样在 EXEC CICS WEB API 命令中指定代码页转换。
对于使用 TCPIPSERVICE 定义中用户定义的(USER)协议的非 HTTP 请求,始终需要分析器程序来处理这些请求,且不能使用 URIMAP 定义。 Web 错误程序 说明如何处理非 HTTP 请求。
将分析器程序用于其他处理
- 根据请求内容,您可能要对处理路径的元素进行动态更改。 HTTP 请求的每个 URL 由单个 URIMAP 定义匹配,它定义了单个处理路径。 分析器程序可以解释请求内容并更改某些元素,例如,处理请求的应用程序、转换器程序的涉及,或用于请求的别名事务和用户标识。
- 您要将监控或审计操作引入进程。 分析器程序是执行此操作的理想位置。
- 您正在从 CICS TS Version 2 升级现有 CICS Web Support 体系结构,并且现有分析器程序提供了您希望在请求处理期间维护的其他功能,例如将信息传递到转换器程序。