应用程序上下文
应用程序上下文是一组数据,用于标识在应用程序和平台的上下文中运行的任务。 通过应用程序入口点访问应用程序时, CICS® 区域会为与应用程序相关的任务生成应用程序上下文数据。 此任务应用程序上下文在 CICS 监视设施写入 SMF 的性能记录中可用,并包含有关平台,应用程序,应用程序版本和操作的数据字段。 您可以使用该信息来衡量应用程序(或到应用程序的特定路由)所消耗的资源,以使用基于策略的应用程序管理和将任务与特定应用程序相关联,从而帮助进行问题诊断。
- 任务的 初始 应用程序上下文
- 用于监视和度量应用程序或特定应用程序操作在 CICS 区域和多个任务中使用的资源量。 将策略应用于属于应用程序的任务时,可以使用初始应用程序上下文来定义用于管理任务行为的阈值条件。 可以从调用任务继承初始应用程序上下文,也可以在任务首次通过应用程序入口点时设置初始应用程序上下文。
- 任务的 当前 应用程序上下文
- 用于装入专用库和 WLM 用户出口。 可以使用 XPI , SPI 和 API 调用来查询当前应用程序上下文。 每次任务通过应用程序入口点时,当前应用程序上下文都会更改。
创建应用程序上下文
要创建应用程序上下文,必须将 CICS 资源声明为部署在平台上的应用程序的应用程序入口点。 有关应用程序入口点的更多信息,请参阅 应用程序入口点。
当没有应用程序上下文的任务调用声明为应用程序入口点的资源时, CICS 会创建一个应用程序上下文,该应用程序上下文将成为与该任务关联的初始应用程序上下文。 此应用程序上下文还与任务调用的任何后续程序及其启动的任务相关联。 如果任务已具有应用程序上下文,那么新的应用程序上下文将成为该任务的当前应用程序上下文。 任务的初始应用程序上下文继续用于策略的监视和作用域限定。
- 应用程序名称
- 应用程序的主要版本号
- 应用程序的次版本号
- 应用程序的微版本号
- 部署应用程序的平台的平台名称
- 应用程序入口点的操作名称
您可以使用 EXEC CICS INQUIRE 系统编程命令指定用于浏览专用资源的应用程序上下文。 缺省情况下, CICS 将搜索可用于发出 EXEC CICS INQUIRE 命令的程序的专用资源和公共资源。 您可以指定其他应用程序上下文以浏览可用于其他应用程序的专用资源和公共资源。 当您使用应用程序上下文来浏览应用程序所使用的资源时,不指定操作名称。
应用程序上下文数据在 DFHDYPDS 参数列表和 EYURWCOM 参数列表中传递,并且可以在定制动态路由算法中使用。 有关动态路由选择的更多信息,请参阅 使用 CICSPlex SM 进行动态路由选择。
查看当前应用程序上下文
- 使用 " CICS Explorer 任务关联" 视图。
- 使用 EXEC CICS INQUIRE ASSOCIATION 命令。
- 使用 EXEC CICS ASSIGN 命令。
- 使用监视 XPI 函数 INQUIRE_APP_CONTEXT 从全局用户出口中查询当前应用程序上下文。
- 使用 JCICS Task.getApplicationContext() 方法查询当前应用程序上下文。
当应用程序上下文没有传播时
缺省情况下,初始和当前应用程序上下文将从任务传播到任务。 但是,某些 CICS 命令,接口,连接类型和其他进程不支持在任务之间进行应用程序上下文传播。
- 任务由指定 TERMID 选项的 START 命令连接。
- 任务由 DTP 或 CPIC 请求连接。
- 通过 APPC 连接连接连接任务。
- 使用事务启动 EP 适配器连接任务。
- 当 ThreadExecutor 服务创建新线程时,JVM 服务器会附加一个任务。
- 网络服务管道处理程序事务通过 MRO 连接进行路由。
- 使用 CICS 支持CICS 发出一个外向 HTTP 请求。
- 使用 URIMAP 资源作为 Liberty 的应用程序入口点来创建任务,该应用程序调用 CICSExecutorService 以在 Java™ 程序中启动线程。
用于将应用程序上下文设置为任务的条件
- PROGRAM 资源
- 当 PROGRAM 资源定义为应用程序入口点时,当发生以下任何情况时,会将应用程序上下文设置到任务上:
- CICS 事务,用于指定 PROGRAM 资源运行的名称 (在指定资源运行之前设置上下文)。
- 程序向 PROGRAM 资源发出 EXEC CICS LINK 命令。
- 程序发出 EXEC CICS INVOKE APPLICATION 命令来命名等同于 PROGRAM 资源的操作。
- 程序向 PROGRAM 资源发出 EXEC CICS RUN TRANSID 命令。
- Java 程序向 PROGRAM 资源发出 Program.link() 命令。
- Java 程序发出 Application.invoke() 命令来命名等同于 PROGRAM 资源的操作。
注:- 仅当应用程序在本地运行时,才会在定义为应用程序入口点的程序的任务上设置应用程序上下文。 如果该程序以远程方式运行,那么会将该请求传递到远程 CICS 区域,并且如果该资源也标记为该 CICS 区域上的应用程序入口点,那么该请求位于设置了上下文的远程 CICS 区域上。
- 对于对另一个程序进行动态调用的 COBOL 程序或发出 FETCH 和 CALL 以调用另一个程序 (即,如果已绕过 EXEC CICS LINK 调用) 的 PL/I 程序,任务上的应用程序上下文保持不变。
- TRANSACTION 资源
- 当将 TRANSACTION 资源定义为应用程序入口点时,当发生以下任何情况时,会将应用程序上下文设置到任务上:
- TRANSACTION 资源运行 (上下文在指定资源运行之前设置)。
- 程序针对 TRANSACTION 资源发出 EXEC CICS START 命令。
- URIMAP 资源
- 将 URIMAP 资源定义为应用程序入口点时,会将应用程序上下文设置到任务上,如下所示:
- 如果 HTTP / HTTPS 请求 URL 与具有 USAGE(JVMSERVER) 的 URIMAP 资源匹配,则会在运行 URIMAP 资源中指定的 CICS 事务的任务上设置应用程序上下文。
- 如果 HTTP / HTTPS 请求 URL 与具有 USAGE(SERVER) 的 URIMAP 资源匹配并且要提供静态响应,则在 CWXN 任务上设置应用程序上下文。 通过指定 HFSFILE 或 TEMPLATENAME 值提供静态响应。
- 如果 HTTP / HTTPS 请求 URL 与具有 USAGE(SERVER) 的 URIMAP 资源匹配,并且不提供静态响应,则会在 CWXN 任务上设置应用程序上下文,并且此应用程序上下文也会传播到运行 URIMAP 资源中指定的 CICS 事务的任务。 对于可直接附加到交易中的请求,应用程序上下文将设置在URIMAP资源中指定的 CICS上。 更多信息,请参阅 《直接连接用户事务处理 HTTP 》。 缺省别名事务是 CWBA 事务。
- 如果 HTTP / HTTPS 请求 URL 与具有 USAGE(PIPELINE) 的 URIMAP 资源匹配,那么将在 CWXN 任务上设置应用程序上下文,并将其传播到运行 URIMAP 资源中指定的 CICS 事务的任务。 对于可直接附加到交易中的请求,应用程序上下文将设置在URIMAP资源中指定的 CICS上。 更多信息,请参阅 《直接连接用户事务处理 HTTP 》。 缺省事务是 CPIH 事务。
| 事务定义为应用程序入口点 | 初始程序定义为应用程序入口点 | 初始程序为公用或专用 | 任务的初始 ACD | 任务的当前 ACD |
|---|---|---|---|---|
| 是 | 是 | 不适用 | 由事务入口点设置 | 由程序入口点设置 |
| 是 | False | 公共 | 由事务入口点设置 | 空 |
| 是 | False | 专用 | 由事务入口点设置 | 与初始 ACD 相同 |
| False | 是 | 不适用 | 由程序入口点设置 | 与初始 ACD 相同 |
| False | False | 不适用 | 未设置 | 未设置 |
| URIMAP 定义为应用程序入口点 | 别名事务定义为应用程序入口点 | 初始程序为公用或专用 | 任务的初始 ACD | 任务的当前 ACD |
|---|---|---|---|---|
| 是 | 是 | 公共 | 由事务入口点设置 | 空 |
| 是 | 是 | 专用 | 由事务入口点设置 | 与初始 ACD 相同 |
| 是 | False | 公共 | 由 URIMAP 入口点设置 | 空 |
| 是 | False | 专用 | 由 URIMAP 入口点设置 | 与初始 ACD 相同 |
| False | 是 | 公共 | 由 TRANSACTION 入口点设置 | 空 |
| False | 是 | 专用 | 由 TRANSACTION 入口点设置 | 与初始 ACD 相同 |
| False | False | 不适用 | 未设置 | 未设置 |
| 已启动的事务定义为应用程序入口点 | 已启动事务的初始程序定义为应用程序入口点 | 初始程序为公用或专用 | 正在启动的任务已设置 ACD | 任务的初始 ACD | 任务的当前 ACD |
|---|---|---|---|---|---|
| 是 | 是 | 不适用 | 不适用 | 由 TRANSACTION 入口点设置 | 由 PROGRAM 入口点设置 |
| 是 | False | 公共 | 不适用 | 由 TRANSACTION 入口点设置 | 空 |
| 是 | False | 专用 | 不适用 | 由 TRANSACTION 入口点设置 | 与初始 ACD 相同 |
| False | 是 | 不适用 | 不适用 | 由 PROGRAM 入口点设置 | 与初始 ACD 相同 |
| False | False | 不适用 | 是 | 从启动任务继承 ACD | 空 |
| False | False | 不适用 | 不适用 | 未设置 | 未设置 |
| 事务定义为 APPLICATION 入口点 | 正在启动的任务已设置 ACD | ACD 已传递到路由程序 COMMAREA |
|---|---|---|
| 是 | 是 | 事务的入口点 |
| 是 | False | 事务的入口点 |
| False | 是 | 启动任务的当前 ACD |
| False | False | 无 ACD |