TUXEDO的客户端编程.docx
- 文档编号:2896747
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:44
- 大小:283.61KB
TUXEDO的客户端编程.docx
《TUXEDO的客户端编程.docx》由会员分享,可在线阅读,更多相关《TUXEDO的客户端编程.docx(44页珍藏版)》请在冰豆网上搜索。
TUXEDO的客户端编程
第七章:
TUXEDO的客户端编程
7.1Tuxedo的客户端简介:
tuxedo有两种客户端:
本地客户端和远程客户端。
NATIVECLIENT(本地客户端):
是指与TUXEDO服务器在同一台机器上,不用通过网络
就可以访问到TUXEDO服务器的客户端。
WORSTATIONCLIENT(本地客户端):
是指要通过网络才可以访问到TUXEDO服务器的客户端。
下图为TUXEDO应用系统的客户端访问TUXEDO服务器上的服务的过程图。
说明:
WS(WorkstationExtensionProduct)
用于指TUXEDO产品的客户端部分
WSC
WorkstationClient
WSL(WorkstationListener)
TUXEDO系统自带的一个SERVER,它侦听一个指定的端口,WSC最初与该SERVER
建立连接
WSH(WorkstationHandler)
TUXEDO系统自带的一个SERVER,由它处理WSC与TUXEDOSERVER之间的通讯。
BulletinBoard(公告板)
TUXEDO把系统的配置保存在一个共享内存中,该共享内存称为公告板(BB)
BBL
TUXEDO的经管进程,主要对公告板等进行经管
WorkstationClient与TUXEDOSERVER建立连接的过程为:
1.WSC调用tpinit()或tpchkauth()
2.WSC采用在WSNADDR中指定的IP地址与服务端的WSL建立连接
3.WSL为该WSC指定一个WSH,并把该WSH的侦听端口返回给WSC
4.WSC采用返回的端口与指定的WSH建立连接,并与WSL断开连接,这之后WSC与TUXEDOSERVER之间的通讯通过WSH进行处理,与WSL无关。
5.tpinit()或tpchkauth()调用返回。
本地客户端与远程客户端的主要区别
1.本地客户端只能用C语言或COBAL语言编写,远程客户端可以用几乎所有的编程语言编
写。
2.在远程客户端所在的机器上要安装TUXEDO的客户端软件,并且在设置相应的环境变量;
在本地客户端上不用
3.用buildclient编译远程客户端程序时要加–W,编译本地客户端则不用
与远程客户端有关的配置:
1.在MACHINES中要配置MAXWSCLIENTS,即最多可以有多少个远程客户端同时连接
到该服务器上。
2.在SERVERS中要配置SERVER:
WSL
WSLSRVGRP="GROUP1"SRVID=1116
CLOPT="-A---n//192.168.120.113:
8888-m2-M5-x6"
CLOPT中可带的参数为:
CLOPT="[-A][servopts_options]---nnetaddr[-ddevice]
[-wWSHname][-ttimeout_factor][-TClient_timeout]
[-mminh][-Mmaxh][-xmpx_factor]
[-pminwshport][-Pmaxwshport]
[-Iinit_timeout][-ccompression_threshold]
[-kcompression_threshold]
[-zbits][-Zbits][-Hexternal_netaddr]
[-Nnetwork_timeout][-K{client|handler|both|none}]"
参数说明:
-nnetaddr:
WSL的侦听端口,远程客户端通过该端口与服务器建立连接
-mminh:
最少启动多少个WSH进程
-Mmaxh:
最多启动多少个WSH进程,默认值为MAXWSCLIENTS/m
-xmpx_factor:
每个WSH进程可以同时与多少个远程客户端建立连接
-ccompression_threshold
如果在远程客户端与服务器之间传送的数据包大小(单位为字节)超过-c指定的参
数,就自动进行数据压缩,
-TClient_timeout:
指定一个远程客户端的空闲时间,如果该远程客户端在client_timeout这么长的时间内没有做任何调用,WSH将断开与该远程客户端的连接。
单位为分钟,如果没有指点该参数,那么WSH永远不会自动断开远程客户端的连接
-ttimeout_factor:
指定远程客户端与WSH建立连接的时间,如果在-t指定的时间内还没有建立连接,那么连接将失败。
如果没有采用安全认证方式默认为3*SCANUNIT秒,。
如果采用安全认证方式默认为6*SCANUNIT秒,
[-pminwshport][-Pmaxwshport]:
指定WSH可以使用的端口范围:
如果远程客户端要跨越防火墙才能访问该TUXEDO应用系统,在WSL中要指定该参数,指定WSH可以使用的端口范围,并让防火墙允许访问这些端口。
如果不指定,TUXEDO会根据系统端口的使用情况进行分配,而分配的端口防火墙不允许通过,造成CLIENT无法调用TUXEDOSERVER。
如下面的设置指定WSH可用的端口范围为17010–17030。
WSLSRVGRP=GROUP1SRVID=1
CLOPT="-A---n//133.101.6.26:
17009-m10-M10-x10-p17010-P17030"
在远程客户端的机器上要设置的环境变量
TUXDIR(必需):
TUXEDO客户端在该机器上的安装目录
WSNADDR(必需):
远程客户端通过该IP地址与服务器建立连接,它的值为-n参数的值,
如在上面的配置中为:
SETWSNADDR=//192.168.120.113:
8888
WSTYPE(可选):
该客户端的类型,如果与服务器的类型一样,那么在它们之间进行数据
传送时不用进行编码解码工作。
其他不常用的环境变量可参考TUXEDO的联机文档。
客户端的编程模式:
在3层结构中,CLIENT是属与表示层,表示层主要处理与用户交互,它的功能可概括为:
1、提供应用的用户交互接口,即主要通过图形化的用户界面,取的用户的输入数据
2、与TUXEDO应用服务器建立连接
3、调用TUXEDO应用服务器上的服务(SERVICE),把客户端的输入参数放入输出缓冲区。
4、TUXEDO应用服务器调用相应的SERVICE处理客户端的请求,把处理结果通过客户端的输
入缓冲区返回给客户端。
客户端与服务端之间的通讯方式有以下几种:
1、同步调用:
2、异步调用
3、会话方式:
4、可靠消息队列
5、广播方式
6、发布/订阅
在下一章我们再具体介绍
7.2CLIENT的ATMI介绍
客户端通过调用TUXEDO提供的编程API(ATMI)来编写程序,下面介绍一些客户端主要的ATMI
与连接的建立与断开有关的ATMI
为了与TUXEDOSERVER建立连接,TUXEDOCLIENT要调用TPCHKAUTH()检查该TUXEDOSERVER所采用的安全方式,并根据得到的值做相应的处理,然后调用TPINIT()建立与TUXEDO的连接,在TUXEODSERVER的结果返回
之后,调用TPTERM()断开与TUXEDOSERVER的连接.
inttpchkauth()
描述:
检查该TUXEDOSERVER所采用的安全方式
参数:
无
返回值:
TPNOAUTH:
不需要认证
TPSYSAUTH:
需要口令认证
TPAPPSUTH:
需要口令认证,并且还需要应用级的认证或授权.
-1:
调用失败,错误号保存在全局变量tperrno中。
inttpinit(TPINIT*tpinfo)
描述:
与TUXEDOSERVER建立连接
参数:
TPINFO
返回值:
失败返回-1,错误号保存在全局变量tperrno中。
TPINIT结构体在atmi.h中的定义如下
structtpinfo_t{
charusrname[MAXTIDENT+2]。
/*clientusername*/
charcltname[MAXTIDENT+2]。
/*applicationclientname*/
charpasswd[MAXTIDENT+2]。
/*applicationpassword*/
chargrpname[MAXTIDENT+2]。
/*clientgroupname*/
longflags。
/*initializationflags*/
longdatalen。
/*lengthofappspecificdata*/
longdata。
/*placeholderforappdata*/
}。
typedefstructtpinfo_tTPINIT。
说明:
username,cltname,passwd,grpname,data,datalen用于安全认证中
flags:
用于定义以何种方式通知该客户端一个UNSOLICTEDMESSAGE的到来.它的值可以为:
TPU-SIG
TPU-DIP
TPU-IGN
TPSA-FASTPATH
TPSA-PROTECTED
inttpterm()
描述:
断开与TUXEDOSERVER建立连接
参数:
无
返回值:
失败返回-1,错误号保存在全局变量tperrno中。
与请求TUXEDOSERVER有关的ATMI
inttpcall(char*svc,char*idata,longilen,char**odata,long*olen,longflags)
描述:
客户端同步调用服务端的名为svc的SERVICE,
参数:
*svc:
SERVICE的名称
char*idata:
输入缓冲区的地址,客户端传给服务端的参数放在该缓冲区内
longilen:
输入缓冲区的长度
char**odata输出缓冲区的地址,服务端传给客户端的结果放在该缓冲区内
long*olen:
输出缓冲区的长度
longflags:
调用标志,由以下几个:
TPNOTRAN
如果调用svc的客户端当前在TRANSACTION方式下,那么svc不参与当前的TRANSACTION。
TPNOCHANGE
如果服务端返回的缓冲区类型与客户端定义的缓冲区(odata)类型不一致,默认情况下,odata会转换成与服务端返回的缓冲区类型一致的类型,如果设置了该FLAG,那么当出现这种情况时,不进行缓冲区类型转换,并且会保错。
TPNOBLOCK
默认情况下,如果客户端有阻塞条件存在(如CLIENT的TCP/IP中的缓冲区满,磁盘I/O忙等),那么客户端会阻塞在那里,直到阻塞消除或超时出错。
如果设置了TPNOBLOCK,当客户端有阻塞条件存在时,TPCALL()会立刻返回并报错.注意TPNOBLOCK只对发送请求时起作用,如果在接收服务端返回的结果时有阻塞条件存在,客户端会在那里等待,直到阻塞消除或超时出错
TPNOTIME
如果客户端有阻塞条件存在,客户端会一直阻塞在那里,即使到了超时时间也不返回,但如果该客户端是在TRANSACTION模式下,当到了
事务的超时时间,还是会报超时错误并返回。
TPSIGRSTRT
如果在进行系统调用时,被信号中断,该系统调用会重新进行。
调用成功返回0,失败返回-1,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TUXEDO 客户端 编程