工作方式:CICS 捆绑软件部署 API

CICS®管理客户端接口 (CMCI) 支持通过 CICS 捆绑包部署 API 将 CICS 捆绑包部署到单个区域。 The API is supported by the CMCI JVM 服务器 that is configured either in the WUI region of the target region's CICSplex, or in the target region itself if it's a CICS 系统管理单一服务器 (SMSS).

概述

在开发过程中,Java 开发人员可使用 API 在几秒钟内检查其应用程序在运行中的 CICS 区域中的变化。 API还支持 CICS 提供的 Gradle 和Maven插件,可将 CICS 捆绑构建和部署集成到开发人员的工具链中。 有关 CICS 对 Gradle 和Maven的支持的更多信息,请参阅 CICS 和Java
注: CICS 支持从 CICS 系统定义数据集 (CSD) 到单个区域的束安装。

CICS 束部署 API 使 Java 开发者能够在系统程序员保留控制权的同时部署束。 要实现此目标,开发者无需通过 FTP 将捆绑软件写入 zFS ,也无需从 CSD 安装捆绑软件。 这些操作由 API 通过使用功能标识或具有足够访问权的其他用户标识来执行。

该图显示了多个应用程序开发者将捆绑软件推送到 API (在 CICSplex 的 WUI 区域中配置) 的典型场景。 对于 SMSS 环境,API 配置在目标区域的 CMCI JVM 服务器 中。
图 1。 多个开发者将捆绑软件推送到 API
显示将捆绑软件推送到 API 的多个开发者的图

该REST API HTTP 接收CICS ,其中包含开发人员的应用程序(以zip文件形式)。 该捆绑包将自动解压、安装并启用到相应的 CICS。 如果已存在同名的 CICS ,则会在安装新包之前将其禁用并丢弃。

通常,系统程序员为 Java 开发者提供必要的参数,例如 CICSplex , CICS 区域, CSD 组和 BUNDLE 定义的名称。 然后,系统程序员将创建 BUNDLE 定义,该定义使用正在开发的应用程序的正确捆绑软件目录属性进行配置。

API 如何工作

如前所述,API 可管理捆绑软件生命周期,并在接收到捆绑软件后代表开发者与 zFS 进行交互。 通常,应用程序接口由客户端驱动,如 CICS 提供的用于 Gradle (com.ibm.cics.bundle) 或 Maven (cics-bundle-maven-plugin).

API 配置了一个 bundles 目录。 这是 zFS 上使用 API 来管理捆绑软件的专用位置。 推送到 API 的软件包会解压缩到 bundles 目录中,并由 CICS 目标区域访问。 这对于开发者是透明的,并且由系统程序员进行管理。 使用此 API 的开发者无需在 zFS 上与捆绑软件交互。

对于开发者正在处理的每个应用程序,系统程序员会在 CSD 中创建 BUNDLE 定义。 BUNDLE 定义的 BUNDLEDIR 属性必须配置为上载到bundles 目录的应用程序正确版本的路径,例如/u/path/to/bundles/dir/ApplicationName_1.0.0 。 系统程序员为开发者提供 BUNDLE 定义名称和 CSD 组以驱动 API。 使用此 API 的开发者不需要安装,禁用或废弃 CICS BUNDLE 资源。

该图显示从应用程序开发者发布束时到将束安装到 CICS 区域时的 束生命周期 。 由 API 自动处理,无需用户干预。
图 2。 API 中捆绑软件的生命周期
此图显示 API 中捆绑软件的生命周期
1 应用程序开发者通过 CICS 束部署 API 来发布应用程序束。
验证
2 CMCI JVM 服务器在目标区域的 CSD 中找到 BUNDLE 定义,并检查 BUNDLE 定义的 bundle 目录 (BUNDLEDIR) 属性值是否在 API 配置的 bundles 目录内。
卸载
3 CMCI JVM 服务器 检查目标区域中是否存在任何先前安装的与指定的 BUNDLE 定义同名的捆绑软件。 根据需要,禁用并废弃此类捆绑软件。
4 CMCI JVM 服务器会从 zFS 上的 bundles 目录中删除名称和版本相同的先前捆绑包。 然后,它会将已发布的捆绑包解压到 bundles 目录中。
安装
5 CMCI JVM 服务器 启动 BUNDLE 定义的 CSD 安装。
6 目标区域从 zFS 读取捆绑软件并进行安装。

API 的安全模型

引入功能标识以确保访问受到控制。 因此,应用程序开发人员能够通过对 CICS 捆绑程序集部署 API 的特定访问来部署捆绑程序集,而无需对捆绑程序集进行一般操作。 API 工作流程中涉及不同的用户标识,如下所示:
  • 应用程序开发者按正常方式进行认证,确保其用户标识有权访问 API。
  • 该任务从应用程序开发者的用户标识切换到已配置的部署功能标识。
  • 部署功能标识将捆绑软件写入 zFS ,并启动捆绑软件到目标区域的 CSD 安装。
  • 在安装期间,目标区域的区域用户标识从 zFS 读取捆绑软件。
API 的安全机制需要额外配置才能使 API 生效:
  • 系统程序员必须正确配置 SAF 才能使用 API 启用捆绑软件部署。
  • API 仅在配置为 SEC=YES 的区域中有效。
有关指示信息,请参阅 为 CICS 束部署 API 配置 CMCI JVM 服务器

如何使 CICS 绑定部署 API 请求

CICS 提供了一个 和一个 Maven 插件,使用该 API 将捆绑包发布到。 Gradle CICS Java 开发者可以在开发时将其用于捆绑软件部署。 有关说明,请参阅 cics-bundle-maven。 或者,如果要编写自己的工具,那么可以使用任何标准 REST 客户机来调用 API。

API 请求的格式基于 HTTP/1.1。 API 仅使用 POST 请求,并且接受多部分表单数据。 必须发送 Content-Type: multipart/form-data 头。 接受字符串参数和压缩捆绑软件文件作为有效内容中的表单数据部分。

API 返回 HTTP 响应代码和请求结果的 JSON 描述。 以下项的响应代码:4xx指示用户未正确处理 API。 以下项的响应代码:5xx指示未正确设置系统。

API 端点与标准 CMCI 接口一起提供。 例如,如果在 mycicshost.com 端口 4444 上提供 CMCI 接口,那么 API 端点 URL 将为 https://mycicshost.com:4444/managedcicsbundles

使用以下参数调用 API:
cicsplex
仅对于 CICSPlex ® SM 环境是必需的。 目标区域所属的 CICSplex 的名称。
region
仅对于 CICSPlex SM 环境是必需的。 应安装捆绑软件的区域的名称。
csdgroup
存在源 BUNDLE 定义的 CSD 组的名称。
bunddef
BUNDLE 定义的名称。
bundle
包含捆绑软件内容的 zip 文件,例如,content-type application/zipMETA-INF 目录应该位于 zip 文件的根目录中。
例如,要使用命令行工具 cURL 从本地工作站调用 API,命令行可能如下所示:
curl -i -X POST -u MYUSER -F cicsplex=MYPLEX -F region=MYREGION -F csdgroup=CSDGRP -F bunddef=MYBUND -F bundle=@c:/path/to/bundle_0.0.1.zip https://mycicshost.com:4444/managedcicsbundles

CICS捆绑包部署 API 对上传的压缩文件内容进行解压缩,而不执行任何代码页转换。 在压缩之前,必须以正确的代码页对捆绑软件中的每个文件进行编码。

下一步

配置 CMCI JVM 服务器 以启用 API。 请参阅 为 CICS 束部署 API 配置 CMCI JVM 服务器