IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere | SOA and Web services  >

使用 WebSphere Developer for zSeries V6 创建 CICS Transaction Server for z/OS V3.1 中的一项 CICS Web 服务。

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

样例代码


级别: 中级

Wilbert Kho (wilbert@us.ibm.com), 认证 IT 软件咨询专家, IBM 

2005 年 12 月 27 日

CICS® Transaction Server for z/OS® V3.1 全面支持 Web 服务,使 CICS 应用程序能够充当服务提供者或服务请求者。WebSphere® Developer for zSeries V6 自动转换现有的 CICS COBOL 应用程序,以便这些应用程序能够充当服务提供者。

引言

本文说明如何使用 WebSphere Developer for zSeries V6.0(以下称为 WebSphere Developer)的 XML Services for the Enterprise (XSE) 组件转换现有的 CICS COBOL 应用程序,以便可以将其作为 Web 服务通过 CICS Transaction Server for z/OS V3.1(以下称为 CICS TS)的 CICS Web 服务工具进行访问。本文扩展了以前在文章 Developing a CICS-based Web service with WebSphere Studio Enterprise Developer and SOAP for CICS 中讨论的信息,并将其用法应用于 CICS TS V3.1 的 Web 服务工具。

本文将指导您生成:

  1. 可以部署到 CICS Transaction Server for z/OS V3.1 系统的驱动程序/转换程序和 WSBind 文件。
  2. 描述基于 CICS 服务的 WSDL(Web 服务描述语言)和 XSD(XML 模式定义)文件。

它还描述构建必要构件并将其部署到 CICS Transaction Server for z/OS 系统所需的步骤,并说明测试基于 CICS 的服务的方法。

开始之前,需要 WebSphere Developer for zSeries V6。还需要访问一个 CICS Transaction Server for a z/OS V3.1 系统。

本文中的示例是利用一个称为 DEMOMVS 的 z/OS V1R6 系统开发的,它运行 CICS Transaction Server for z/OS V3R1。另外,安装和启用了 WebSphere Developer 的 z/OS 组件。

本文下载部分中的 wdzcws.zip 文件提供了学习本文所需的构件。将该文件解压在 \wdzcws\artifacts 子目录中,我称之为 artifacts 目录。





回页首


WebSphere Developer for zSeries 概述

WebSphere Developer for zSeries V6 基于 IBM Rational Software Development Platform,促进了基于 Java 和 z/OS 的应用程序的开发。它包含的功能使得传统的 z/OS 主框架开发、Web 开发以及集成组合开发更加快捷、高效。通过支持和利用 IT 组织中的异构技能集(COBOL、PL/I 和 Java),它降低了创建混合工作负载应用程序的复杂性并减少了工作量。尤其是,WebSphere Developer 还包含支持 Web 服务开发和现有 z/OS COBOL 应用程序的 XML 支持的工具。这使得创建构成面向服务的体系结构 (SOA) 部分的基于 z/OS 的分布式组件更为容易。

WebSphere Developer 的 XML Services for the Enterprise (XSE) 功能提供的工具使您可以更轻松地改写基于 COBOL 的应用程序,以便它们可以使用并生成 XML 消息。无需修改现有的 COBOL 应用程序就可以实现这种改写,而更重要的是,无需修改调用现有 COBOL 应用程序的其他应用程序。COBOL 应用程序必须能够处理 XML 消息而成为一项 Web 服务,因为 XML 是用来描述 Web 服务请求和传递给现有应用程序的参数的语言。XSE 支持现有 CICS 或 IMS 应用程序所用驱动程序的创建。

这种支持的一项重要任务就是从 XML 元素映射到 COBOL 数据项,这可以利用下面的三种方法实现:

  • 自底向上——从现有的包含接口定义的 COBOL 应用程序或副本入手,即以 COBOL 作为基础,从中派生 XML 数据模型并生成映射或转换代码。
  • 中间相遇——给定一个现有 COBOL 接口定义(如上所定义)和一个 XML 描述(XML 架构、DTD、WSDL),创建连接 COBOL 数据项到 XML 元素的映射定义。推导出基于指定映射的 XML 数据模型,并生成映射/转化代码。
  • 自顶向下——从现有的接口 XML 描述(XML 模式、DTD、WSDL)开始,派生 XML 数据模型,并生成映射/转换代码。

    前两种方法本质上是转换现有的 COBOL 应用程序并将它们作为服务提供者使用。第三种方法帮助创建基于 COBOL 的服务请求者,它本质上是创建一个新的应用程序。WebSphere Developer for zSeries V6 目前支持自底向上和中间相遇的方法。在 CICS TS V3.1 的运行于 Web 服务环境的上下文中,本文将仅关注自底向上的方法。

    Web Services Enablement 向导是支持自底向上方法的 XSE 工具。它接受定义 COBOL 应用程序输入输出接口的输入 COBOL 数据声明。XML 结构和数据类型派生于 COBOL 数据声明。基于这些内容,Web Services Enablement 向导生成下面的一组构件(参见图 1):


    图 1. 生成的构件
    XSE 自底向上构件

  • 输入转换程序——接受一个传入 XML 文档并将其映射到现有 COBOL 应用程序所需的对应 COBOL 数据结构的 COBOL 程序。
  • 输出转换程序——接受从现有 COBOL 应用程序返回的 COBOL 数据结果并将它们映射到一个 XML 文档的 COBOL 程序。
  • 转换驱动程序——说明如何使用输入与输出转换程序与现有 COBOL 应用程序交互的 COBOL 程序。可以生成四种不同类型的转换驱动程序:
    • Batch、TSO 与 USS
    • IMS SOAP 网关
    • SOAP for CICS
    • Web Services for CICS
    本文考虑 Web Services for CICS 转换程序类型(参见图 2)。

    图 2. 转换程序类型
    XSE 转换程序类型

  • 输入文档 XML 模式定义 (XSD)——描述由输入转换程序处理的传入 XML 文档的 XML 模式
  • 输出文档 XML 模式定义 (XSD)——描述由输出转换程序产生的传出 XML 文档的 XML 模式
  • Web 服务描述语言 (WSDL)——描述 Web 服务以及如何使用它们的基于 XML 的语言。它也包含 XML 模式。必须手动创建以前使用 WebSphere Studio Enterprise Developer 创建的 WSDL 部分。
  • WSBind——由 CICS Transaction Server for z/OS V3.1 使用的 Web 服务绑定文件,用于执行应用程序数据结构和基于 XML 的 SOAP 消息之间的映射。当选择 Web Services for CICS 转换程序类型时生成该文件。作为对 CICS TS V3.1 的部分支持,该功能是 WebSphere Developer 中新增的。




回页首


CICS Web 服务

通过 SOAP for CICS 功能在 CICS Transaction Server for z/OS V2.2 和 V2.3 中提供对 Web 服务的支持。现在已经将这种支持完全集成到 CICS Transaction Server for z/OS V3.1 中。在该版本中,CICS 应用程序可以充当服务提供者和服务请求者的角色,其中利用 Web 服务描述语言 (WSDL) 来定义服务。作为 CICS TS V3.1 的一部分而提供的基础设施包含一种符合 WS-AtomicTransaction 规范的分布式事务协调功能。

CICS TS V3.1 对 Web 服务的支持包括 CICS Web 服务助手,一个可以帮助您实现以下功能的实用程序组:

  • 将现有的 CICS 应用程序转换为 Web 服务。
  • 支持 CICS 应用程序使用外部提供者提供的 Web 服务。

该助手可以根据简单的语言结构或来自现有 WSDL 文档的语言结构创建 WSDL 文档,并支持 COBOL、C/C++ 和 PL/I。它还生成信息来支持 SOAP 消息到容器和 COMMAREA 的自动运行时转换,反之亦然。

通过转换 CICS Web 服务助手本不包含的 COBOL 类型和结构,WebSphere Developer 的 XSE 功能对此进行了扩展和补充。例如,该助手不支持数据描述项的 OCCURS DEPENDING ON 和 REDEFINES。WebSphere Developer 还有根据生成的 WSDL 测试基于 CICS Web 服务的 Web 服务工具,以及便于创建基于 Java 的客户机的工具。





回页首


开发任务概述

为了创建一个 CICS Web 服务,需要执行下面的开发任务,我将在下面的部分详细讨论:
  1. 将 COBOL 接口导入到 z/OS 本地项目
  2. 利用 Web Services Enablement 向导生成转换驱动程序、输入输出转换程序、XML 模式、WSDL 和 WSBind 文件
  3. 将生成的构件构建和部署到 CICS TS
  4. 利用 Web Services Explorer 工具测试基于 CICS 的 Web 服务

本文在一个连接到称为 DEMOMVS 的 z/OS 系统的 Windows XP 工作站上进行开发和测试。本文假定您已经开始使用 WebSphere Developer 并熟悉其主要组件的用法。本文的有些部分要求您已经建立了到 z/OS 系统的连接,该系统包含一个运行 CICS TS V3.1 的区域。





回页首


任务 1. 将 COBOL 接口定义导入到 z/OS 本地项目

在这第一项任务中,将一个现有的 CICS COBOL 应用程序导入到一个 z/OS 本地项目。WebSphere Developer 的 Web Services Enablement 工具可以使用一个完整的 COBOL 源程序或一个包含描述应用程序接口数据声明的 COBOL 副本。这个 CICS COBOL 源程序即 WBCSCUST。给定一个客户编号,WBCSCUST 将返回关于该客户的信息。这些信息的源代码位于 artifacts 目录的 WBCSCUST.cbl 中。清单 1 显示了 WBCSCUST 的接口:


清单 1. WBCSCUST (DFHCOMMAREA) 的接口
                
01  DFHCOMMAREA.
	02  CustNo      PIC S9(9) COMP-5.
	02  LastName    PIC A(25).
	02  FirstName   PIC A(15).	
	02  Address1    PIC X(20).
	02  City        PIC A(20).	
	02  State       PIC A(5).
	02  Country     PIC X(15).
	02  RetCode     PIC S9.	

利用 New 创建向导创建一个 z/OS 本地项目(参见图 3),并将 WBCSCUST.cbl.从构件目录导入到该项目。用 cicsws 作为该项目的名称。


图 3. 创建一个 z/OS 本地项目
创建一个 z/OS 本地项目

利用导入工具的替代方法是利用 Remote Systems 视图导航到构件目录,以将文件复制并粘贴到该 z/OS 本地项目。





回页首


任务 2. 生成转换程序、XML 模式、WSDL 和 WSBind

接着,利用 Generate enablement components 向导生成组成用于 WBCSCUST 的 CICS Web 服务转换程序的 COBOL 程序。还要生成描述输入输出 XML 消息的 XML 模式和描述基于 CICS 服务的 WSDL 文件,以及 CICS TS V3.1 用来决定如何实现转换的 WSBind 文件。

  1. 右键单击 cicsws 本地项目中的 WBCSCUST.cbl ,选择 Enable Web Service => Generate enablement components 启动 Web Services Enablement 向导。
  2. Enable Web Service Wizard - Data Structures 页上,确保选中 Inbound data structure 选项卡。单击其旁边的 + 符号,展开 DFHCOMMAREA,并选择 CustNo 作为构成入站 XMLconverter 数据结构的唯一元素,如图 5 所示。

    图 5. 选择入站数据结构
    选择 Inbound 数据结构

  3. 选择 Outbound data structure 选项卡。单击 DFHCOMMAREA 复选框选择所有的数据项,作为出站 XMLconverter 的数据结构部分(参见图 6)。

    图 6. 选择出站数据结构
    选择 Outbound 数据结构

    单击 Next> 继续进行。

  4. Enable Web Service Wizard - Generation Options 页上确保选中 XML Converter Options 选项卡。选择 Web Services for CICS 作为转换程序类型并指定 WBCSCU 作为程序名称前缀。

    图 7. 转换程序选项。
    转换程序选项

    将后缀添加到程序名称的前缀,构成驱动程序和转换程序的程序 ID。例如,对于程序名称前缀 WBCSCU,驱动程序的程序 ID 将为 WBCSCUD。CICS 将在 WSBind 文件中查找被调用的转换程序名称。WebSphere Developer 将驱动程序的程序 ID 存储在 WSBind 文件中;因此转换程序(驱动程序/转换程序)必须用 WBCSCUD 名称构建在加载模块中。

  5. 选择 WSDL and XSD Options 选项卡。指定以下地址作为端点 URI,如图 8 所示:
    http://demomvs.demopkg.ibm.com:3091/wdz/CustInquiry

    这是用来到达部署转换程序 (WBCSCUD) 的目标 CICS 系统的 SOAP 地址。使用的传输协议为 HTTP。将使用本地 URI 部分 (/wdz/CustInquiry) 在 CICS 上创建 URIMAP 以匹配 URI 请求。指定的主机名称 (demomvs.demopkg.ibm.com) 是 DEMOMVS 系统的名称,而 CICS Web Services 在 DEMOMVS 系统上使用的端口号为 3091。利用系统的适当值替代主机名和端口号。


    图 8. 指定端点
    指定端点

    单击 Next> 继续进行。

  6. 在 Web Service Wizard - Web Services for CICS 页上,确保选中 WSBind Properties 选项卡。接受缺省的 WSBind 文件名称 WBCSCUST。选择 DFHCOMMAREA 作为程序接口,如图 9 所示。

    图 9. WSBind
    WSBind

    程序接口可以是 DFHCOMMAREA 或 CICS 3.1 新支持的 CONTAINER。由于我们是在转换现有的 CICS COBOL 应用程序,这将使用 DFHCOMMAREA 接口。将创建一个文件扩展名为 wsbind 的 WSBind 文件,它为二进制 EBCDIC 格式。

  7. 选择 Advanced WSBind Properties 选项卡,如图 10 所示。检查并接受缺省值。注意,Local URI 取自前面指定的 Endpoint URI 的一部分。

    图 10. 高级 WSBind 规范
    WSBind

    PIPELINE 是一种 CICS 应用程序充当 Web 服务提供者或请求者角色时使用的 CICS 资源。它提供作为服务请求和响应的消息处理程序的信息。一般情况下,单个 PIPELINE 定义可由许多应用程序使用。我们将推迟说明 PIPELINE,一直到部署为止。

    通过指定 WSDL 文件所在的目标 z/OS 系统上的 HFS 路径,可以要求 CICS Web Services 验证所使用的 WSDL。在测试或调试期间通常这样做,而在进行生产时不推荐这样做。

    单击 Next> 继续。

  8. 在“Enable Web Service Wizard - File, data set, or member selection”页上,确保选中 XML Converters 选项卡。将转换驱动程序名称指定为 WBCSCUD。选中 Generate all to driver 框,如图 11 所示。

    图 11. 转换程序文件名
    转换程序文件名

  9. 选择 WSDL and XSD 选项卡。检查并接受缺省值(参见图 12)。

    图 12. WSDL 与 XSD 文件名
    WSDL 与 XSD 文件名

    单击 Finish 完成生成转换程序(转换驱动程序、输入输出转换程序)、WSBind、XSD 和 WSDL 文件的过程。

  10. Web Services Enablement 向导生成结束后,应当可以在 cicsws z/OS 本地项目中看到 5 个添加的构件(如图 13 所示)。
    • WBCSCUD.cbl 为转换程序(转换驱动程序、输入输出转换程序)。
    • WBCSCUST.wsbind 是告知 CICS 如何进行转换以及 URI 映射外观的 WSBind 文件。
    • WBCSCUST.wsdl 是描述该基于 CICS 的 Web 服务的 WSDL 文件。
    • WBCSCUSTI.xsd 和 WBCSCUSTO.xsd 分别为描述输入输出 XML 文档的 XML 模式定义文件。

    图 13. 生成的构件
    Generated_artifacts.jpg

  11. 双击 WBCSCUD.cbl,在 z/OS LPEX Editor 中打开它。利用 z/OS LPEX Editor 查看代码以了解不必手动开发转换程序而获得的工作效率。注意,CICS Web Services 的转换驱动程序不同于 SOAP for CICS 的驱动程序,特别是它与现有程序的交互。SOAP for CICS 驱动程序包含一个到现有程序的 EXEC CICS LINK。CICS Web Services 驱动程序根本不调用现有程序。这是因为 CICS Web Service 负责调用现有程序。查看完毕后关闭编辑器。




回页首


任务 3. 将生成的构件构建和部署到 CICS

下一项任务是将转换程序和 WSBind 文件构建和部署到 z/OS。

  1. 利用 WebSphere Developer 的 Remote System Explorer 工具将转换程序移动到目标 z/OS 系统,以将生成的转换程序从 z/OS 本地项目复制到一个 PDS 或库中。
  2. 编译和链接编辑转换程序,创建要部署到 CICS 的加载模块。可以利用 WebSphere Developer 的 z/OS Application Development 工具生成和提交所需的 JCL。
  3. 创建加载模块后,通过复制到一个 PDS 或库中使其对于 CICS 可用,PDS 或库是 CICS 启动工作中 DFHRPL 串联的一部分。如果没有激活自动安装 CICS 程序,那么需要为 WBCSCUD 定义程序资源。
  4. 将 WSBind 文件移到目标 z/OS 系统上的一个 USS HFS(分层文件系统)pickup 目录中。该 WSBind 文件是一个 EBCDIC 二进制文件,因此需要按二进制发送到目标 z/OS 系统。可以利用 WebSphere Developer 的 Remote System Explorer 工具来复制该文件。但是首先需要告知 WebSphere Developer 具有 wsbind 扩展名的文件需要按二进制进行处理。为此,弹出 Preferences 对话框。从左边的列表中选择 Remote Systems,然后添加一个新文件类型 *.wsbind。对于该文件类型,指定 Binary 作为文件传输模式。

    图 14. WSBind——二进制
    WSBind——二进制

  5. CICS PIPELINE 资源包含一个对pickup目录的引用。定义或使用一个现有的引用 WSBind 所复制到的pickup目录的 PIPELINE 资源。当安装管道或进行扫描时,CICS 将读取该pickup目录中的 WSBind 文件并自动定义和安装与这些 WSBind 文件相关的 WEBSERVICE 与 URIMAP 资源。图 15 显示了 WKPIPE01 的 PIPELINE 定义,而 WSBind 文件放置在 /u/dnet017/cwspickup/ 的pickup目录中以备安装。

    图 15. PIPELINE 定义
    PIPELINE 定义

    图 16 显示了通过扫描 WKPIPE01 管道而创建和安装的 WEBSERVICE 资源,其中在相关的pickup目录中有一个 WBCSCUSD.wsbind 文件。它说明了与程序 WBCSCUST(现有程序)和自动生成的 URIMAP ($308350) 的关系。


    图 16. WEBSERVICE 资源
    WEBSERVICE 资源

    图 17 显示了自动生成的 URIMAP $308350 的定义。它显示了一条 /wdz/CustInquiry 路径,它从 WSBind 文件获得。当一个本地 URI 为 /wdz/CustInquiry 的请求进入到 CICS 时,该 URIMAP 定义将进行匹配,该请求与 WEBSERVICE WBCSCUSD 关联,它有一个对 WSBind 文件的引用。 WSBind 文件包含由 CICS Web 服务调用的转换程序的名称。


    图 17. URIMAP 定义
    URIMAP 定义





回页首


任务 4. 测试基于 CICS 的服务

为测试所部署的基于 CICS 的服务,可以利用 WebSphere Developer 的 Web Services Explorer 工具。

  1. 选择 cicsws z/OS 本地项目中的 WBCSCUST.wsdl。单击右键,选择 Web Services->Test with WebServices Explorer
  2. Web Services Explorer 启动一个 Web 浏览器视图。注意,Status 区域已成功打开 WBCSCUST.wsdl。在 Actions 区域将可以看到 WBCSCUSTOperation 操作可用(图 18)。单击 WBCSCUSTOperation 操作的链接(或者,可以单击 Navigator 视图中 WBCSCUSTBinding 旁边的 + 号)。

    图 18. Web Services Explorer
    Web Services Explorer

  3. 注意,图 19 中 Actions 区域现在已经由有关 WBCSCUSTOperation 操作和它所接受参数的信息所替代。它还列出了与该请求相关的端点。为 CustNo 输入值 8 并单击 Go 调用操作

    图 19. WBCSCUSTOperation 参数
    WBCSCUSTOperation 参数

    图 20 显示了 Status 视图中的结果。


    图 20. WBCSCUSTOperations 的结果
     WBCSCUSTOperation 的结果





回页首


结束语

您已经领会如何利用 WebSphere Developer for zSeries V6 的 XML Services for the Enterprise 功能轻松地将现有的 CICS COBOL 应用程序转换为一个 Web 服务并测试基于 CICS 的服务。可以利用 WebSphere Developer 生成的 WSDL 文件作为创建访问基于 CICS 服务的客户机的起点。






回页首


下载

描述名字大小下载方法
Code sample artifactswdzcws.zip2KB  FTP|HTTP
关于下载方法的信息


参考资料

学习

获得产品和技术
  • 利用 IBM 试用软件构建您的下一个开发项目,该软件可以直接从 developerWorks 下载获得。


讨论


关于作者

Wilbert Kho 是 IBM 的一位认证 IT 软件咨询专家。他在 Americas zSeries WebSphere 团队工作。他的专长包括应用程序转换工具,比如 WebSphere Studio Asset Analyzer 和 WebSphere Developer for zSeries。他拥有 20 多年的 IT 行业经验,并拥有 Philippines 大学的电气工程理学士学位和 Northern Illinois 大学的计算机科学硕士学位以及 Phoenix 大学的 M.B.A. 学位。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款