点击这里下载 - 同济大学软件学院
Download
Report
Transcript 点击这里下载 - 同济大学软件学院
大型主机应用上的开放系统和中间件
2011年度教育部-IBM精品课程
同济大学软件学院
唐剑锋
[email protected]
第11章 应用CICS Web Service实现CICS样例应用程序
Web服务封装的案例分析
11.1 案例背景介绍
在开始本练习之前,我们必须特别指出的是:本样例应用程序基于的
CICS版本必须是3.1或以上,否则将得不到预想的结果。另外指出的是,
本章练习基于的z/OS操作系统版本是1.8,这跟第9章的练习基于的
z/OS操作系统的版本不同,第9章的练习基于的操作系统版本是z/OS
1.5。
该实验演示如何设立CICS Web服务环境,并让初学者学习CICS提供的
Web服务功能,以及为什么CICS包装了Web服务。
我们都知道,任何时间、任何地点有如此多的人从因特网上得到各种
有用的信息,于是浏览器变得越来越普及和漂亮。传统的3270终端便
显得不够友好。
然而,如此多的交易以3270终端的方式运行,以至于我们无法永久放
弃它。
CICS作为最重要的交易中间件决定提供将功能包装成Web服务的特征。
幸运的是,程序员无需更改在CICS Region里安装的任何代码,只需要
将Web服务环境建立起来,就可以完成将CICS程序功能包装成Web服务
发布的任务。
CICS作为Web服务提供者的内部示意图见下图11-1所示:
图11-1 CICS作为Web服务提供者的内部示意图
如上图所示,一个Pipeline中的消息处理程序(通常是一个CICS提供
的SOAP消息处理程序)去除了从进入请求来的SOAP信封,并将SOAP
Body部分传递给数据映射功能。
使用Web服务绑定文件来将SOAP Body的内容匹配到应用程序的数据结
构。
如果SOAP消息的确认功能是激活的,那么SOAP Body会由Web服务描述
来得到确认。如果有离开的响应,过程刚好相反。
最重要的消息转换机制是COMMAREA。COMMAREA使得浏览器和CICS应用
程序各自运行并相互通讯。
在下面的实验中,我们通过使用CICS Web服务助理工具将一个现有的
CICS COBOL样例应用程序暴露为Web服务,产生必要的组件,并定义新
的CICS资源,最后在RAD(Rational Application Developer)和WAS
(WebSphere Application Server)中测试其基本功能。
下面对样例应用程序进行介绍。
CICS目录样例应用程序是一个设计用来展示将CICS应用程序连接到外
部客户端和服务器的最佳实践的COBOL应用程序。该样例由一个简单的
销售目录和订单处理应用程序组成,终端用户可以完成如下功能:
1.列出一个目录里的条目
2.对目录里的单个条目进行查询
3.从目录里订购条目
目录由一个VSAM数据集来实现。
基础应用程序有一个3270的用户接口,但是模块化的结构有着在组件
间良好定义的接口,这使其可以增加更多的组件。
特别的,应用程序有Web服务的支持,它被设计用来展示如何将一个现
有应用扩展进Web服务环境。
(不含Web端的)样例应用程序的体系结构图如下图11-2所示:
基础应用程序的组件是:
1.一个BMS显示管理程序(DFH0XGUI),该程序支持3270终端或仿真器,
并且与主目录管理程序交互。
2. 一个目录管理程序(DFH0XCMN),该程序是样例程序的核心,和多
个后端组件交互。
3.后端组件,包括:
– 一个数据处理程序,该程序提供了目录管理程序和数据存储之间的接口。
基础应用程序提供了这个程序的两个版本。它们是在一个VSAM数据集中存
储数据的VSAM数据处理程序(DFH0XVDS),和一个不存储数据,而仅仅将
有效的响应返回给调用者的哑数据处理程序(DFH0XSDS)。配置选项使得
我们可以在这两个程序间进行选择。
– 一个分发管理程序,该程序提供了一个将一份订单分发给一个客户的接口。
同样的,配置选项使得我们可以在这个程序的两个版本间进行选择。
DFHX0WOD是一个调用远端订单分发端点的Web服务请求者,而DFHX0SOD是一
个仅仅将有效的响应返回给调用者的哑程序。有两个相似的订单分发端点:
DFH0XODE是一个CICS服务提供者程序;ExampleAppDispatchOrder.ear是一
个可以被部署在WebSphere Application Server或相似环境的企业档案文
件。
– 一个哑存货管理程序(DFH0XSSM),该程序向其调用者返回有效的响应,
但并不采取其他行动。
(含Web端的)样例应用程序体系结构图11-3如下所示:
在这个配置中,可以通过两个不同的客户端访问应用程序:
– 一个连接到WebSphere Application Server 的Web浏览器客户端,
ExampleAppClient.ear在WAS上被部署。
– CICS Web服务客户端DFH0XECC。该客户端使用同样的BMS显示管理
程序(DFH0XGUI)作为基础应用程序。
另一个(含Web端的)样例应用程序体系结构图如下图11-4所示:
在这个配置中,Web浏览器客
户端连接到WebSphere
Application Server,
ExampleAppWrapper.ear在
WAS上被部署。在CICS中,三
个包装应用程序(查询目录,
查询单个条目和下订单的功
能)被作为服务提供者应用
程序部署。它们反过来连接
到基础应用程序。
11.2 实现主机端样例应用程序
1.创建和定义VSAM数据集。首先定位JCL来创建VSAM数据集。
在本章基于的大型机系统环境下,在CICS安装完成后,JCL放在
CICSTS.V3R1.CICS.SDFHINST库中,其中成员DFH$ECNF包含了产生配置
数据集的JCL,成员DFH$ECAT包含了产生目录数据集的JCL。
2.更改JCL和访问方法服务命令。
(1)提供一个有效的JOB卡片。
(2)提供一个在访问方法服务命令中合适的数据集名字的高级限定符。
在本章的样例中,JCL使用的高级限定符是TE05。
3.以下JCL创建了目录数据集并将(部分)数据装入数据集中:
//TE05A JOB (ASYSTEM,AUSER),'ME',CLASS=A,NOTIFY=TE05
//DEFKSDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//AMSDUMP DD SYSOUT=A
//SYSIN DD *
DELETE TE05.EXMPLAPP.ECAT05 PURGE CLUSTER
SET MAXCC=0
DEFINE CLUSTER (NAME(TE05.EXMPLAPP.ECAT05)TRK(1 1) KEYS(4 0) RECORDSIZE(80,80) SHAREOPTIONS(2 3) INDEXED ) DATA (NAME(TE05.EXMPLAPP.ECAT05.DATA) ) INDEX (NAME(TE05.EXMPLAPP.ECAT05.INDEX) )
//*
//CPYKSDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//AMSDUMP DD SYSOUT=A
//INFILE
DD *
0010Ball Pens Black 24pk
010002.900135000
0020Ball Pens Blue 24pk
010002.900006050
0030Ball Pens Red 24pk
010002.900106000
//OUTFILE DD DSN=TE05.EXMPLAPP.ECAT05,DISP=SHR
//SYSIN DD *
REPRO INFILE(INFILE) OUTFILE(OUTFILE)
//
以上JCL从CICSTS.V3R1.CICS.SDFHINST(DFH$ECAT)中拷贝而来,对源数据集稍作
改动,其中TE05是样例程序中的UserID,ECAT05中的05是UserID的后两位。
4.以下JCL创建了配置数据集并将数据装入数据集中:
//TE05A JOB (ASYSTEM,AUSER),'ME',CLASS=A,NOTIFY=TE05
//DEFKSDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//AMSDUMP DD SYSOUT=A
//SYSIN DD *
DELETE TE05.EXMPLAPP.ECONF05 PURGE CLUSTER
SET MAXCC=0
DEFINE CLUSTER (NAME(TE05.EXMPLAPP.ECONF05)TRK(1 1) KEYS(9 0) RECORDSIZE(350,350) SHAREOPTIONS(2 3) INDEXED ) DATA (NAME(TE05.EXMPLAPP.ECONF05.DATA) ) INDEX (NAME(TE05.EXMPLAPP.ECONF05.INDEX) )
//*
//CPYKSDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//AMSDUMP DD SYSOUT=A
//INFILE
DD *
EXMP-CONF VSAM N DFH0XCMN DFH0XSDS DFH0XVDS DFH0XSOD DFH0XWOD DFH0XSSM
OUTBNDURL http://myserver:80/exampleApp/dispatchOrder
VSAM-NAME EXMPCAT
WS-SERVER myserver:99999
//OUTFILE DD DSN=TE05.EXMPLAPP.ECONF05,DISP=SHR
//SYSIN DD *
REPRO INFILE(INFILE) OUTFILE(OUTFILE)
//
以上JCL从CICSTS.V3R1.CICS.SDFHINST(DFH$ECNF)中拷贝而来,对源数据集稍作改
动,其中TE05是样例程序中的UserID,ECONF05中的05是UserID的后两位。
5.分别提交前面两个JCL创建VSAM数据集并将数据装入数据集中,
MAXCC<=4表示提交成功。
自此,VSAM数据集创建起来并被导入数据。
6.使用CEDA交易为目录数据集创建一个FILE定义:
在CICS Region里输入以下命令:
CEDA DEF FILE(EXMPCAT) G(CICSWS05)。
其中组CICSWS05事先创建起来,CICSWS05的05是 UserID的后两位。
运行以上命令后,还需要进到EXMPCAT中进行如下设置(部分),粗体的
参数为必填参数:
此处需要将DSNAme设置成刚
刚建好的VSAM数据集:
TE05.EXMPLAPP.ECAT05。还
需要将OPERATIONS 中的Add,
Browse,DELete,READ和
UPDATE选项都设置成Yes,以
便使程序对VSAM数据集有读
写权限。
7.使用CEDA交易为配置文件创建一个FILE定义:
在CICS Region里输入以下命令:
CEDA DEF FILE(EXMPCONF) G(CICSWS05)。
其中CICSWS05的05是 UserID的后两位。
运行以上命令后,还需要进到EXMPCONF中进行如下设置(部分),粗体
的参数为必填参数:
上述需要将DSNAme设置成
刚刚建好的VSAM数据集:
TE05.EXMPLAPP.ECONF05。
还需要将OPERATIONS 中
的Add,Browse,DELete,
READ和UPDATE选项都设置
成Yes,以便使程序对
VSAM数据集有读写权限。
8.使用CEDA交易来安装刚刚定义好的两个FILE资源。
在CICS Region里运行以下命令:
CEDA Install G(CICSWS05)
如果安装出现故障,在CICS Region里运行以下命令:
CEMT I FILE(EXMPCAT) 和CEMT I FILE(EXMPCONF)
CICS Region将出现如下反馈:
在Clo处输入Ope,如果前面的设置一切正确,CICS Region将反馈
NORMAL,表示该VSAM数据集已经处于打开状态。
自此,在CICS Region里定义和安装两个VSAM数据集的工作完成。
9.下面的工作是定义3270接口。我们提供了3270用户接口来运行并定
制化样例应用。
用户接口包括三个映像集:DFH0XS1,DFH0XS2和DFH0XS3。
用户接口还包括两个交易:EGUI和ECFG,其中EGUI对应的程序是
DFH0XGUI,ECFG 对应的程序是DFH0XCFG。
另外还有其他7个程序,它们分别是:DFH0XCMN,DFH0XODE,DFH0XSDS,
DFH0XSOD,DFH0XSSM,DFH0XVDS和DFH0XWOD,这样一共有9个程序。
3个映像集和9个程序的简要介绍见表11-1所示:
各程序的源代码均在
CICSTS.V3R1.CICS.SDFHSAMP
中,在CICS安装好后就已经存
在,不需要用户自己编写。由
于各个程序的代码很长,限于
篇幅,在此省略。另外对源代
码进行CICS编译,COBOL编译、
链接的JCL由于同第6章6.2中
COBOL+CICS样例程序开发中
CICS翻译、COBOL编译、链接
COBOL+CICS样例程序的JCL基
本相同,故在此略。
下面使用CEDA交易来创建PROGRAM和TRANSACTION。
在CICS Region里运行如下命令:
CEDA DEF PROG(DFH0XGUI) G(CICSWS05)
CEDA DEF PROG(DFH0XCFG) G(CICSWS05)
CEDA DEF TRANS(EGUI) G(CICSWS05) PROG(DFH0XGUI)
CEDA DEF TRANS(ECFG) G(CICSWS05) PROG(DFH0XCFG)
创建其他7个PROGRAM命令如下:
CEDA DEF PROG(DFH0XCMN) G(CICSWS05)
CEDA DEF PROG(DFH0XODE) G(CICSWS05)
CEDA DEF PROG(DFH0XSDS) G(CICSWS05)
CEDA DEF PROG(DFH0XSOD) G(CICSWS05)
CEDA DEF PROG(DFH0XSSM) G(CICSWS05)
CEDA DEF PROG(DFH0XVDS) G(CICSWS05)
CEDA DEF PROG(DFH0XWOD) G(CICSWS05)
10.完成安装过程
为了完成安装过程,安装包含资源定义的RDO组。在CICS终端输入如下
命令:CEDA I G(CICSWS05)。应用程序现在准备好可以使用了。
注:如果CICS重启,我们需要重新安装所有FILE,MAPSET,PROGRAM,
TRANSACTION和其他资源,这显然不太方便。
为了节省时间,我们可以在CICS Region里运行如下命令将组CICSWS05
加入到我们选择的一个LIST CICSWS中:CEDA ADD G (CICSWS05)
L(CICSWS)。
然后更改CICS启动JCL文件(在我们的系统里,该文件为:
CENTER.CICS(DFH$AOR1)),将原先的GRPLIST=(LISTAOR1,EYU310L0),
变成:GRPLIST=(LISTAOR1,EYU310L0,CICSWS),。其他地方都不需要变
动,这样每次重启CICS后,CICS会自动安装CICSWS所在的组CICSWS05
里的所有资源。
自此,我们完成了定义和安装样例应用程序的工作。
11.在3270 屏幕中运行样例程序。可以使用BMS接口来调用基本应用程
序。
(1)从CICS终端输入交易EGUI,如果一切正常,样例应用程序将显示
如下菜单:
菜单上的选项使得我们可以:列出目录里面的条目,订购一个条目,
或者退出应用程序。
(2)输入1并回车以选择List Items选项。应用程序显示目录里的条
目列表(部分):
(3)在Order列输入/,然后回车来订购一个条目。应用程序将显示订
购条目的详细信息。在Order Quantity,User Name和Charge Dept中
分别输入信息来订购该条目(粗体为输入的信息):
(4)其中Order Quantity域中输入想要订购的条目数量;User Name
域中输入1-8个字符串,样例应用程序并不检查在这里输入的值;
Charge Dept域中输入1-8个字符串,样例应用程序也不检查在这里输
入的值。
(5)按回车提交订购申请并返回到主菜单。
(6)选择Exit选项终止应用程序。
自此,样例应用程序已经运行成功。
11.3 建立并安装CICS Web Service支持环境
下面将建立并安装Web支持环境。
针对样例应用程序的Web服务支持需要层次型文件系统(HFS)中的一
个shelf目录和一个pickup目录。
Shelf目录用来存放和WEBSERVICE资源相关的Web服务绑定文件。每一
个WEBSERVICE资源再反过来和PIPELINE相关联。Shelf目录由PIPELINE
资源来管理,用户不应直接修改其内容。多个PIPELINE可以使用相同
的shelf目录,CICS为每一个PIPELINE在shelf目录下面保证一个唯一
的目录结构。
Pickup目录用来存放和PIPELINE资源相关的Web服务绑定文件。当一个
PIPELINE被安装时,或者作为到PERFORM PIPELINE SCAN命令的响应,
绑定文件里的信息用来动态创建和PIPELINE 相关的WEBSERVICE和
URIMAP的定义。
缺省情况下,使用/var/cicsts作为shelf目录。EXPIPE01和EXPIPE02的
样本PIPELINE定义从CICS提供的资源定义组DFH$EXWS拷贝而来,它们作
为pickup目录分别是:
/usr/lpp/cicsts/cicsts31/samples/webservices/wsbind/provider/和
/usr/lpp/cicsts/cicsts31/samples/webservices/wsbind/requester/。
一个pipeline在安装时会在一个XML pipeline配置文件中读取。系统提
供如下的缺省目录和配置文件:
对EXPIPE01:
/usr/lpp/cicsts/cicsts31/samples/pipelines/basicsoap11proider.x
ml
对EXPIPE02:
/usr/lpp/cicsts/cicsts31/samples/pipelines/basicsoap11requester
.xml
注意:为了将各目录与TSO UserID TE05相对应,我们在下文中将修改上
述shelf目录、pickup目录和PIPELINE设置。
用来处理Web服务请求的pipeline的配置信息指定在XML文档中,称为
pipeline配置文件。该文件的名字在PIPELINE定义的CONFIGFILE属性中
指定。
下面详细论述建立并安装Web支持环境的各个步骤。
1.对查询目录的程序,我们用DFHLS2WS 生成相应的WSBIND文件、WSDL
文件及LOG文件,具体步骤如下:
(1)CICS安装好以后,称为DFH0XCP3的COMMAREA文件就自动安装在
CICSTS.V3R1.CICS.SDFHSAMP中,将DFH0XCP3拷贝到事先建好的自己的
数据集TE05.EXMPLAPP.CPY中。步骤略。
(2)在OMVS环境下新建如下目录结构,这些目录在后续的练习步骤中
都要用到(创建目录结构的方法略):
/u/te05/wsapp/
/u/te05/wsapp/wsbind/
/u/te05/wsapp/wsdl/
/u/te05/wsapp/wsdir/
/u/te05/wsapp/shelf/
/u/te05/pipeline/
/u/te05/logs/
(3)运行如下JCL产生重要的文件:
DFHLS2WS:该实用工具程序将高级语言数据结构作为输入,从而产生
一个包含消息描述的Web服务描述文件,和在那些从数据结构来的消息
中使用的数据类型。该实用工具产生一个CICS运行时使用的Web服务绑
定文件来在应用程序的数据结构和SOAP消息之间做映射。
DFHLS2WS是一个可供其它程序调用的Procedure,从上述JCL中我们可以看出该
Procedure来自CICSTS.V3R1.CICS.SDFHINST,在CICS安装好以后就自动创建起来。
DFHLS2WS的代码在此省略。
该JCL中的主要参数的解释如下:
PDSLIB=//TE05.EXMPLAPP.CPY
--包含REQMEM和RESPMEM的PDS
REQMEM=DFH0XCP3
--请求方的COMMAREA数据结构
RESPMEM=DFH0XCP3
--响应方的COMMAREA数据结构
LANG=COBOL
--编程语言
PGMNAME=DFH0XCMN
--使用COMMAREA的程序
URI=exampleApp/inquireCatalog
--用来调用Web服务的URI
PGMINT=COMMAREA
--在客户端和服务端传递消息的方式
WSBIND=/u/te05/wsapp/wsbind/inquireCatalog.wsbind
--由DFHLS2WS生成的wsbind文件
WSDL=/u/te05/wsapp/wsdl/inquireCatalog.wsdl
--由DFHLS2WS生成的wsdl文件
LOGFILE=/u/te05/logs/inquireCatalog.log
--由DFHLS2WS生成的log文件
由于下文创建PIPELINE资源时需要用到该JCL生成的WSBIND文件,
且PIPELINE定义中存放WSBIND文件的参数Wsdir指定了另一个目
录/u/te05/wsapp/wsdir/,所以这里需要将生成的
/u/te05/wsapp/wsbind/inquireCatalog.wsbind手工拷贝到
/u/te05/wsapp/wsdir/中。可在主机的OMVS环境中完成该操作。
具体操作略。
2.对查询单个条目的程序,我们同样用DFHLS2WS 生成相应的WSBIND文
件、WSDL文件及LOG文件,具体步骤如下:
(1)CICS安装好以后,称为DFH0XCP4的COMMAREA文件就自动安装在
CICSTS.V3R1.CICS.SDFHSAMP中,将DFH0XCP4拷贝到事先建好的自己的
数据集TE05.EXMPLAPP.CPY中。步骤略。
(2)运行如下JCL产生重要的文件:
对于DFHLS2WS的解释及该JCL中主要参数的解释同上面查询目录的程序
的例子类似,故略。
由于下文创建PIPELINE资源时需要用到该JCL生成的WSBIND文件,
且PIPELINE定义中存放WSBIND文件的参数Wsdir指定了另一个目
录/u/te05/wsapp/wsdir/,所以这里需要将生成的
/u/te05/wsapp/wsbind/inquireSingle.wsbind手工拷贝到
/u/te05/wsapp/wsdir/中。可在主机的OMVS环境中完成该操作。
具体操作略。
3.对下订单的程序,我们同样用DFHLS2WS 生成相应的WSBIND文件、
WSDL文件及LOG文件,具体步骤如下:
(1)CICS安装好以后,称为DFH0XCP5的COMMAREA文件就自动安装在
CICSTS.V3R1.CICS.SDFHSAMP中,将DFH0XCP5拷贝到事先建好的自己的
数据集TE05.EXMPLAPP.CPY中。步骤略。
(2)运行如下JCL产生重要的文件:
对于DFHLS2WS的解释及该JCL中主要参数的解释同上面查询目录的程序
的例子类似,故略。
由于下文创建PIPELINE资源时需要用到该JCL生成的WSBIND文件,
且PIPELINE定义中存放WSBIND文件的参数Wsdir指定了另一个目
录/u/te05/wsapp/wsdir/,所以这里需要将生成的
/u/te05/wsapp/wsbind/placeOrder.wsbind手工拷贝到
/u/te05/wsapp/wsdir/中。可在主机的OMVS环境中完成该操作。
具体操作略。
4.创建PIPELINE定义。
完整的Pipeline定义包括一个PIPELINE资源和一个Pipeline配置文件。
该文件包含了消息处理程序的详细信息,这些消息处理程序处理通过
Pipeline的Web请求和响应。
样例应用程序使用CICS提供的SOAP 1.1处理程序来处理进入和离开请
求的SOAP信封。CICS提供可以在服务提供者和服务请求者中使用的样
本Pipeline配置文件。
超过一个WEBSERVICE可以共享一个单个的PIPELINE,因此我们只需要
为样例应用程序的进入请求定义一个Pipeline。然而,我们还必须为
离开请求定义第二个Pipeline,因为单个Pipeline不能被同时配置成
提供者和请求者Pipeline。
(1)使用CEDA交易来为服务提供者创建一个PIPELINE定义。
1)在CICS Region里输入:CEDA DEF PIPE(EXPIPE01) G(CICSWS05)。
或者也可以从CICS提供的资源组DFH$EXWS中拷贝PIPELINE定义。
2)输入如下额外的属性:
注意HFS条目是大小写敏感的,粗体的参数为必填参数。
3)文件basicsoap11provider.xml将被自动创建起来,内容如下:
(2)使用CEDA交易来为服务请求者创建一个PIPELINE定义。
1)在CICS Region里输入:CEDA DEF PIPE(EXPIPE02) G(CICSWS05)。
或者也可以从CICS提供的资源组DFH$EXWS中拷贝PIPELINE定义。
2)输入如下额外的属性:
注意HFS条目是大小写敏感的,粗体的参数为必填参数。
3)文件basicsoap11requester.xml将被自动创建起来,内容如下:
5.定义TCPIPSERVICE。
当客户端通过HTTP连接到Web服务,我们必须定义一个TCPIPSERVICE来
接收进入的HTTP流量。
使用CEDA交易来创建一个TCPIPSERVICE定义来处理进入的HTTP请求。
(1)在CICS Region里输入:CEDA DEF TCPIPSERVICE(EXMPPORT)
G(CICSWS05)。或者也可以从CICS提供的资源组DFH$EXWS中拷贝
TCPIPSERVICE定义。
(2)输入如下额外的属性(部分):
注:粗体的参数为必填参数。
6.动态安装WEBSERVICE和URIMAP资源。
暴露为Web服务的每一个功能需要一个WEBSERVICE资源来在SOAP BODY
的进入的XML和程序的COMMAREA接口之间做映射,URIMAP资源将进入的
请求路由到正确的PIPELINE和WEBSERVICE。
虽然我们可以使用RDO来定义和安装WEBSERVICE和URIMAP资源,我们也
可以当安装一个PIPELINE资源时由CICS来动态创建上述两个资源。
在CICS Region里运行以下命令来安装PIPELINE资源:
CEDA INSTALL PIPELINE(EXPIPE01) G(CICSWS05)
CEDA INSTALL PIPELINE(EXPIPE02) G(CICSWS05)
当我们安装每一个PIPELINE资源时,CICS扫描在PIPELINE的WSDIR属性
(pickup目录)中指定的目录。
对于在目录中的每一个Web服务绑定文件,也就是对每一个有.wsbind
后缀的文件,CICS都会安装一个WEBSERVICE和URIMAP资源,如果这两
个资源不存在的话。
如果在绑定文件里的信息比现有的资源更新的话,那么后者会被替代。
当PIPELINE后来被禁用并丢弃时,所有相关的WEBSERVICE和URIMAP资
源也会被丢弃。
如果已经安装了PIPELINE,使用PERFORM PIPELINE SCAN命令来初始化
PIPELINE的Pickup目录的扫描。
当安装了PIPELINEs资源后,以下的主要的WEBSERVICEs和相关的
URIMAPs将会安装在系统中:
– inquireCatalog
– inquireSingle
– placeOrder
WEBSERVICEs的名字从Web服务绑定文件的名字而来;URIMAPs的名字自
动产生。
可以用CEMT I WEBS和CEMT I URIMAP命令来查看WEBSERVICEs和
URIMAPs资源。
CEMT I WEBS将显示以下与本样例程序相关的WEBSERVICE资源:
点中WEBSERVICE inquireSingle并按回车可看以下详细信息:
其他两个WEBSERVICE资源的信息与此类似,故略。
CEMT I URIMAP将显示以下与本样例程序相关的URIMAP资源:
点中URIMAP $056260并按回车可看以下详细信息:
其他两个URIMAP资源的信息与此类似,故略。
7.(可选的)用RDO创建WEBSERVICE资源。
作为使用PIPELINE扫描机制来安装WEBSERVICE资源的另一个替代方案,
我们可以使用在线资源定义(RDO)来创建和安装WEBSERVICE资源。
注意:如果使用RDO来定义WEBSERVICE 和URIMAP资源,必须确保Web服
务绑定文件不在PIPELINE的Pickup目录里。
(1)使用CEDA交易来为样例应用程序的查询目录功能创建一个
WEBSERVICE定义。
1)在CICS Region里输入:CEDA DEF WEBSERVICE(EXINQCWS)
G(CICSWS05)
2)输入如下额外属性(部分):
(2)为样例应用程序的每一个如下功能重复前面的步骤。如下表11-2
所示:
8.(可选的)使用RDO创建URIMAP资源。
作为使用PIPELINE扫描机制来安装URIMAP资源的另一个替代方案,我
们可以使用在线资源定义(RDO)来创建和安装URIMAP资源。
注意:如果使用RDO来定义WEBSERVICE 和URIMAP资源,必须确保Web服
务绑定文件不在PIPELINE的Pickup目录里。
(1)使用CEDA交易来为样例应用程序的查询目录功能创建一个URIMAP
定义。
1)在CICS Region里输入:CEDA DEF URIMAP(INQCURI) G(CICSWS05)
2)输入如下额外属性(部分):
(2)为样例应用程序的每一个余下的功能重复前面的步骤。为
URIMAPs使用如下名字,如下表11-3所示:
为每一个URIMAP指定以下不同的属性,如下表11-4所示:
其它属性都与INQCURI的设置相同。
9.完成安装过程。
为了完成安装过程,安装包含所有资源定义的RDO组。在CICS
Region里输入如下命令:CEDA I G(CICSWS05)。现在便可以使
用我们的应用程序了。
11.4 在RAD中测试CICS Web Service
1.从主机端下载并修改WSDL文件。
可以使用FTP将主机服务器端的WSDL文件(以前面用DFHLS2WS程序生成的
inquireSingle.wsdl为例)拷贝到本地(Windows平台),步骤如下:
(1)选择Windows“开始”菜单,点击“运行”,输入cmd,进入DOS环境。
(2)输入:d:,进入D盘根目录。
(3)在d盘创建子目录wsdl,并在DOS环境输入:cd wsdl,进入wsdl子
目录。
(4)ftp 10.60.37.129。
(5)输入用户名和密码。
(6)输入:cd /u/te05/wsapp/wsdl/,进入到inquireSingle.wsdl所在
的目录。
(7)输入:get inquireSingle.wsdl,将该wsdl文件下载到本地目录。
(8)修改inquireSingle.wsdl,找到以下条目:
修改成:
其中my-server代表服务器主机系统的机器名或IP地址,my-port代表在
CICS Region中定义TCPIPSERVICE时的端口号。
自此,WSDL文件下载到了客户端并作了相应修改。
2.在RAD上测试刚刚下载的WSDL文件。
(1)打开 RAD。
(2)新建一个静态Web项目CICSWebService。步骤略。
(3)右击CICSWebService,选择“导入”,选择“文件系统”,在
“从目录”中选择wsdl所在的目录,选中inquireSingle.wsdl,点击
“完成”导入该wsdl文件。如下图11-5所示:
图11-5 在RAD中导入WSDL文件
(4)右击导入的wsdl文件,选择“Web Service”,再选择“使用Web
Service资源管理器测试”。如下图11-6所示:
图11-6 在RAD中测试WSDL文件
(5)在左边栏目找到DFH0XCMNOperation并点击之。
(6)在右边栏目里填入一些值,这些栏目和
TE05.EXMPLAPP.CPY(DFH0XCP4)中的数据结构项相一致,且有些必填有
些可选。如果我们不填任何项直接点击“执行”按钮,系统会提示我
们哪些项必填哪些项可选。如下图11-7和图11-8所示:
图11-7 在栏目里填入相应值(1)
图11-8 在栏目里填入相应值(2)
(7)填写完毕各必填项后点击“执行”按钮,结果如下图所示。从中
可以看到必填项里需要输入的值。
程序最后的运行结果如下图11-9所示:
图11-9 程序最后的运行结果
自此,在RAD上测试WSDL文件成功。
11.5 在WAS中测试运行CICS Web Service程序
1.下面用RAD开发客户端应用程序。
该客户端应用程序包括五个JSP和一个Servlet。
其中Welcome.jsp显示系统首页页面,Configuration.jsp显示系统配
置的页面,InquireSingle.jsp显示查询单个条目的页面,
InquireCatalog.jsp显示查询目录的页面,PlaceOrder.jsp显示下订
单的页面,CatalogController.java是后面三个JSP共同的响应
Servlet。
JSP Welcome.jsp
的代码如右所示(1):
JSP Welcome.jsp
的代码如右所示(2):
JSP InquireSingle.jsp
的代码如右所示(1):
JSP InquireSingle.jsp
的代码如右所示(2):
JSP InquireSingle.jsp
的代码如右所示(3):
其他三个JSP:Configuration.jsp不是本练习要表达的核心内容,
InquireCatalog.jsp和PlaceOrder.jsp由于代码和InquireSingle.jsp
相似,由于篇幅限制,故都在此略去。
Servlet
CatalogController.java
的代码如右所示(1):
Servlet
CatalogController.java
的代码如右所示(2):
Servlet
CatalogController.java
的代码如右所示(3):
Servlet
CatalogController.java
的代码如右所示(4):
Servlet
CatalogController.java
的代码如右所示(5):
Servlet
CatalogController.java
的代码如右所示(6):
Servlet
CatalogController.java
的代码如右所示(7):
Servlet
CatalogController.java
的代码如右所示(8):
Servlet
CatalogController.java
的代码如右所示(9):
Servlet
CatalogController.java
的代码如右所示(10):
Servlet
CatalogController.java
的代码如右所示(11):
Servlet
CatalogController.java
的代码如右所示(12):
Servlet
CatalogController.java
的代码如右所示(13):
2.上述所有代码开发好以后,用RAD打包生成ExampleAppClient.ear文
件,步骤略。
自此,客户端应用程序开发完毕并打包。
3.下面在WAS上安装客户端应用程序。
(1)WebSphere Application Server for Windows的管理控制台界面
如下图11-10所示:
图11-10 WAS管理控制台界面
(2)输入URL:http://localhost:9080/PlantsByWebSphere/ 来运行
其中一个样本程序,如下图11-11所示:
图11-11 在WAS中运行样本程序
(3)将打包好的客户端程序ExampleAppClient.ear安装到WAS上并启
动。
安装步骤同第9章中9.3第18-23步基本类似,唯一不同的是第20步中步
骤3: 将资源引用映射至资源不需要。具体步骤此处略。
自此,客户端程序安装完毕并启动。
4.下面在Web端配置客户端程序
在使用Web客户端之前,我们必须对其进行配置,来调用CICS系统中的
合适的端点。
(1)在Web浏览器输入:
http://localhost:9080/ExampleAppClientWeb/(如果端口号9080被
占用,可使用端口号9081),样例应用程序将显示如下图11-12所示的
页:
图11-12 样例应用程序首页
(2)点击CONFIGURE按钮调出如下图11-13所示的配置页:
图11-13 样例应用程序配置页(1)
(3)为Web服务输入新的端点。有三个端点需要配置:
– Inquire catalog
– Inquire item
– Place order
在各自的“New”条目中,将“localhost”替换成运行CICS的
主机系统名或IP地址,该例中为10.60.37.129;并且将端口
号9080(或9081)替换成配置TCPIPSERVICE时的端口号,该
例中为12305。如下图11-14所示:
图11-14 样例应用程序配置页(2)
(4)点击SUBMIT按钮。图略。
自此,Web客户端程序配置完毕。
5.下面将运行含Web服务的应用程序。可以从Web浏览器中调用样例应
用程序。
(1)在Web浏览器中输入以下网址:
http://localhost:9080/ExampleAppClientWeb/,样例应用程序将显
示的页如图11-12所示,故略。
(2)列出目录里面的条目、选择单个条目并订购
1)点击LIST ITEMS按钮,样例应用程序将显示如下图11-15所示的页:
图11-15 点击LIST ITEMS后样例应用程序的显示页
2)在Start List From Item Number右边输入条目号,点击SUBMIT按
钮,样例应用程序将显示如下图11-16所示的页。该页包含了目录里的
条目列表,以我们输入的条目号起始:
图11-16 目录里的条目列表显示页
3)选择其中一个条目(比如选第一个),点击SUBMIT按钮,样例应用
程序将显示如下图11-17所示的订购页:
图11-17 样例应用程序的订购页
4)为了完成一个订购,输入以下信息:
– 在Quantity域指定想要订购的条目数量。
– 在User Name域输入1-8个字符串。样例应用程序不会检查在此输入的值。
– 在Department Name域输入1-8个字符串。样例应用程序不会检查在此输入
的值。
点击SUBMIT按钮。样例应用程序显示如下图11-18所示的页来确认订购
已经完成:
图11-18 样例应用程序的订购成功页
(3)列出单个条目的内容
1)点击INQUIRE按钮,样例应用程序将显示如下图11-19所示的页:
图11-19 点击INQUIRE后样例应用程序的显示页
2)在Item Reference Number右边输入条目号,点击SUBMIT按钮,样
例应用程序将显示如下图11-20所示的页:
图11-20 提交某条目后的显示页
3)点击SUBMIT按钮,样例应用程序将显示如下图11-21所示的订购页:
图11-21 样例应用程序的订购页(2)
4)后续的操作与前面第5步(2)中4)后面的操作相同,故略。
(4)订购单个条目
1)点击ORDER ITEM按钮,样例应用程序将显示如下图11-22所示的页:
图11-22 点击ORDER ITEM后样例应用程序的显示页
2)后续的操作与前面第5步(2)中4)后面的操作相同,故略。
自此,采用CICS Web Service实现CICS程序的Web化的练习步骤全部完
成了。