IBM® JZOS Toolkit 由包 com.ibm.jzos中的类组成,该包在单个 JAR 文件 ibmjzos.jar中随 IBM Java™ SDK for z/OS 一起分发。
这些类为 z/OS 上的 Java 应用程序提供了对传统 z/OS 数据集和文件的直接访问权,以及对用于将字节数组字段映射到 Java 数据类型的 z/OS 系统服务和转换器类的访问权。
开始之前
如果未将 JZOS Toolkit API 下载到工作站,请将 ibmjzos.jar 文件从 z/OS 上的相关版本的 IBM Java SDK 传输到工作站。
过程
- 设置目标平台。 要准备在开发环境中使用 JCICS API ,请设置 Eclipse 目标平台以确保它可以在本地进行解析。 在 OSGi 开发环境中,目标平台定义用于定义工作空间中的应用程序所构建的插件。 对于 CICS Explorer® ,请使用 Eclipse 菜单 。 单击 添加,然后从提供的模板中选择运行时环境的 CICS TS 发行版。 请不要忘记将目标平台应用于工作空间。
- 为 JZOS Toolkit 创建 OSGi 包装器捆绑软件。 如果您具有 IBM CICS® SDK for Java EE 和 Liberty 插件,请选择 以创建新的 OSGi 捆绑软件项目。 确保新创建的捆绑软件导出 Java 应用程序所需的所有可用 JZOS Toolkit 包,例如 com.ibm.jzos, com.ibm.jzos.fields或 com.ibm.jzos.wlm。 这将确保这些包可供 Eclipse 工作空间中的其他 OSGi 项目导入。
例如
Export-Package: com.ibm.jzos,
com.ibm.jzos.fields
- 创建 CICS Java 应用程序。
- 使用向导 在 Eclipse 中创建 OSGi 捆绑软件项目 。
- 创建 Java 包 com.ibm.cicsdev.jzos.sample 并添加类 ZFilePrint。
- 复制以下代码示例,这将打开由 //INPUT DD 指向的 MVS™ 数据集,并将输出写入 CICS 临时存储器队列。
package com.ibm.cicsdev.jzos.sample;
import com.ibm.jzos.ZFile;
import com.ibm.jzos.ZUtil;
import com.ibm.cics.server.TSQ;
public class ZFilePrint
{
public static void main(String[] args) throws Exception
{
ZFile zFile = new ZFile("//DD:INPUT", "rb,type=record,noseek");
TSQ tsqQ = new TSQ();
tsqQ.setName("JZOSTSQ");
try
{
byte[] recBuf = new byte[zFile.getLrecl()];
int nRead;
String encoding = ZUtil.getDefaultPlatformEncoding();
while ((nRead = zFile.read(recBuf)) >= 0)
{
String line = new String(recBuf, 0, nRead, encoding);
tsqQ.writeString(line);
}
}
finally
{
zFile.close();
}
}
}
- 将以下 Import-Package 语句添加到 JCICS 和 JZOS 软件包的捆绑软件清单中。 JCICS 导入应遵循最佳实践来指定应用程序操作所使用的一系列版本。 通常,此范围将达到 (但不包括) 下一个 API 中断更改。 对于版本为 2.0.0的 JCICS ,将在示例中使用范围 com.ibm.cics.server;version="[1.401.0,2.0.0)" ,因为这是支持 JCICS TSQ.writeString() 方法所需的最低级别。 JZOS 软件包不是从版本化捆绑软件获取的。 它从没有版本的底层 JAR 文件显示到运行时,因此可以在没有引用版本的情况下列出 com.ibm.jzos ,这允许选择任何可用版本 (包括 0.0.0)。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: com.ibm.cicsdev.jzos.sample
Bundle-SymbolicName: com.ibm.cicsdev.jzos.sample
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: com.ibm.cics.server;version="[1.401.0,2.0.0)",
com.ibm.jzos
- 将 CICS-MainClass: 定义添加到束清单以注册 com.ibm.cicsdev.jzos.sample.ZFilePrint 类的 MainClass 服务。
这允许使用 CICS 程序定义链接 Java 类。 您的清单现在类似于以下示例:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: com.ibm.cicsdev.jzos.sample
Bundle-SymbolicName: com.ibm.cicsdev.jzos.sample
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: com.ibm.cics.server;version="[1.401.0,2.0.0)",
com.ibm.jzos
CICS-MainClass: com.ibm.cicsdev.jzos.sample.ZFilePrint
结果
现在,应用程序已准备好进行测试,可以使用 CICS 束项目将其部署到 CICS OSGi JVM 服务器中,如下所示:
- 在 Eclipse 中创建 CICS 束项目,并使用菜单 新建 OSGi 束项目包含来添加 OSGi 束项目 。
- 使用菜单 将捆绑软件项目导出到 z/OS UNIX 文件系统来部署到 zFS 。
- 创建引用此 zFS 位置的 CICS BUNDLE 定义并进行安装。
- 创建用于在
JVMClass 属性中命名 CICS-MainClass: com.ibm.cicsdev.jzos.sample.ZFilePrint 的 CICS PROGRAM 定义并进行安装。
- 在运行应用程序之前,需要在引用有效 MVS 数据集的 CICS JCL 中定义 MVS DD ,然后重新启动 CICS 区域。 例如,
//INPUT DD DISP=SHR,DSN=CICS.USER.INPUT
- 如果需要从 3270 控制台运行应用程序,请创建引用步骤 4 中定义的 PROGRAM 的 TRANSACTION 定义。
启动时, Java 类
ZFilePrint 会使用 JZOS Toolkit API 读取定义的 MVS 数据集,然后使用 JCICS API 将内容写入 CICS 临时存储器队列。