开发 Java 应用程序以在 OSGi JVM 服务器中使用 JZOS Toolkit API

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 传输到工作站。

过程

  1. 设置目标平台。 要准备在开发环境中使用 JCICS API ,请设置 Eclipse 目标平台以确保它可以在本地进行解析。 在 OSGi 开发环境中,目标平台定义用于定义工作空间中的应用程序所构建的插件。 对于 CICS Explorer® ,请使用 Eclipse 菜单 Windows > 首选项 > 插件开发 > 目标平台。 单击 添加,然后从提供的模板中选择运行时环境的 CICS TS 发行版。 请不要忘记将目标平台应用于工作空间。
  2. 为 JZOS Toolkit 创建 OSGi 包装器捆绑软件。 如果您具有 IBM CICS® SDK for Java EE 和 Liberty 插件,请选择 文件 > 导入 > Java 归档到 OSGi 捆绑软件中 以创建新的 OSGi 捆绑软件项目。 确保新创建的捆绑软件导出 Java 应用程序所需的所有可用 JZOS Toolkit 包,例如 com.ibm.jzoscom.ibm.jzos.fieldscom.ibm.jzos.wlm。 这将确保这些包可供 Eclipse 工作空间中的其他 OSGi 项目导入。
    例如
    
    Export-Package: com.ibm.jzos,
      com.ibm.jzos.fields
  3. 创建 CICS Java 应用程序。
    1. 使用向导 文件 > 新建 > 其他插件项目在 Eclipse 中创建 OSGi 捆绑软件项目
    2. 创建 Java 包 com.ibm.cicsdev.jzos.sample 并添加类 ZFilePrint。
    3. 复制以下代码示例,这将打开由 //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();
              }
          }
      }
  4. 将以下 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
  5. 将 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 服务器中,如下所示:
  1. 在 Eclipse 中创建 CICS 束项目,并使用菜单 新建 OSGi 束项目包含来添加 OSGi 束项目
  2. 使用菜单 将捆绑软件项目导出到 z/OS UNIX 文件系统来部署到 zFS 。
  3. 创建引用此 zFS 位置的 CICS BUNDLE 定义并进行安装。
  4. 创建用于在 JVMClass 属性中命名 CICS-MainClass: com.ibm.cicsdev.jzos.sample.ZFilePrint 的 CICS PROGRAM 定义并进行安装。
  5. 在运行应用程序之前,需要在引用有效 MVS 数据集的 CICS JCL 中定义 MVS DD ,然后重新启动 CICS 区域。 例如,
    //INPUT    DD DISP=SHR,DSN=CICS.USER.INPUT
    
  6. 如果需要从 3270 控制台运行应用程序,请创建引用步骤 4 中定义的 PROGRAM 的 TRANSACTION 定义。
启动时, Java 类 ZFilePrint 会使用 JZOS Toolkit API 读取定义的 MVS 数据集,然后使用 JCICS API 将内容写入 CICS 临时存储器队列。