
第七章TUXEDO的客户端编程融金教育.doc
49页第七章:TUXEDO的客户端编程7.1 Tuxedo的客户端简介:tuxedo有两种客户端: 本地客户端和远程客户端NATIVE CLIENT(本地客户端): 是指与TUXEDO服务器在同一台机器上,不用通过网络就可以访问到TUXEDO服务器的客户端 WORSTATION CLIENT(本地客户端):是指要通过网络才可以访问到TUXEDO服务器的客户端下图为TUXEDO应用系统的客户端访问TUXEDO服务器上的服务的过程图阐明:WS(Workstation Extension Product) 用于指TUXEDO产品的客户端部分WSC Workstation ClientWSL(Workstation Listener)TUXEDO系统自带的一种SERVER,它侦听一种指定的端口,WSC最初与该SERVER建立连接WSH(Workstation Handler)TUXEDO系统自带的一种SERVER,由它解决WSC与TUXEDO SERVER之间的通讯Bulletin Board(公示板)TUXEDO把系统的配备保存在一种共享内存中,该共享内存称为公示板(BB)BBLTUXEDO的管理进程,重要对公示板等进行管理Workstation Client与TUXEDO SERVER建立连接的过程为:1. WSC 调用tpinit()或tpchkauth()2. WSC采用在WSNADDR中指定的IP地址与服务端的WSL建立连接3. WSL为该WSC指定一种WSH,并把该WSH的侦听端口返回给WSC4. WSC采用返回的端口与指定的WSH建立连接,并与WSL断开连接,这之后WSC与TUXEDO SERVER之间的通讯通过WSH进行解决,与WSL无关。
5. tpinit()或tpchkauth()调用返回本地客户端与远程客户端的重要区别1. 本地客户端只能用C语言或COBAL语言编写,远程客户端可以用几乎所有的编程语言编写2. 在远程客户端所在的机器上要安装TUXEDO的客户端软件,并且在设立相应的环境变量;在本地客户端上不用3. 用buildclient编译远程客户端程序时要加 –W,编译本地客户端则不用与远程客户端有关的配备:1. 在MACHINES中要配备MAXWSCLIENTS,即最多可以有多少个远程客户端同步连接到该服务器上2. 在SERVERS中要配备SERVER:WSLWSL SRVGRP="GROUP1" SRVID=1116 CLOPT="-A -- -n //192.168.120.113:8888 -m 2 -M 5 -x 6"CLOPT中可带的参数为:CLOPT="[ -A ] [servopts_options] -- -n netaddr [-d device] [-w WSHname][-t timeout_factor][-T Client_timeout] [-m minh][-M maxh][-x mpx_factor ] [-p minwshport][-P maxwshport] [-I init_timeout][-c compression_threshold] [-k compression_threshold] [-z bits][-Z bits][-H external_netaddr] [-N network_timeout][-K{client|handler|both|none}]"参数阐明:-n netaddr: WSL的侦听端口,远程客户端通过该端口与服务器建立连接-m minh : 至少启动多少个WSH进程-M maxh: 最多启动多少个WSH进程,默认值为MAXWSCLIENTS/m-x mpx_factor:每个WSH进程可以同步与多少个远程客户端建立连接-c compression_threshold如果在远程客户端与服务器之间传送的数据包大小(单位为字节)超过-c指定的参数,就自动进行数据压缩,-T Client_timeout: 指定一种远程客户端的空闲时间,如果该远程客户端在client_timeout这样长的时间内没有做任何调用,WSH将断开与该远程客户端的连接。
单位为分钟,如果没有指点该参数,那么WSH永远不会自动断开远程客户端的连接-t timeout_factor: 指定远程客户端与WSH建立连接的时间,如果在-t指定的时间内还没有建立连接,那么连接将失败如果没有采用安全认证方式默觉得3*SCANUNIT秒,如果采用安全认证方式默觉得6*SCANUNIT秒, [-p minwshport][-P maxwshport]:指定WSH可以使用的端口范畴:如果远程客户端要跨越防火墙才干访问该TUXEDO应用系统,在WSL中要指定该参数,指定WSH可以使用的端口范畴,并让防火墙容许访问这些端口如果不指定,TUXEDO会根据系统端口的使用状况进行分派,而分派的端口防火墙不容许通过,导致CLIENT无法调用TUXEDO SERVER如下面的设立指定WSH可用的端口范畴为17010 – 17030WSL SRVGRP=GROUP1 SRVID=1 CLOPT="-A -- -n //133.101.6.26:17009 -m 10 -M 10 -x 10 -p 17010 -P 17030"在远程客户端的机器上要设立的环境变量TUXDIR (必需):TUXEDO客户端在该机器上的安装目录WSNADDR(必需):远程客户端通过该IP地址与服务器建立连接,它的值为-n参数的值,如在上面的配备中为:SET WSNADDR= //192.168.120.113:8888WSTYPE(可选): 该客户端的类型,如果与服务器的类型同样,那么在它们之间进行数据传送时不用进行编码解码工作。
其她不常用的环境变量可参照TUXEDO的联机文档客户端的编程模式:在3层构造中,CLIENT是属与表达层,表达层重要解决与顾客交互,它的功能可概括为:1、提供应用的顾客交互接口,即重要通过图形化的顾客界面,取的顾客的输入数据2、与TUXEDO 应用服务器建立连接3、调用TUXEDO应用服务器上的服务(SERVICE),把客户端的输入参数放入输出缓冲区4、TUXEDO应用服务器调用相应的SERVICE解决客户端的祈求,把解决成果通过客户端的输入缓冲区返回给客户端 客户端与服务端之间的通讯方式有如下几种:1、同步调用:2、异步调用3、会话方式:4、可靠消息队列5、广播方式6、发布/订阅在下一章我们再具体简介7.2 CLIENT的ATMI简介客户端通过调用TUXEDO提供的编程API(ATMI)来编写程序,下面简介某些客户端重要的ATMI与连接的建立与断开有关的ATMI为了与TUXEDO SERVER建立连接,TUXEDO CLIENT要调用TPCHKAUTH()检查该TUXEDO SERVER所采用的安全方式,并根据得到的值做相应的解决,然后调用TPINIT()建立与TUXEDO的连接,在TUXEOD SERVER的成果返回之后,调用TPTERM()断开与TUXEDO SERVER的连接.int tpchkauth()描述: 检查该TUXEDO SERVER所采用的安全方式参数:无返回值: TPNOAUTH:不需要认证 TPSYSAUTH:需要口令认证 TPAPPSUTH:需要口令认证,并且还需要应用级的认证或授权. -1:调用失败, 错误号保存在全局变量tperrno中。
int tpinit(TPINIT *tpinfo)描述: 与TUXEDO SERVER建立连接参数:TPINFO返回值: 失败返回-1, 错误号保存在全局变量tperrno中TPINIT构造体在atmi.h中的定义如下struct tpinfo_t { char usrname[MAXTIDENT+2]; /* client user name */ char cltname[MAXTIDENT+2]; /* application client name */ char passwd[MAXTIDENT+2]; /* application password */ char grpname[MAXTIDENT+2]; /* client group name */ long flags; /* initialization flags */ long datalen; /* length of app specific data */ long data; /* placeholder for app data */};typedef struct tpinfo_t TPINIT;阐明:username,cltname,passwd,grpname,data,datalen用于安全认证中flags:用于定义以何种方式告知该客户端一种UNSOLICTED MESSAGE的到来.它的值可觉得:TPU-SIGTPU-DIPTPU-IGNTPSA-FASTPATHTPSA-PROTECTEDint tpterm()描述: 断开与TUXEDO SERVER建立连接参数:无返回值: 失败返回-1, 错误号保存在全局变量tperrno中。
与祈求TUXEDO SERVER 有关的ATMIint tpcall(char *svc, char *idata, long ilen, char **odata, long *olen, long flags)描述:客户端同步调用服务端的名为svc的SERVICE,参数: *svc:SERVICE的名称char *idata: 输入缓冲区的地址,客户端传给服务端的参数放在该缓冲区内long ilen: 输入缓冲区的长度char **odata 输出缓冲区的地址,服务端传给客户端的成果放在该缓冲区内long *olen:输出缓冲区的长度 long flags: 调用标志,由如下几种:TPNOTRAN如果调用svc的客户端目前在TRANSACTION方式下,那么svc不参与目前的TRANSACTIONTPNOCHANGE如果服务端返回的缓冲区类型与客户端定义的缓冲区(odata)类型不一致,默认状况下,odata会转换成与服务端返回的缓冲区类型一致的类型,如果设立了该FLAG,那么当浮现这种状况时,不进行缓冲区类型转换,并且会保错TPNOBLOCK默认状况下,如果客户端有阻塞条件存在(如CLIENT的TCP/IP中的缓冲区满,磁盘I/O忙等),那么客户端会阻塞在那里,直到阻塞消除或超时出错。
如果设立了TPNOBLOCK,当客户端有阻塞条件存在时,TPCALL()会立即返回并报错. 注意TPNOBLOCK只对发送祈求时起作用,如果在。
