应用CICSWebService实现CICS程序的Web服务封装

上传人:cn****1 文档编号:591864682 上传时间:2024-09-18 格式:PPT 页数:52 大小:500KB
返回 下载 相关 举报
应用CICSWebService实现CICS程序的Web服务封装_第1页
第1页 / 共52页
应用CICSWebService实现CICS程序的Web服务封装_第2页
第2页 / 共52页
应用CICSWebService实现CICS程序的Web服务封装_第3页
第3页 / 共52页
应用CICSWebService实现CICS程序的Web服务封装_第4页
第4页 / 共52页
应用CICSWebService实现CICS程序的Web服务封装_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《应用CICSWebService实现CICS程序的Web服务封装》由会员分享,可在线阅读,更多相关《应用CICSWebService实现CICS程序的Web服务封装(52页珍藏版)》请在金锄头文库上搜索。

1、 大型主机应用上的开放系统和中间件大型主机应用上的开放系统和中间件第第1010章章 应用应用CICS Web ServiceCICS Web Service实现实现CICSCICS程序的程序的WebWeb服务服务封装封装10.1 10.1 课题背景课题背景10.1.1 10.1.1 概述概述n n研究一下当前的应用程序开发,你会发现一个绝对的倾向:人们开始研究一下当前的应用程序开发,你会发现一个绝对的倾向:人们开始偏爱基于浏览器的客户应用程序。这当然不是因为客户能够提供更好偏爱基于浏览器的客户应用程序。这当然不是因为客户能够提供更好的用户界面,而是因为他能够避免花在桌面应用程序发布上的高成本。

2、的用户界面,而是因为他能够避免花在桌面应用程序发布上的高成本。n n发布桌面应用程序的成本很高,一半是因为应用程序安装和配置的问发布桌面应用程序的成本很高,一半是因为应用程序安装和配置的问题,另一半是因为客户和服务器之间通信的问题。题,另一半是因为客户和服务器之间通信的问题。n n传统的传统的WindowsWindows富客户应用程序是使用富客户应用程序是使用DCOMDCOM来与服务器进行通信和调用来与服务器进行通信和调用远程对象。配置好远程对象。配置好DCOMDCOM使其在一个大型的网络中正常工作将是一个极使其在一个大型的网络中正常工作将是一个极富挑战的工作,同时也是许多富挑战的工作,同时也

3、是许多ITIT工程师的噩梦。事实上许多工程师的噩梦。事实上许多ITIT工程师工程师宁愿忍受浏览器所带来的功能限制,也不愿在局域网去运行一个宁愿忍受浏览器所带来的功能限制,也不愿在局域网去运行一个DCOMDCOM。n n在许多在许多ITIT工程师看来,结果就是一个发布交易,但却要开发难度大而工程师看来,结果就是一个发布交易,但却要开发难度大而且用户界面极其受限的应用程序。且用户界面极其受限的应用程序。n n关于客户端与服务器的通信问题,一个完美的解决方法是使用关于客户端与服务器的通信问题,一个完美的解决方法是使用HTTPHTTP协协议来通信,这是因为任何运行议来通信,这是因为任何运行WebWeb

4、浏览器的都在使用浏览器的都在使用HTTPHTTP协议。同时,协议。同时,当前许多防火墙也配置只允许当前许多防火墙也配置只允许HTTPHTTP连接。连接。n n如今很多的商用程序还面临着另一个问题,那就是与其他程序的互操如今很多的商用程序还面临着另一个问题,那就是与其他程序的互操作性。作性。如果所有的应用程序都是用如果所有的应用程序都是用COMCOM或或.NET.NET预言编写,平且都运行在预言编写,平且都运行在WindowsWindows平平台上,那自然天下太平。台上,那自然天下太平。然而,事实上大多数的商业数据仍然在大型主机上以非关系文件(然而,事实上大多数的商业数据仍然在大型主机上以非关系

5、文件(VSAMVSAM)的形式存放,并由的形式存放,并由COBOLCOBOL语言编写的大型机程序访问。而且还有许多商用程语言编写的大型机程序访问。而且还有许多商用程序继续使用序继续使用C+C+,JavaJava和其他的各种各样的语言编写。和其他的各种各样的语言编写。现在,除了最简单的程序之外,所有的程序都需要与运行在其他异构平台现在,除了最简单的程序之外,所有的程序都需要与运行在其他异构平台上的应用程序进行数据交换。在以前没有一个应用程序通讯标准是独立于上的应用程序进行数据交换。在以前没有一个应用程序通讯标准是独立于平台,组件模型和编程语言的,只有通过平台,组件模型和编程语言的,只有通过Web

6、Web服务服务, ,客户端和服务端才能够客户端和服务端才能够自由地用自由地用HTTPHTTP进行通信,无论两个程序的平台和编程语言是什么。进行通信,无论两个程序的平台和编程语言是什么。n nCICSCICS(Customer Information Control System)Customer Information Control System),即客户信息控制系,即客户信息控制系统,是为统,是为 IBM IBM 和非和非IBM IBM 平台上一系列应用提供联机事务处理和事务管平台上一系列应用提供联机事务处理和事务管理的产品,其主要功能是为商业应用提供一个事务处理环境。理的产品,其主要功能

7、是为商业应用提供一个事务处理环境。n n该产品拥有近四十年的悠久历史,被广泛应用于银行金融业。但随着该产品拥有近四十年的悠久历史,被广泛应用于银行金融业。但随着当前信息技术的迅猛发展,很多经典的事务处理应用面临着如何被扩当前信息技术的迅猛发展,很多经典的事务处理应用面临着如何被扩展和重用,以求与其他平台应用相集成的问题。展和重用,以求与其他平台应用相集成的问题。n nCICS CICS 作为作为IBMIBM的重要产品,借鉴了的重要产品,借鉴了SOASOA的主要思想,采用的主要思想,采用WebWeb服务封装服务封装已有的应用,实现了已有的应用,实现了 CICS CICS 与其他平台应用的结合与互

8、操作。与其他平台应用的结合与互操作。10.1.2 10.1.2 互连网发展状况及其应用互连网发展状况及其应用n n随随着着互互联联网网技技术术突突飞飞猛猛进进地地发发展展,开开发发WebWeb软软件件越越来来越越复复杂杂,程程序序开开发发人员应该对人员应该对WebWeb技术有系统的理解。技术有系统的理解。n n首首先先,让让我我们们回回顾顾互互联联网网技技术术的的发发展展,从从而而深深入入分分析析WebWeb编编程程的的基基本本概概念。念。典典型型的的WebWeb模模型型将将计计算算机机网网络络分分为为若若干干个个相相关关层层。早早在在2020世世纪纪8080年年代代,国国际际标标准准化化组组

9、织织(ISOISO)提提出出了了OSIOSI网网络络抽抽象象模模型型,将将互互联联网网系系统统分分为为七七层层:最最底底层层是是物物理理层层(PhysicalPhysical)和和数数据据链链路路层层(Data Data LinkLink),其其上上依依次次是是网网络络层层(NetworkNetwork)、传传送送层层(TransportTransport)、会会话话层层(SessionSession)、表表示示层层(PresentationPresentation)和和应应用用层层(ApplicationApplication),每每一一层层都都代代表表特特定定的的功功能能组组合。底层功能通

10、过提供服务接口支持上层功能。合。底层功能通过提供服务接口支持上层功能。物物理理层层主主要要描描述述网网络络中中通通信信机机制制的的信信号号和和连连接接特特性性,数数据据链链路路层层定定义义在在物物理理层层之之上上的的数数据据传传送送状状态态,网网络络层层定定义义了了在在由由数数据据链链路路组组成成的的互互联联网网中中怎怎样样查查找找和和分分发发数数据据,传传送送层层用用于于保保证证数数据据在在网网络络中中正正确确传传递递,会会话话层层定定义义数数据据包包在在传传递递时时的的相相互互组组织织关关系系,表表示示层层描描述述数数据据类类型型在在网网络络传传递递时时的的格格式,应用层定义用户使用的互联

11、网功能式,应用层定义用户使用的互联网功能( (如如TelnetTelnet,FTPFTP,E-Mail)E-Mail)。n n互联网发展的过程伴随着标准化的过程,在各个功能层都需要定义标互联网发展的过程伴随着标准化的过程,在各个功能层都需要定义标准化的网络协议(准化的网络协议(ProtocolProtocol)。)。例如在网络层,每个网络主机都要设置一个例如在网络层,每个网络主机都要设置一个IPIP地址并以互联网协议规定数地址并以互联网协议规定数据从它的始发地到目的地选择的路径方式;在传送层,据从它的始发地到目的地选择的路径方式;在传送层,TCPTCP规定了允许不同规定了允许不同计算机共享一个

12、网络上的信息的通信协议;在应用层,计算机共享一个网络上的信息的通信协议;在应用层,HTTPHTTP定义了在定义了在WWWWWW上上的文档传递协议。的文档传递协议。n n在在2020世纪世纪9090年代被迅速推广的年代被迅速推广的HTTPHTTP和和HTMLHTML真正实现了互联网的广泛应真正实现了互联网的广泛应用,用户不必掌握用,用户不必掌握TelnetTelnet或或FTPFTP的操作命令就可以轻松地访问网页。基的操作命令就可以轻松地访问网页。基于互联网的电子商务因此成为于互联网的电子商务因此成为ITIT行业的热点而带动了全球经济的发展。行业的热点而带动了全球经济的发展。n n处理和产生处理

13、和产生HTMLHTML的技术(如的技术(如JSPJSP,ASPASP,CGICGI等)成为主要的等)成为主要的WebWeb编程语编程语言。言。n n在最近几年,在最近几年,WebWeb服务(服务(WebWeb ServiceService)成为下一代的互联网功能层次,)成为下一代的互联网功能层次,它定义了如何在它定义了如何在HTTPHTTP之上利用之上利用XMLXML语言和语言和SOAPSOAP,UDDIUDDI等网络服务协议集等网络服务协议集成和查找互联网上的服务程序。成和查找互联网上的服务程序。n n纵观互联网的发展过程,我们可以发现:底层功能的完善会优化上层纵观互联网的发展过程,我们可以

14、发现:底层功能的完善会优化上层功能,上层功能的推广又对底层功能提出更高要求。功能,上层功能的推广又对底层功能提出更高要求。n n当当WebWeb硬件能提供高速度和带宽时,软件公司才可能开发出满足用户需硬件能提供高速度和带宽时,软件公司才可能开发出满足用户需要的程序。要的程序。WebWeb系统被大量使用往往使现有系统不能满足需求,这就要系统被大量使用往往使现有系统不能满足需求,这就要求开发出新的硬件和软件系统。求开发出新的硬件和软件系统。例如,在例如,在HTTPHTTP协议上,最先只有协议上,最先只有HTMLHTML作为文档编辑语言,当作为文档编辑语言,当WebWeb浏览器(浏览器(IEIE,N

15、etscapeNetscape等)成为计算机必不可少的上网工具时,动态的等)成为计算机必不可少的上网工具时,动态的WebWeb设计语言设计语言(如(如Java Servlet/JSPJava Servlet/JSP,ASPASP,CGICGI等)应运而生,其后由于这些语言需要等)应运而生,其后由于这些语言需要占用系统计算资源,高速的占用系统计算资源,高速的WebWeb应用服务器软件和主机成为大型网站必不可应用服务器软件和主机成为大型网站必不可少的配置。少的配置。JavaJava技术提供的技术提供的WebWeb编程技术就是在这样的发展背景下被开发和广泛使用的,编程技术就是在这样的发展背景下被开发

16、和广泛使用的,这些技术主要基于传送层和应用层的协议和程序接口,从而提供了高效、这些技术主要基于传送层和应用层的协议和程序接口,从而提供了高效、可靠、实用的可靠、实用的WebWeb程序平台。程序平台。10.1.3 10.1.3 本章研究内容的意义本章研究内容的意义n n主机主机 (Mainframe) (Mainframe) 上的上的 CICS CICS 服务由于其历史的悠久,存在着很多对服务由于其历史的悠久,存在着很多对于事务处理的经典应用。于事务处理的经典应用。n n如何将这些应用重用,并通过封装与其他平台的服务进行交互是本章如何将这些应用重用,并通过封装与其他平台的服务进行交互是本章的主要

17、内容。的主要内容。n n下一章我们通过一个下一章我们通过一个CICSCICS提供的样例应用程序封装成提供的样例应用程序封装成WebWeb服务的提供者服务的提供者(ProviderProvider)接受其他应用程序的访问。对)接受其他应用程序的访问。对WebWeb服务接口在服务接口在COBOLCOBOL程序程序中如何实现,中如何实现, WebWeb服务相关参数,服务相关参数,CICS TS 3.1CICS TS 3.1如何定义如何定义WebWeb服务以及服务以及WebWeb服务在其他平台上如何部署做了全面的探讨。服务在其他平台上如何部署做了全面的探讨。n nWebWeb服务可以用真正与平台无关的

18、方式来描述任何数据,以跨系统交换服务可以用真正与平台无关的方式来描述任何数据,以跨系统交换数据,因此转向了松耦合应用程序。而且,在数据,因此转向了松耦合应用程序。而且,在WebWeb服务层面上工作,较服务层面上工作,较抽象层面可以按照需要动态地重新评估、修改或处理数据类型。所以,抽象层面可以按照需要动态地重新评估、修改或处理数据类型。所以,从技术层面上讲,从技术层面上讲,WebWeb服务可以更方便地处理数据,并且允许软件更自服务可以更方便地处理数据,并且允许软件更自由地进行通信。由地进行通信。n n从更高的概念层面上讲,我们可以将从更高的概念层面上讲,我们可以将 WebWeb服务视为一些工作单

19、元,每服务视为一些工作单元,每个单元处理特定的功能任务。个单元处理特定的功能任务。n n再往上一步,可以将这些任务组合成面向业务的任务,以处理特定的再往上一步,可以将这些任务组合成面向业务的任务,以处理特定的业务操作任务,从而使非技术人员可以考虑一些应用程序,这些应用业务操作任务,从而使非技术人员可以考虑一些应用程序,这些应用程序能够在程序能够在 WebWeb服务应用程序工作流中一起处理业务问题。服务应用程序工作流中一起处理业务问题。10.2 SOA10.2 SOA与与WebWeb服务服务10.2.1 SOA10.2.1 SOA简介简介n n面向服务的体系架构(面向服务的体系架构(Servic

20、e-Oriented ArchitectureService-Oriented Architecture,简称,简称SOASOA)是一种是一种 IT IT 体系结构风格,支持将业务转换为一组相互链接的服务或体系结构风格,支持将业务转换为一组相互链接的服务或可重复业务任务,可在需要时通过网络访问这些服务和任务。可重复业务任务,可在需要时通过网络访问这些服务和任务。n n这个网络可以是本地网络、这个网络可以是本地网络、InternetInternet,也可以分散于各地且采用不同,也可以分散于各地且采用不同的技术。的技术。n n通过对来自各地的服务进行组合,可让最终用户感觉似乎这些服务就通过对来自各

21、地的服务进行组合,可让最终用户感觉似乎这些服务就安装在本地桌面上一样。可以对这些服务进行组合,以完成特定的业安装在本地桌面上一样。可以对这些服务进行组合,以完成特定的业务任务,从而让业务快速适应不断变化的客观条件和需求。务任务,从而让业务快速适应不断变化的客观条件和需求。10.2.1.1 SOA10.2.1.1 SOA定义定义n nSOASOA即即Service-Oriented ArchitectureService-Oriented Architecture,就是面向服务的架构,是一,就是面向服务的架构,是一种以通用为目的、可扩展、具有联合协作性的架构。种以通用为目的、可扩展、具有联合协作

22、性的架构。n nSOASOA中所有的流程都被定义为服务,服务通过基于类封装的服务接口委中所有的流程都被定义为服务,服务通过基于类封装的服务接口委托给服务提供者。服务接口根据可扩展标识符、格式和协议单独描述。托给服务提供者。服务接口根据可扩展标识符、格式和协议单独描述。n nSOASOA提供了一种构建信息系统的标准和方法,并通过建立可重用的服务提供了一种构建信息系统的标准和方法,并通过建立可重用的服务体系来减少体系来减少ITIT业务冗余并加快项目开发的进程,使得开发部门效率更业务冗余并加快项目开发的进程,使得开发部门效率更高,开发周期更短,项目分发更快。高,开发周期更短,项目分发更快。n n与传

23、统软件相比,与传统软件相比,SOASOA非常强调非常强调“ “使用者使用者” ”为中心。为中心。以往的信息系统是人围着技术转,比如服务器,数据库,做大量的二次开以往的信息系统是人围着技术转,比如服务器,数据库,做大量的二次开发和维护工作。而发和维护工作。而SOASOA架构下的信息系统则如同餐馆服务员围着食客转,对架构下的信息系统则如同餐馆服务员围着食客转,对使用者而言,服务(即业务所需要的功能)是一个屏蔽了复杂技术的黑盒使用者而言,服务(即业务所需要的功能)是一个屏蔽了复杂技术的黑盒子,使用者不必了解内情,只管调用就行。而且这些业务功能是完好封装子,使用者不必了解内情,只管调用就行。而且这些业

24、务功能是完好封装的,可以在不同业务流程中通过标准接口多次调用。的,可以在不同业务流程中通过标准接口多次调用。n nSOASOA体系架构的概览图如下图体系架构的概览图如下图10-110-1所示:所示:n nSOA SOA 架构将每一个资源或应用看成一个服务,每个服务执行一组方法架构将每一个资源或应用看成一个服务,每个服务执行一组方法实现一组功能。服务之间的交互通过实现一组功能。服务之间的交互通过Enterprise Service BusEnterprise Service Bus(ESBESB)以一种特殊的信息结构以一种特殊的信息结构消息或文档来实现。消息或文档来实现。10.2.1.2 SOA

25、10.2.1.2 SOA特点特点n n在在SOASOA中,围绕服务的所有模式都是基于标准的技术实现的,服务既可中,围绕服务的所有模式都是基于标准的技术实现的,服务既可以定义为功能,又可以同时对外定义为对象应用等等,这使得以定义为功能,又可以同时对外定义为对象应用等等,这使得SOASOA可适可适应于任何现有的系统。应于任何现有的系统。n nSOASOA有以下几大特点:有以下几大特点:1.1.松散耦合。松散耦合。n n服务请求者到服务提供者的绑定与服务之间是松耦合的。服务请求者到服务提供者的绑定与服务之间是松耦合的。n nSOASOA将服务使用者和服务提供者在服务实现和客户如何使用服务方面隔将服务

26、使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来。服务请求者不需要知道提供者实现的技术细节比如设计语言,离开来。服务请求者不需要知道提供者实现的技术细节比如设计语言,部署平台等等。部署平台等等。n n服务请求者往往通过消息调用操作,请求消息和响应而不是通过使用服务请求者往往通过消息调用操作,请求消息和响应而不是通过使用APIAPI和文件格式,这使得服务能够在完全不影响使用者的情况下进行修和文件格式,这使得服务能够在完全不影响使用者的情况下进行修改。改。n n大多数松散耦合方法都依靠于服务接口的消息,基于消息能够兼容的大多数松散耦合方法都依靠于服务接口的消息,基于消息能够兼容的多种传输

27、方式(如多种传输方式(如HTTPHTTP,TCP/IPTCP/IP,JMSJMS等)。基于消息的接口可以采取等)。基于消息的接口可以采取同步或异步协议实现。同步或异步协议实现。n nWebWeb服务对于服务对于SOASOA服务接口来说是一个重要标准。当使用者调用一个服务接口来说是一个重要标准。当使用者调用一个WebWeb服务时,被调用的对象可以是服务时,被调用的对象可以是CICSCICS事务,事务,DCOMDCOM或或CORBACORBA对象,但这与使对象,但这与使用者无关,底层实现并不重要。用者无关,底层实现并不重要。n n消息类消息类WebWeb服务通常是松散耦合和文档驱动的,当用户调用消

28、息类服务通常是松散耦合和文档驱动的,当用户调用消息类WebWeb服务时,用户通常会发送一个完整的文档(如订购单),而非一组离服务时,用户通常会发送一个完整的文档(如订购单),而非一组离散的参数。散的参数。2.2.粗粒度服务接口。粗粒度服务接口。n n粗粒度服务提供一项特定的业务功能,而细粒度服务代表了技术组件粗粒度服务提供一项特定的业务功能,而细粒度服务代表了技术组件方法。方法。n n举个例子说明,向计费系统中添加一个客户是典型的粗粒度服务,可举个例子说明,向计费系统中添加一个客户是典型的粗粒度服务,可以使用几个细粒度服务实现同样的功能,如:将客户名加入到计费系以使用几个细粒度服务实现同样的功

29、能,如:将客户名加入到计费系统中,添加详细的客户联系方式,添加计费信息等等。统中,添加详细的客户联系方式,添加计费信息等等。n n采用粗粒度接口的优点在于使用者和服务层之间不必再进行多次往复。采用粗粒度接口的优点在于使用者和服务层之间不必再进行多次往复。n nInternetInternet环境中的环境中的TCP/IPTCP/IP会话已不再占据主导,建立连接的成本也过会话已不再占据主导,建立连接的成本也过高,因此在该环境中进行应用开发时粗粒度服务的接口的优点更为明高,因此在该环境中进行应用开发时粗粒度服务的接口的优点更为明显。显。3.3.可重用的服务。可重用的服务。n n服务的可重用性设计显著

30、降低了成本。为了实现可重用性,服务只工服务的可重用性设计显著降低了成本。为了实现可重用性,服务只工作在特定处理过程的上下文中,而独立于底层实现和客户需求的变更。作在特定处理过程的上下文中,而独立于底层实现和客户需求的变更。n n可重用服务采用通用格式提供重要的业务功能,为开发人员节约了大可重用服务采用通用格式提供重要的业务功能,为开发人员节约了大量的时间。量的时间。4.4.标准化接口。标准化接口。n nXMLXML和和WebWeb服务在电子商务中的广泛应用和深入发展将服务在电子商务中的广泛应用和深入发展将SOASOA推向更高的层推向更高的层面,并大大提升了面,并大大提升了SOASOA的价值,的

31、价值,XMLXML和和WebWeb服务标准化的开放性使企业能服务标准化的开放性使企业能够在所部署的所有技术和应用中采用够在所部署的所有技术和应用中采用SOASOA。n nWebWeb服务使应用功能得以通过标准化接口(服务使应用功能得以通过标准化接口(WSDLWSDL)提供,并基于标准化)提供,并基于标准化传输方式(传输方式(HTTPHTTP和和JMSJMS),采用标准化协议(),采用标准化协议(SOAPSOAP)进行调用。)进行调用。n n例如,开发人员可以采用最适于门户开发的工具轻松创建一个新的门例如,开发人员可以采用最适于门户开发的工具轻松创建一个新的门户应用,并可以重用户应用,并可以重用

32、ERPERP系统和定制化系统和定制化J2EEJ2EE应用中的现有服务,而完全应用中的现有服务,而完全无须了解这些应用的内部工作原理。采用无须了解这些应用的内部工作原理。采用XMLXML,门户开发人员无须了解,门户开发人员无须了解特定的数据表示格式,便能够在这些应用间轻松地交换数据。特定的数据表示格式,便能够在这些应用间轻松地交换数据。5.5.可从企业外部访问。可从企业外部访问。n n基于业务目的交换业务信息,外部用户可以访问以基于业务目的交换业务信息,外部用户可以访问以WebWeb服务方式提供的服务方式提供的企业服务。企业服务。 10.2.1.3 SOA10.2.1.3 SOA的发展史的发展史

33、n nSOASOA的概念最初由的概念最初由GartnerGartner公司提出的,由于当时的技术水平和市场环公司提出的,由于当时的技术水平和市场环境尚不具备真实的实施境尚不具备真实的实施SOASOA的条件,因此当时的条件,因此当时SOASOA并未引起人们的广泛并未引起人们的广泛关注。关注。n nSOASOA在沉寂了一段时间后,伴随着互联网的浪潮,越来越多的企业将业在沉寂了一段时间后,伴随着互联网的浪潮,越来越多的企业将业务转移到互联网的领域,带动了电子商务的蓬勃发展。务转移到互联网的领域,带动了电子商务的蓬勃发展。n n为了能够将公司的业务打包成独立的、具有很强伸缩性的、基于互联为了能够将公司

34、的业务打包成独立的、具有很强伸缩性的、基于互联网的服务,人们提出了网的服务,人们提出了WebWeb服务的概念,这可以说是服务的概念,这可以说是SOASOA的发端。的发端。n n回顾回顾SOASOA的发展历程,从某种角度上说就是应用程序互相之间连通性的的发展历程,从某种角度上说就是应用程序互相之间连通性的发展过程。发展过程。n n接触过接触过IBMIBM产品产品WebSphere MQWebSphere MQ的人都知道消息队列是一个很强大的工具。的人都知道消息队列是一个很强大的工具。通过消息队列可以将用于应用程序交互的接口抽象出来,从而取代应通过消息队列可以将用于应用程序交互的接口抽象出来,从而

35、取代应用程序之间的直接交互和消息传递。并且利用消息队列可以消除异构用程序之间的直接交互和消息传递。并且利用消息队列可以消除异构平台之间的消息传递的困扰,对于其他应用程序是否处于在线状态也平台之间的消息传递的困扰,对于其他应用程序是否处于在线状态也不必考虑,它只关心消息的传递是被保证的并且不会冗余。不必考虑,它只关心消息的传递是被保证的并且不会冗余。n n但是消息队列本身并不能够以正确的形式传递信息,并且不能根据消但是消息队列本身并不能够以正确的形式传递信息,并且不能根据消息内容将信息传递给不同的目标。对于用户仍然需要在应用程序中定息内容将信息传递给不同的目标。对于用户仍然需要在应用程序中定义所

36、有类型的接口。义所有类型的接口。n n为了减少这样的接口代码,消息代理的概念随之产生,它能够进行消为了减少这样的接口代码,消息代理的概念随之产生,它能够进行消息格式的转换与路由,基于消息的内容可以扩充和重新路由,并且它息格式的转换与路由,基于消息的内容可以扩充和重新路由,并且它可以在不同的协议或编程模型间建立沟通。可以在不同的协议或编程模型间建立沟通。n n然而,对于消息代理,仍然会有一些逻辑接口存在于应用程序中,为然而,对于消息代理,仍然会有一些逻辑接口存在于应用程序中,为了将这些关于程序相互交互的逻辑接口完全抽象出来,使之成为完全了将这些关于程序相互交互的逻辑接口完全抽象出来,使之成为完全

37、以商务逻辑为主导的服务,于是人们提出了以商务逻辑为主导的服务,于是人们提出了WebWeb服务的概念,希望通过服务的概念,希望通过将企业对外服务封装为基于同一标准的将企业对外服务封装为基于同一标准的WebWeb服务。服务。n nWebWeb服务标准和规范也随之产生,包括简单对象访问协议服务标准和规范也随之产生,包括简单对象访问协议SOAPSOAP,WebWeb服服务描述语言务描述语言WSDLWSDL,和通用服务发现和集成协议,和通用服务发现和集成协议UDDIUDDI。10.2.2 Web10.2.2 Web服务技术服务技术n n从表面上看,从表面上看,WebWeb服务就是一个应用程序,它向外界暴

38、露出一个能够通服务就是一个应用程序,它向外界暴露出一个能够通过过WebWeb进行调用的进行调用的APIAPI。这就是说,你可以用编程的方法通过。这就是说,你可以用编程的方法通过WebWeb来调用来调用这个应用程序。将调用这个应用程序。将调用WebWeb服务的应用程序称为请求者。服务的应用程序称为请求者。例如,创建一个例如,创建一个WebWeb服务,它的作用是返回当前的天气情况,那么可以建立服务,它的作用是返回当前的天气情况,那么可以建立一个页面,接受邮政编码作为查询字符串然后返回一个由逗号隔开的字符一个页面,接受邮政编码作为查询字符串然后返回一个由逗号隔开的字符串,包含当前的气温和天气情况。要

39、调用这个界面,客户端需要发送一个串,包含当前的气温和天气情况。要调用这个界面,客户端需要发送一个HTTP GETHTTP GET请求,返回天气情况的数据。这个页面就应该算作是请求,返回天气情况的数据。这个页面就应该算作是WebWeb服务了,服务了,因为它基于因为它基于HTTP GETHTTP GET请求,暴露出一个可以通过请求,暴露出一个可以通过WebWeb调用的调用的APIAPI。n n对于对于WebWeb服务更精确的解释是:服务更精确的解释是:WebWeb服务是一种部署在服务是一种部署在WebWeb上的对象,因上的对象,因此具有对象技术承诺的所有优点。此具有对象技术承诺的所有优点。n n同

40、时,同时,WebWeb服务的基石是以服务的基石是以XMLXML为主的,开放的为主的,开放的WebWeb规范技术,因此具有规范技术,因此具有比任何现有的对象技术更好的开放性。比任何现有的对象技术更好的开放性。n nWebWeb服务是建立客户操作的分布式应用程序的新平台。服务是建立客户操作的分布式应用程序的新平台。WebWeb服务平台是服务平台是一套标准,它定义了应用程序如何在一套标准,它定义了应用程序如何在WebWeb上实现互操作性。上实现互操作性。n n可以用任何语言在任何平台写可以用任何语言在任何平台写WebWeb服务,只要可以通过服务,只要可以通过WebWeb服务标准对服务标准对这些服务进

41、行查询和访问。这些服务进行查询和访问。 n nWebWeb服务是描述一些操作的接口,利用标准化的服务是描述一些操作的接口,利用标准化的XMLXML消息传递机制可以消息传递机制可以通过网络访问这些操作。通过网络访问这些操作。n nWebWeb服务利用标准的、规范的服务利用标准的、规范的XMLXML概念来描述,称为概念来描述,称为WebWeb服务的服务描述。服务的服务描述。其中囊括了与服务交互需要的全部细节,包括消息格式(详细描述操其中囊括了与服务交互需要的全部细节,包括消息格式(详细描述操作),传输协议和位置。作),传输协议和位置。n n该接口隐藏了实现服务的细节,允许独立于实现服务基于的硬件或

42、软该接口隐藏了实现服务的细节,允许独立于实现服务基于的硬件或软件平台和编写服务所用的编程语言而使用服务。件平台和编写服务所用的编程语言而使用服务。n n这允许并支持基于这允许并支持基于WebWeb服务的应用程序成为松散耦合,面向组件和跨平服务的应用程序成为松散耦合,面向组件和跨平台技术实现的程序。台技术实现的程序。n nWebWeb服务的体系架构图如下图服务的体系架构图如下图10-210-2所示:所示:n nWebWeb服务有服务有4 4个组成部分,分别是个组成部分,分别是WebWeb服务自身,服务自身,Service ProviderService Provider(服(服务提供方),务提供

43、方),Service RequesterService Requester(服务请求方)和(服务请求方)和Service BrokerService Broker(服务代理机构)。(服务代理机构)。n n通常我们将服务请求方,服务提供方,服务代理机构称为构成通常我们将服务请求方,服务提供方,服务代理机构称为构成WebWeb服务服务体系结构的三大角色。体系结构的三大角色。10.2.3 SOA 10.2.3 SOA 与与WebWeb服务之间的关系服务之间的关系n n在理解在理解SOASOA和和WebWeb服务的关系上,经常容易发生混淆。服务的关系上,经常容易发生混淆。n n根据根据20032003

44、年年4 4月的月的GartnerGartner报道,报道,Yefim v.NatisYefim v.Natis就这个问题解释:就这个问题解释:“ “WebWeb服务是技术规范,而服务是技术规范,而SOASOA是设计原则。特别是是设计原则。特别是WebWeb服务中的服务中的WSDLWSDL,是一个是一个SOASOA配套的定义标准:这是配套的定义标准:这是WebWeb服务和服务和SOASOA的根本联系。的根本联系。” ”n n从本质上说,从本质上说,SOASOA是一种框架模式,而是一种框架模式,而WebWeb服务是利用一组标准实现的服务是利用一组标准实现的服务。服务。WebWeb服务是实现服务是实

45、现SOASOA的方法之一。的方法之一。n n用用WebWeb服务来实现服务来实现SOASOA的好处是可以实现一个中立平台来获得服务,而的好处是可以实现一个中立平台来获得服务,而且随着越来越多的软件商支持越来越多的且随着越来越多的软件商支持越来越多的WebWeb服务规范,会取得更好的服务规范,会取得更好的通用性。通用性。n n尽管我们觉得尽管我们觉得WebWeb服务是实现服务是实现SOASOA的最好方式,但是的最好方式,但是SOASOA并不局限于并不局限于WebWeb服务,其他使用服务,其他使用WSDLWSDL直接实现服务接口并且通过直接实现服务接口并且通过XMLXML消息进行通讯的协消息进行通

46、讯的协议都可以包括在议都可以包括在SOASOA之中。之中。n nCORBACORBA和和IBMIBM的的MQMQ系统通过使用能够处理系统通过使用能够处理WSDLWSDL新特征也可以参与到新特征也可以参与到SOASOA中中来。来。n n如果两个服务需要交换数据,那么它们还会需要使用相同的消息传递如果两个服务需要交换数据,那么它们还会需要使用相同的消息传递协议,但是数据接口允许相同的信息交换。协议,但是数据接口允许相同的信息交换。10.3 CICS10.3 CICS与与WebWeb服务服务10.3.1 CICS10.3.1 CICS简介简介n n说明:由于在第说明:由于在第5 5章中已经较为详细地

47、介绍了章中已经较为详细地介绍了CICSCICS,故本章不再对,故本章不再对CICSCICS本身进行介绍,而只对本身进行介绍,而只对CICSCICS与与WebWeb服务相关的部分进行介绍。服务相关的部分进行介绍。10.3.2 CICS10.3.2 CICS中的中的 WebWeb服务服务n n随着新版本的推出,随着新版本的推出,CICSCICS本身也在不断推出新的功能,在这些新功能本身也在不断推出新的功能,在这些新功能当中,对当中,对WebWeb服务等新技术的支持是很重要的一个方面。服务等新技术的支持是很重要的一个方面。n n从从CICS Transaction Server V2.2CICS T

48、ransaction Server V2.2开始,就有开始,就有SOAP for CICSSOAP for CICS特性开始特性开始了对了对WebWeb服务的支持。通过服务的支持。通过SOAP for CICSSOAP for CICS特性的支持,就可以实现特性的支持,就可以实现CICSCICS中的程序作为中的程序作为WebWeb服务提供者对外提供服务,或者作为服务提供者对外提供服务,或者作为WebWeb服务消服务消费者访问外部费者访问外部WebWeb服务。服务。n n在后来发布的在后来发布的CICS Transaction Server V3.1CICS Transaction Server

49、 V3.1中,中,SOAP for CICSSOAP for CICS已经已经发展成全面的发展成全面的WebWeb服务支持,能够支持服务支持,能够支持HTTP/1.1HTTP/1.1协议,提供协议,提供SSL V3SSL V3级别级别的保密通信,同时还通过更加简单的应用编程,丰富的工具支持和更的保密通信,同时还通过更加简单的应用编程,丰富的工具支持和更高的运行效率,使得高的运行效率,使得CICSCICS能够成为能够成为SOASOA框架下重要的应用服务器。框架下重要的应用服务器。10.3.2.1 10.3.2.1 为什么要使用为什么要使用WebWeb服务服务n nWeb Web 服务是描述一些操

50、作(利用标准化的服务是描述一些操作(利用标准化的 XML XML 消息传递机制可以通过消息传递机制可以通过网络访问这些操作)的接口。网络访问这些操作)的接口。n n该接口隐藏了实现服务的细节,允许独立于实现服务基于的硬件或软该接口隐藏了实现服务的细节,允许独立于实现服务基于的硬件或软件平台和编写服务所用的编程语言使用服务。件平台和编写服务所用的编程语言使用服务。n n这允许并支持基于这允许并支持基于 Web Web 服务的应用程序成为松散耦合、面向组件和跨服务的应用程序成为松散耦合、面向组件和跨平台技术实现。平台技术实现。n n之前所讲到的之前所讲到的CICS Web SupportCICS

51、Web Support和和CTGCTG,所有这些方式都是功能上紧耦,所有这些方式都是功能上紧耦合的,也就是说它们之间的程序调用必须知道彼此程序的合的,也就是说它们之间的程序调用必须知道彼此程序的COMMAREACOMMAREA结结构的细节。构的细节。例如在例如在CWSCWS对于非对于非HTTPHTTP请求的处理,请求的处理,User ProgramUser Program通过通过Business Logic Business Logic InterfaceInterface取到数据,那么取到数据,那么User ProgramUser Program必须知道前端请求传来的数据结构必须知道前端请求

52、传来的数据结构是什么,或者发来请求的程序要知道接收处理请求程序的是什么,或者发来请求的程序要知道接收处理请求程序的COMMAREACOMMAREA接口是接口是什么样的,否则无法对请求和响应数据进行处理。什么样的,否则无法对请求和响应数据进行处理。在在CTGCTG中尽管我们使用了中尽管我们使用了WSIFWSIF,通过,通过WebWeb服务的方式同适配器进行通信,但服务的方式同适配器进行通信,但是适配器同是适配器同CICSCICS以及以及J2EEJ2EE之间仍然是紧耦合的,也就是说之间仍然是紧耦合的,也就是说J2EEJ2EE同同CICSCICS之间之间的通讯完全依赖于适配器。如果要实现更多平台上的

53、应用与的通讯完全依赖于适配器。如果要实现更多平台上的应用与CICSCICS进行通信进行通信的话,比如的话,比如.NET.NET的应用,我们就不得不重新开发适用于的应用,我们就不得不重新开发适用于.NET.NET的适配器。的适配器。此外,对于此外,对于CWSCWS中处理请求的程序必须都是中处理请求的程序必须都是Web-awareWeb-aware程序,用户不得不自程序,用户不得不自己来处理己来处理WebWeb的请求与响应。的请求与响应。n n而对比于而对比于WebWeb服务,通过发布的服务,通过发布的WSDLWSDL文件,应用程序可以自己决定所需文件,应用程序可以自己决定所需的接口,而且服务请求

54、者与服务提供者完全不需要关心对方应用程序的接口,而且服务请求者与服务提供者完全不需要关心对方应用程序的语言和执行环境,对于应用来说是完全透明的,是极度的松耦合架的语言和执行环境,对于应用来说是完全透明的,是极度的松耦合架构。这对于系统的更新、复用和集成带来了极大的方便。构。这对于系统的更新、复用和集成带来了极大的方便。n n在在WebWeb服务模型中,存在有两种角色:服务提供者和服务请求者。服务模型中,存在有两种角色:服务提供者和服务请求者。对于企业的对于企业的CICSCICS应用可以作为服务提供者对外提供一系列的标准化接口,应用可以作为服务提供者对外提供一系列的标准化接口,使得其他异构平台上

55、的应用通过这些标准化的接口对使得其他异构平台上的应用通过这些标准化的接口对CICSCICS应用进行访问,应用进行访问,同时同时CICSCICS应用也可以利用应用也可以利用WebWeb服务以服务请求者的身份调用其他平台上应用服务以服务请求者的身份调用其他平台上应用提供的服务,从而实现不同平台应用之间的集成。提供的服务,从而实现不同平台应用之间的集成。10.3.2.2 CICS10.3.2.2 CICS支持支持WebWeb服务的一系列标准服务的一系列标准n n一个一个CICSCICS应用程序可以通过一系列应用程序可以通过一系列WebWeb服务标准发布成为服务标准发布成为WebWeb服务。服务。1.

56、SOAP 1.1 and 1.21.SOAP 1.1 and 1.22.WS-I Basic Profile 1.12.WS-I Basic Profile 1.1(1 1)WS-CoordinationWS-Coordination(2 2)WS-AtomicTransactionWS-AtomicTransaction(3 3)WS-SecurityWS-Security(4 4)SOAP over HTTP/1.1 and WebSphere MQSOAP over HTTP/1.1 and WebSphere MQn nCICS WebCICS Web新功能增强了新功能增强了HTTPH

57、TTP功能,支持功能,支持HTTP1.1HTTP1.1,并增加了输出,并增加了输出HTTPHTTP功功能。在现有的安全套接字层(能。在现有的安全套接字层(SSLSSL)基础上加强了安全保障,支持)基础上加强了安全保障,支持TLS TLS 1.01.0协议。协议。10.3.2.3 CICS10.3.2.3 CICS在在WebWeb服务中的角色服务中的角色n nCICSCICS中的中的WebWeb服务应用开发,一般有两种主要模式:服务应用开发,一般有两种主要模式:CICSCICS作为作为WebWeb服务服务的提供者和的提供者和CICSCICS作为作为WebWeb服务的消费者,前者是实际应用中更为常

58、见的服务的消费者,前者是实际应用中更为常见的模式。模式。1.CICS1.CICS作为作为WebWeb服务的提供者服务的提供者n nCICSCICS作为作为WebWeb服务的提供者就是把服务的提供者就是把CICSCICS作为作为WebWeb服务器,它首先将收到服务器,它首先将收到来自外部的应用请求,之后对请求进行检查并抽取出目标服务程序相来自外部的应用请求,之后对请求进行检查并抽取出目标服务程序相关的信息,通过这些请求信息传递调用目标服务程序,程序执行结束关的信息,通过这些请求信息传递调用目标服务程序,程序执行结束得到返回值,将返回值以消息的形式传递给服务请求者。得到返回值,将返回值以消息的形式

59、传递给服务请求者。n nCICSCICS作为作为WebWeb服务提供者的示意图如下图服务提供者的示意图如下图10-1110-11所示:所示:图10-11:CICS作为服务提供者的示意图n n当当CICSCICS作为服务提供者的时候,将会做以下的操作作为服务提供者的时候,将会做以下的操作(1 1)得到服务请求者发来的数据;)得到服务请求者发来的数据;(2 2)提取和应用相关的数据;)提取和应用相关的数据;(3 3)调用相应的应用程序,将请求数据通过)调用相应的应用程序,将请求数据通过Communication AreaCommunication Area或者或者ContainerContaine

60、r传给应用程序;传给应用程序;(4 4)得到应用程序的返回数据,构建响应;)得到应用程序的返回数据,构建响应;(5 5)将响应发给服务请求者。)将响应发给服务请求者。n nWebWeb服务可以通过两种方式来访问应用程序。服务可以通过两种方式来访问应用程序。第一种称作为对第一种称作为对Communication AreaCommunication Area的访问。通过的访问。通过wsbindwsbind文件,文件,CICSCICS会将会将请求来的请求来的SOAPSOAP消息(消息(XMLXML格式)和已有的应用程序的数据结构进行数据映射。格式)和已有的应用程序的数据结构进行数据映射。第二种方式是

61、用第二种方式是用ContainerContainer的方式,同样是通过的方式,同样是通过wsbindwsbind文件做数据映射,所文件做数据映射,所不同于不同于Communication AreaCommunication Area方式的是方式的是ContainerContainer突破了突破了32KB32KB数据传输容量的数据传输容量的限制。也就是说,请求端可以发送任意大小的数据,而不必考虑因为数据限制。也就是说,请求端可以发送任意大小的数据,而不必考虑因为数据大小的限制而产生数据截断。大小的限制而产生数据截断。n nCICSCICS提供了一组相应的提供了一组相应的APIAPI来处理来处理C

62、ontainerContainer的传输,用的传输,用EXEC CICS GET EXEC CICS GET CONTAINER(container_name) INTO (data)CONTAINER(container_name) INTO (data)来获得数据,用来获得数据,用EXEC CICS PUT EXEC CICS PUT CONTAINER(container_name) FROM (data)CONTAINER(container_name) FROM (data)来发送数据。来发送数据。n n有三种类型的有三种类型的ContainerContainer:(1 1)Cont

63、rol ContainerControl Container:存放控制信息,它决定了:存放控制信息,它决定了WebWeb请求到来时调用相请求到来时调用相应资源来处理的顺序。应资源来处理的顺序。(2 2)Context ContainerContext Container:存放一些系统用到的上下文环境的信息,例如:存放一些系统用到的上下文环境的信息,例如USERIDUSERID,TRANSACTIONIDTRANSACTIONID,URIURI信息等,这些信息会被信息等,这些信息会被Message HandlerMessage Handler得到得到并作相应的处理。并作相应的处理。(3 3)Us

64、er ContainerUser Container:以上两种:以上两种ContainerContainer都是系统定义的都是系统定义的ContainerContainer,用,用来处理系统得到的数据。来处理系统得到的数据。User ContainerUser Container可以让用户自定义可以让用户自定义ContainerContainer,专,专门存放用户感兴趣的数据,这里门存放用户感兴趣的数据,这里User ContainerUser Container的声明不能以的声明不能以DFHDFH开头。开头。n nCICSCICS作为作为WebWeb服务提供者的图例如下图服务提供者的图例如下

65、图10-1210-12所示:所示:图10-12 CICS作为Web服务提供者n n利用利用Web Service Assistant Web Service Assistant 可以将已有的程序的数据结构转化成可以将已有的程序的数据结构转化成WSDLWSDL文档,并且生成相应的文档,并且生成相应的WSBINDWSBIND文件,此文件是用来做文件,此文件是用来做SOAPSOAP消息和消息和应用程序数据结构的映射。反之也可以从应用程序数据结构的映射。反之也可以从WSDLWSDL文件生成相应程序的数文件生成相应程序的数据结构和据结构和WSBINDWSBIND文件。文件。n n借助借助CICS Web

66、 Service AssistantCICS Web Service Assistant将将CICSCICS应用的应用的CommareaCommarea接口发布成接口发布成WebWeb服务的示意图如下图服务的示意图如下图10-1310-13所示:所示:图10-13:借助CICS Web Service Assistant将CICS应用的Commarea接口发布成Web服务n n以下是从应用程序的数据结构生成以下是从应用程序的数据结构生成WSDLWSDL文件的文件的JCLJCL样例。样例。在程序中可以指名程序的语言类型,目前在程序中可以指名程序的语言类型,目前Web Service Assist

67、antWeb Service Assistant只支持,只支持,C C、C+C+、COBOLCOBOL,PL/IPL/I;还可以指定还可以指定ProgramProgram的名称(就是将此应用发布成的名称(就是将此应用发布成Web Web 服务);服务);请求和响应的数据结构以及它们所在的主机数据集的名称(请求和响应的数据结构以及它们所在的主机数据集的名称(MemberMember的名称);的名称);如果如果WebWeb服务是通过服务是通过ChannelChannel的方式访问的话,需要指定的方式访问的话,需要指定ContainerContainer的名字;的名字;另外还需要指定另外还需要指定U

68、RIURI的路径和的路径和WSBINDWSBIND文件和文件和WSDLWSDL文件的存放位置(文件的存放位置(USSUSS路径)。路径)。n n从应用程序的数据结构生成从应用程序的数据结构生成WSDLWSDL文件的文件的JCLJCL的样例如下所示:的样例如下所示:2.CICS2.CICS作为作为WebWeb服务的请求者服务的请求者n nCICSCICS作为服务请求者,首先利用程序建立请求数据,将请求数据发送作为服务请求者,首先利用程序建立请求数据,将请求数据发送给服务的提供者,调用结束后,服务程序将返回值回传给服务请求者。给服务的提供者,调用结束后,服务程序将返回值回传给服务请求者。CICSC

69、ICS将返回数据进行处理,得到应用程序相关的数据,将控制权限交将返回数据进行处理,得到应用程序相关的数据,将控制权限交给应用程序。给应用程序。n nCICSCICS作为作为WebWeb服务请求者的示意图如下图服务请求者的示意图如下图10-1410-14所示:所示:图10-14:CICS作为服务请求者的示意图 n nCICSCICS作为服务请求者的时候,它将会做如下的操作:作为服务请求者的时候,它将会做如下的操作:(1 1)构建应用程序的请求数据;)构建应用程序的请求数据;(2 2)发送请求给服务提供者;)发送请求给服务提供者;(3 3)得到服务提供者的返回响应;)得到服务提供者的返回响应;(4

70、 4)将得到的响应数据解析之后传给服务请求的应用程序;)将得到的响应数据解析之后传给服务请求的应用程序;(5 5)将控制权交给应用程序;)将控制权交给应用程序;n nCICSCICS提供了相应的提供了相应的WebWeb服务请求的服务请求的API EXEC INVOKE WEB SERVICEAPI EXEC INVOKE WEB SERVICE。其。其语法如下所示:语法如下所示:n n这里应用这里应用ChannelChannel来发送数据,来发送数据,ChannelChannel中包含了一组中包含了一组ContainerContainer以存放以存放请求数据。请求数据。n n而且而且CICSC

71、ICS对此对此APIAPI进行了优化处理,当被请求的服务提供者与请求者在进行了优化处理,当被请求的服务提供者与请求者在同一个同一个CICS RegionCICS Region中的时候,此中的时候,此APIAPI将会被优化为将会被优化为LINK APILINK API来处理,来处理,以此避开了通过网络传输带来的效率损失。以此避开了通过网络传输带来的效率损失。n n服务请求程序调用服务请求程序调用CICS API EXEC CICS INVOKE WEBSERVICECICS API EXEC CICS INVOKE WEBSERVICE,将请求,将请求数据通过数据通过ContainerConta

72、iner传递给传递给ChannelChannel。n nCICSCICS中定义的中定义的WEBSERVICEWEBSERVICE资源会将程序语言的数据结构转化成资源会将程序语言的数据结构转化成SOAPSOAP消消息。息。n nSOAPSOAP消息被传递给消息被传递给PipelinePipeline并且调用定义在并且调用定义在PipelinePipeline配置文件中的配置文件中的Message HandlerMessage Handler程序,程序,Message HandlerMessage Handler程序会将程序会将SOAPSOAP消息通过消息通过HTTPHTTP或者或者WebSphe

73、re MQWebSphere MQ发送给远程的服务提供者。发送给远程的服务提供者。n n服务请求者收到响应的服务请求者收到响应的SOAPSOAP消息的时候,消息的时候,SOAPSOAP消息将被传回给消息将被传回给PipelinePipeline,做相应的数据转化,即将,做相应的数据转化,即将SOAPSOAP消息转化成服务请求者程序消息转化成服务请求者程序语言的数据结构。语言的数据结构。n n当服务提供者的程序与请求者的程序都在当服务提供者的程序与请求者的程序都在CICSCICS中的时候,中的时候,CICS WebCICS Web服服务运行时环境会用务运行时环境会用EXEC CICS LINK

74、APIEXEC CICS LINK API调用服务提供者程序,这会对调用服务提供者程序,这会对请求做本地优化以提高效率。请求做本地优化以提高效率。n nCICSCICS作为服务请求者的图例如下图作为服务请求者的图例如下图10-1510-15所示:所示:n n利用利用Web Services Assistant Web Services Assistant 可以将远程的服务提供者的可以将远程的服务提供者的WSDLWSDL文件生文件生成服务请求者程序所需的数据结构和成服务请求者程序所需的数据结构和WSBINDWSBIND文件。对于文件。对于CICSCICS作为服务作为服务请求者同样需要请求者同样需

75、要PipelinePipeline配置文件和定义配置文件和定义WEBSERVICEWEBSERVICE资源。资源。图10-15 CICS作为服务请求者n n以下是以下是Web Services Assistant Web Services Assistant 用于将用于将WSDLWSDL转化成相应程序语言的数转化成相应程序语言的数据结构的据结构的JCLJCL样例:样例:10.3.2.4 CICS Web10.3.2.4 CICS Web服务具体过程服务具体过程1.CICS1.CICS作为作为WebWeb服务的提供者服务的提供者n n应用部署好后,应用部署好后,CICSCICS提供的提供的Soc

76、ketsSockets监听交易(监听交易(CSOLCSOL)会监听在)会监听在TCPIPSERVICETCPIPSERVICE资源所指定的资源所指定的TCPTCP端口上发送过来的端口上发送过来的HTTPHTTP请求。请求。n nCSOLCSOL接收通过接收通过HTTPHTTP协议传递来的协议传递来的SOAPSOAP数据包,自动启动这个数据包,自动启动这个TCPIPSERVICETCPIPSERVICE资源中所指定的交易进行处理,一般情况下这会是资源中所指定的交易进行处理,一般情况下这会是CICSCICS提供的提供的WebWeb连接处理交易连接处理交易CWXNCWXN。n nCWXNCWXN先从

77、先从HTTPHTTP包中解析出要访问的包中解析出要访问的URIURI,然后搜索,然后搜索URIMAPURIMAP资源,找到处资源,找到处理此理此URIURI的的URIMAPURIMAP定义。定义。n n从这个从这个URIMAPURIMAP定义里,可以找到处理所需要的定义里,可以找到处理所需要的PIPELINEPIPELINE和和WebWeb服务,还服务,还有有TRANSACTIONTRANSACTION属性。属性。n nCWXNCWXN会根据会根据URIMAPURIMAP资源的资源的TRANSACTIONTRANSACTION属性指定的交易去处理管道。通属性指定的交易去处理管道。通常情况下,默

78、认值是常情况下,默认值是CICSCICS提供的一个交易提供的一个交易CPIHCPIH。n nCPIHCPIH开始开始PipelinePipeline过程,通过过程,通过PipelinePipeline的定义找到的定义找到PipelinePipeline配置文件。配置文件。n nCPIHCPIH利用此文件找到相应的利用此文件找到相应的Message HandlerMessage Handler程序处理请求信息。程序处理请求信息。n n通常情况下,通常情况下,Message HandlerMessage Handler程序是典型的程序是典型的CICSCICS提供的,它的作用是提供的,它的作用是将将

79、SOAPSOAP信息中的信息中的BodyBody数据部分剥离出来。数据部分剥离出来。n nCICSCICS利用利用DFHWS-WEBSERVICE ContainerDFHWS-WEBSERVICE Container将请求的服务定义的名称传递将请求的服务定义的名称传递给数据映射程序,数据映射程序利用服务定义去定位主存中给数据映射程序,数据映射程序利用服务定义去定位主存中XMLXML形式的形式的数据,并将它们映射到数据,并将它们映射到COMMAREACOMMAREA或者或者ContainerContainer。n n数据映射程序与目标服务程序相关联,将请求数据以目标程序可读的数据映射程序与目标

80、服务程序相关联,将请求数据以目标程序可读的形式传递给程序调用。形式传递给程序调用。n n调用结束后,目标程序将返回值传递给数据映射程序,使之转换为调用结束后,目标程序将返回值传递给数据映射程序,使之转换为XMLXML数据形式的数据形式的SOAPSOAP信息,以相反的过程通过信息,以相反的过程通过PipelinePipeline处理回传给服务请处理回传给服务请求者。求者。n n根据以上描述,根据以上描述,CICSCICS作为作为WebWeb服务提供者的资源和服务提供者的资源和WebWeb请求的处理流程请求的处理流程如下图如下图10-1610-16所示:所示:图10-16:CICS作为Web服务提

81、供者的资源和Web请求的处理流程 2.CICS2.CICS作为作为WebWeb服务的请求者服务的请求者n n服务请求者的应用程序利用服务请求者的应用程序利用EXEC CICS INVOKE WEB SERVICEEXEC CICS INVOKE WEB SERVICE命令通过命令通过CHANNELCHANNEL接口进行调用,通过接口进行调用,通过WebWeb服务定义的相关资源将请求的数据结服务定义的相关资源将请求的数据结构转变成构转变成SOAPSOAP信息。信息。n n通过通过PIPELINEPIPELINE定义的定义的Message HandlerMessage Handler程序的调用对程

82、序的调用对SOAPSOAP信息进行例如信息进行例如权限信息的验证的处理,之后权限信息的验证的处理,之后SOAPSOAP信息将通过信息将通过HTTPHTTP或或WebSphere MQWebSphere MQ传传送到远端服务程序。送到远端服务程序。n n当调用完毕后返回值将被送回当调用完毕后返回值将被送回PIPELINEPIPELINE处理,并将被翻译之前的数据处理,并将被翻译之前的数据结构传送给服务请求者。结构传送给服务请求者。n n根据以上描述,根据以上描述, CICSCICS作为作为WebWeb服务请求者的资源和服务请求者的资源和WebWeb请求的处理流程请求的处理流程如下图如下图10-1

83、710-17所示:所示:图10-17:CICS作为Web服务请求者的资源和Web请求的处理流程 10.3.2.5 CICS Web10.3.2.5 CICS Web服务涉及到的相关资源服务涉及到的相关资源1. URIMAP1. URIMAPn nURIMAPURIMAP可以定义可以定义CICSCICS中和中和WebWeb相关的三种资源。相关的三种资源。(1 1)得到)得到WebWeb客户端的请求,客户端的请求,CICSCICS作为作为HTTP ServerHTTP Server。n n当当CICSCICS作为作为HTTP ServerHTTP Server时,时,URIMAPURIMAP的定义

84、需指定的定义需指定USAGEUSAGE属性为属性为SERVERSERVER。URIMAPURIMAP通过定义的通过定义的URIURI路径来匹配路径来匹配Web ClientWeb Client端发来的端发来的HTTPHTTP请求。并且请求。并且URIMAPURIMAP也定义了也定义了CICSCICS应该以何种方式对到来的请求做出响应:应该以何种方式对到来的请求做出响应:1 1)使用文档模板做出静态的相应,文档模板的定义在)使用文档模板做出静态的相应,文档模板的定义在CICS Web CICS Web SupportSupport中做出了解释,中做出了解释,URIMAPURIMAP会读出文档模板

85、中的相应数据自动地给会读出文档模板中的相应数据自动地给HTTP ClientHTTP Client做出响应。做出响应。2 2)调用)调用Web-aware ProgramWeb-aware Program的的EXEC CICS WEB APIEXEC CICS WEB API对对HTTPHTTP请求做动态响请求做动态响应。应。3 3)将请求重定向到另一服务器,可以是临时也可以是持久的。)将请求重定向到另一服务器,可以是临时也可以是持久的。n n对比之前所提到的对比之前所提到的CICS Web SupportCICS Web Support中的中的AnalyzerAnalyzer程序,程序,UR

86、IMAPURIMAP在处在处理理HTTPHTTP请求方面完成了与请求方面完成了与AnalyzerAnalyzer几乎相同的功能,当然也可以兼用几乎相同的功能,当然也可以兼用TCPIPSERVICETCPIPSERVICE中的中的AnalyzerAnalyzer来处理相同的来处理相同的HTTPHTTP请求。请求。(2 2)向服务器发送请求,)向服务器发送请求,CICSCICS作为作为HTTP ClientHTTP Client。n n当当CICSCICS作为作为HTTP ClientHTTP Client时,时,URIMAPURIMAP的定义需指定的定义需指定USAGEUSAGE属性为属性为CL

87、IENTCLIENT。n n应用此种应用此种URIMAPURIMAP的定义,用户应用程序作为的定义,用户应用程序作为Web ClientWeb Client可以通过可以通过CICS CICS Web SupportWeb Support向向HTTP ServerHTTP Server发送请求。应用此种发送请求。应用此种URIMAPURIMAP的定义可以无的定义可以无需在需在ClientClient端的程序中指定端的程序中指定URLURL地址。地址。(3 3)WebWeb服务请求。服务请求。n n当处理的请求为当处理的请求为WebWeb服务请求的时候,服务请求的时候,URIMAPURIMAP的定

88、义需指定的定义需指定USAGEUSAGE属性属性为为PIPELINEPIPELINE。n n此种定义的此种定义的URIMAPURIMAP会将会将WebWeb服务请求的服务请求的URIURI路径与路径与PIPELINEPIPELINE或者或者WEBSERVICEWEBSERVICE资源相关联,这些资源指定了如何处理资源相关联,这些资源指定了如何处理WebWeb服务请求的流程。服务请求的流程。n n可以指定运行可以指定运行PIPEPLINEPIPEPLINE的的Alias TransactionAlias Transaction(系统的默认值是(系统的默认值是CPIHCPIH)或者出于安全考虑指定

89、)或者出于安全考虑指定Alias TransactionAlias Transaction的的User IDUser ID。n n需要指出的是,下一章的案例分析中就是采用的本小段的配置,即需要指出的是,下一章的案例分析中就是采用的本小段的配置,即URIMAPURIMAP的定义指定的定义指定USAGEUSAGE属性为属性为PIPELINEPIPELINE。2.PIPELINE2.PIPELINEn nPIPELINEPIPELINE资源的定义主要指明了资源的定义主要指明了Message HandlerMessage Handler的信息,为了接受请的信息,为了接受请求和处理响应。求和处理响应。n

90、 nPIPELINEPIPELINE并不直接地指定并不直接地指定Message HandlerMessage Handler的相关信息。的相关信息。n n在在PIPELINEPIPELINE的定义中,需指定的定义中,需指定PIPELINEPIPELINE配置文件的路径,配置文件配置文件的路径,配置文件(XMLXML语言)中会指定语言)中会指定Message HandlerMessage Handler的配置信息。的配置信息。n nPIPELINEPIPELINE资源的定义样例如下图资源的定义样例如下图10-1810-18所示:所示:图10-18:PIPELINE资源在CICS中的定义n n上图

91、中的参数如下:上图中的参数如下:(1 1)WSIDRWSIDRn nWSDIRWSDIR参数指定了参数指定了WebWeb服务绑定的目录,这个目录下存放了服务绑定的目录,这个目录下存放了wsbindwsbind文件。文件。当运行当运行CEDA install pipelineCEDA install pipeline命令时,命令时,CICSCICS会自动地扫描整个目录并会自动地扫描整个目录并安装安装wsbindwsbind文件。文件。(2 2)SHELFSHELFn nSHELFSHELF指定了指定了WebWeb服务运行时环境的目录。当安装服务运行时环境的目录。当安装PipelinePipeli

92、ne时,时,CICSCICS会会将相关的将相关的WebWeb服务资源拷贝到此目录下。服务资源拷贝到此目录下。n n此目录的访问权限是共享的,也就是说可以多个此目录的访问权限是共享的,也就是说可以多个CICS RegionCICS Region共享此目共享此目录,每个录,每个RegionRegion都有一个自己的运行时目录。都有一个自己的运行时目录。n n当当CICSCICS做做ColdCold或者或者InitialInitial启动的时候,启动的时候,CICSCICS会将会将SHELFSHELF下关于本下关于本RegionRegion所有的子目录删除,重新安装后子目录会重新建立。所有的子目录删

93、除,重新安装后子目录会重新建立。(3 3)ConfigfileConfigfilen nConfigfileConfigfile指定了指定了PipelinePipeline配置文件的配置文件的USSUSS路径。当路径。当CICSCICS处理处理WebWeb服务服务请求时会读出配置文件的相关信息。请求时会读出配置文件的相关信息。PipelinePipeline配置文件配置文件n n当当CICSCICS处理处理WebWeb服务请求时,它会用到一个或者多个服务请求时,它会用到一个或者多个Message HandlerMessage Handler来处理请求。来处理请求。n n用于处理用于处理WebW

94、eb服务请求的服务请求的PipelinePipeline的配置信息存放在一个用的配置信息存放在一个用XMLXML写成的写成的文件中,这个文件就是文件中,这个文件就是PipelinePipeline配置文件。配置文件。n n有两种有两种PipelinePipeline配置文件:一种是服务提供者配置文件:一种是服务提供者PipelinePipeline配置文件;另配置文件;另外一种是服务请求者外一种是服务请求者PipelinePipeline配置文件。配置文件。n n每一种配置文件都有自己相关的每一种配置文件都有自己相关的SchemaSchema定义,和不同的根元素。服务定义,和不同的根元素。服务

95、提供者提供者PipelinePipeline的根元素是的根元素是,服务请求者,服务请求者PipelinePipeline的根元素是的根元素是。n n服务提供者根元素服务提供者根元素的子节点元素有:的子节点元素有:(1 1)必须的)必须的元素,它指明了每一个请求到来时都需要被调元素,它指明了每一个请求到来时都需要被调用的用的Message HandlerMessage Handler,包括终端的,包括终端的Message HandlerMessage Handler。终端。终端Message Message HandlerHandler在在PipelinePipeline中是最后一个中是最后一个

96、HandlerHandler。(2 2)非必须的)非必须的元素,它指明了在运行时被选定的元素,它指明了在运行时被选定的Message Message HandlerHandler,它是基于那些被用于消息传递资源的。例如,对于,它是基于那些被用于消息传递资源的。例如,对于HTTPHTTP的传的传输,可以指定只有当设置在特定端口(定义在输,可以指定只有当设置在特定端口(定义在TCPIPSERVICETCPIPSERVICE中)的请中)的请求到来时再调用求到来时再调用Message HandlerMessage Handler。(3 3)非必须的)非必须的元素,它指明了被元素,它指明了被Termin

97、al HandlerTerminal Handler调用调用的程序,这个程序就是提供服务的目标程序(或者是一个的程序,这个程序就是提供服务的目标程序(或者是一个Wrapper Wrapper ProgramProgram)。)。Message handlerMessage handler可以在运行时动态地指定相应的程序,可以在运行时动态地指定相应的程序,可以用系统提供的可以用系统提供的Container DFHWS-APPHANDLERContainer DFHWS-APPHANDLER来指定。所以此处指来指定。所以此处指定的程序并不一定被调用。这里需要注意的是如果用定的程序并不一定被调用。这

98、里需要注意的是如果用Web Service Web Service AssistantAssistant去部署去部署Web Service ProviderWeb Service Provider,必须指定系统提供的,必须指定系统提供的DFHPITPDFHPITP作为目标程序。作为目标程序。DFHPITPDFHPITP会在运行时自动调用会在运行时自动调用wsbindwsbind文件中指文件中指定的定的User ProgramUser Program。(4 4)非必须的)非必须的元素,它包含了元素,它包含了CICSCICS调用调用的的Message HandlerMessage Handler所

99、需的信息,这些信息是通过系统提供的所需的信息,这些信息是通过系统提供的Container DFH-SERVICEPLISTContainer DFH-SERVICEPLIST来传递的。来传递的。n nService Provider Pipeline Service Provider Pipeline 配置文件的样例如下所示:配置文件的样例如下所示:n n服务请求者根元素服务请求者根元素的子节点元素有:的子节点元素有:(1 1)必须的)必须的元素元素(2 2)非必须的)非必须的元素元素(3 3)非必须的)非必须的元素元素n nService Requester Pipeline Service

100、 Requester Pipeline 配置文件的样例如下所示:配置文件的样例如下所示:3. WEBSERVICE3. WEBSERVICEn nWEBSERVICEWEBSERVICE定义了一个定义了一个WebWeb服务的运行环境,在此环境中服务的运行环境,在此环境中CICSCICS的应用程的应用程序可以作为服务提供者或者请求者,它的定义包含了三个对象:序可以作为服务提供者或者请求者,它的定义包含了三个对象:(1 1)WebWeb服务描述对应服务描述对应 WSDLFILEWSDLFILE; (2 2)WebWeb服务绑定文件对应服务绑定文件对应WSBINDWSBIND;(3 3)Pipeli

101、nePipeline对应对应PIPELINEPIPELINE。n nWEBSERVICEWEBSERVICE资源的定义样例如下图资源的定义样例如下图10-1910-19所示:所示:n n这里需要说明的是对于这里需要说明的是对于ValidationstValidationst的选项指定为的选项指定为NONO的时候,的时候,CICSCICS将将不做不做SOAP MessageSOAP Message的语法检查。在实际的生产环境中,此处的设置通的语法检查。在实际的生产环境中,此处的设置通常为常为NONO,指定为,指定为YESYES会增加不必要的开销。会增加不必要的开销。n n因此不论是服务提供者或者

102、服务请求者都需要保证它们的因此不论是服务提供者或者服务请求者都需要保证它们的SOAP SOAP 消息是消息是符合符合W3CW3C规范的,否则规范的,否则CICSCICS在处理在处理SOAPSOAP消息时会产生异常。消息时会产生异常。图10-19:WEBSERVICE资源在CICS中的定义 4. TCPIPSERVICE4. TCPIPSERVICEn nTCPIPSERVICETCPIPSERVICE定义指名了当服务提供者处理定义指名了当服务提供者处理HTTPHTTP请求时所指定的端口请求时所指定的端口号,注意由于号,注意由于WebWeb服务是基于服务是基于SOAPSOAP的,而的,而SOAP

103、SOAP又是基于又是基于HTTPHTTP的,所以在的,所以在TCPIPSERVICETCPIPSERVICE的定义中必须指名的定义中必须指名ProtocolProtocol为为HTTPHTTP。n n在这里由于有在这里由于有URIMAPURIMAP所以并不需要所以并不需要AnalyzerAnalyzer,可以指定,可以指定URMURM为为NONENONE。n nCICSCICS作为作为Web Service providerWeb Service provider的的TCPIPSERVICETCPIPSERVICE资源的定义样例如下资源的定义样例如下图图10-2010-20所示:所示:图10-

104、20:CICS作为Web Service provider的TCPIPSERVICE资源的定义 5. CICS5. CICS作为服务请求者和提供者所需相关资源的清单列表。作为服务请求者和提供者所需相关资源的清单列表。n n该清单列表如下表该清单列表如下表10-110-1所示:所示: n n这里需要说明的是当使用这里需要说明的是当使用Web Service AssistantWeb Service Assistant部署部署CICS WebCICS Web服务相服务相关应用程序时,当安装关应用程序时,当安装PIPELINEPIPELINE资源时,资源时,WEBSERVICEWEBSERVICE和和URIMAPURIMAP资源会资源会自动被安装,自动被安装,CICSCICS会扫描会扫描WSDIRWSDIR下的下的wsbindwsbind文件自动生成相应的资源。文件自动生成相应的资源。表10-1 CICS作为服务请求者和提供者所需相关资源的清单列表

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号