WS(Workstation Extension Product):Tuxedo产品的客户端部分。
WSC(Workstation Client):指远程客户端。
WSL(Workstation Listener):Tuxedo系统自带的一个Server;它侦听一个指定的端口,WSC最初与该Server建立连接。
WSH(Workstation Handler):Tuxedo系统自带的一个Server,由它处理WSC与Tuxedo Server之间的通信。
Bulletin Borad(BB,公告板):Tuxedo把系统的配置保存在一个共享内存中,该共享内存称为公告板。
BBL:Tuxedo的管理进程,主要对公告板等进行管理。
在远程客户端的机器上环境变量的设置
TUXDIR(必须):Tuxedo客户端在该机器上的安装目录。
WSNADDR(必须):远程客户端通过该IP地址与服务器建立连接,它的值为“-n” 参数的值。eg:SET WSNADDR=//192.168.120.113:8888.
WSTYPE(可选):该客户端的类型,如果与服务器的类型一样,那么在它们之间进行数据传送时不用进行编码和解码工作。
与连接的建立和断开有关的ATMI
int tpchkauth()
描述:检查该Tuxedo Server所采用的安全方式。
参数:无。
返回值:
TPNOAUTH-------不需要认证;
TPSYSAUTH--------需要口令认证;
TPAPPSUTH--------需要口令认证,并且还需要应用级的认证或授权;
-1------调用失败,错误号保存在全局变量tperrno中。
int tpinit(TPINIT *tpinfo)
描述:与Tuxedo服务器端建立连接。
参数: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 fata
long data; placeholder for app data
}
Typedef struct tpinfo_t TPINIT;
说明:username , cltname, passwd, grpname, data和datalen用于安全认证中。
flags:用于定义以何种方式通知该客户端一个UNSOLICTED MESSAGE的到来。它的值可以为:TPU-SIG, TPU-DIP,TPU-IGN,TPSA-FASTPATH和TPSA-PROTECTED.
int tpterm()
描述:断开与Tuxedo服务器端的连接。
参数:无。
返回值:失败返回“-1”,错误号保存在全局变量tperrno中。
与请求Tuxedo服务器端有关的ATMI
int tpcall(char *svc,char *idata,long ilen,char **odata,long *olen, long flags)
描述:客户端同步调用服务端的名为svc的Service。
参数:
*svc------Service的名称
char *data------输入缓冲区的地址,客户端传给服务端的参数放在该缓冲区内。
long ilen------输入缓冲区的长度
char **odata------输出缓冲区的地址,服务端传给客户端的结果放在该缓冲区内。
long *olen-------输出缓冲区的长度
long flags------调用标志,有以下几个:
TPNOTRAN :如果调用svc的客户端当前在事务模式下,那么svc 不参与当前的TRANSACTION。
TPNOCHANGE:如果服务端返回的缓冲区类型与客户端定义的缓冲区类型不一致,默认情况下,odata会转换成与服务端返回的缓冲区类型一致的类型。如果设置了该flag,那么当出现这种情况时,不进行缓冲区类型转换,并且会报错。
TPNOBLOCK:默认情况下,如果客户端有阻塞条件存在(如客户端的TCP/IP中的缓冲区满,磁盘I/O忙等),那么客户端会阻塞在那里,直到阻塞消除或超时出错。如果设置了TPNOBLOCK,当客户端有阻塞条件存在时,tpcall()会立刻返回并报错。
TPNOTIME:如果客户端有阻塞条件存在,客户端会一直阻塞在那里,即使超时不返回,但如果该客户端是在事务模式下,当事务超时,还是会报超时错误并返回。
TPSIGRSTRT:如果在进行系统调用时,信号中断,该系统调用会重新进行。调用成功返回0,失败返回-1,错误号保存在全局变量tperrno中。
int tpacall( char *svc, char *data, long len, long flags)
描述:客户端异步调用服务端名为svc的Service,不等服务端返回结果,程序即可继续往下走,在某个地方可调用tpgetply()取得的服务端的返回。
参数:char *svc, char *data, long len 参数的含义与tpcall()中的一样。flags 可设置为TPNOTRAN, TPNOREPLY, TPSIGRSTRT, TPNOTRAN 和TPNOBLOCKTPNOTIME, 其中TPSIGRSTRT的含义与tpcall()中的一样。TPNOREPLY为调用tpacall()的客户端不想接受SERVER端的应答。如果设置了TPNOREPLY,服务器端不会给该客户端发送应答。
返回值:失败返回-1,成功返回一个Handler。可作为tpgetrply的参数,用于获取服务端的返回结果。
int tpgetrply(int *cd, char **data, long *len, long flags)
描述:取出服务端对tpacall()的应答。
参数:cd tpacall()返回的HANDLER。
char **data 返回缓冲区的地址,服务端传给客户端的结果放在该缓冲区内。
long *len返回缓冲区的长度。
flags 可以是TPNOBLOCK, TPNOTIME, TPSIGRSTRT, TPGETANY(不管cd的值,从服务器的应答队列中取第一个可用的消息)和TPNOCHANGE。
返回值:失败返回-1,错误号保存在全局变量tperrno中。
int tpcancel(int handle)
描述:如果当前的程序不处于事务模式中,取消对tpacall()的应答。如果处于事务模式中,则不能取消对tpacall()的应答,该调用会失败。
参数:tpacall()返回的Hander。
返回值:失败返回-1,错误号保存在全局变量tperrno中。
int tpgprio()
描述:返回最近发送(tpcall(),tpacall())或接收(tpgetrply())的一个消息的优先级。
参数:无。
返回值:1~100的消息的优先级��值越高,优先级越高,失败返回-1,错误号保存在全局变量tperrno中。
int tpsprio(int prio,long flags)
描述:设置下一个要发送的消息的优先级。
参数:0-prio为相对值,设置下一个要发送的消息的优先级为现在的优先级,加上prio。TPABSOLUTE:prio为绝对值,设置下一个要发送的消息的优先级为prio。
返回值:失败返回-1,错误号保存在全局变量tperrno中。
与请求错误处理有关的ATMI
char *tpstrerror(int tperrno)
描述:返回错误号为tperrno的错误描述。
参数:tperrno是在atmi.h中定义的全局变量,用于标识错误号,类似于C中的errno。
返回值:失败返回NULL,成功返回错误号为tperrno的错误描述。
int tperrnodetail(long flags)
描述:返回当前进程或线程最近调用ATMI的出错的更详细描述。
参数:设为0.
返回值:如果没有错误返回0,有错误返回错误描述号。
char *tpstrerrordetail(int err,long flags)
描述:返回错误描述号err的详细描述信息。
参数:err是tperrordetail()的返回值。flags设为0.
返回值:失败返回NULL,成功返回详细描述信息。
采用C语言编写的客户端程序,用buildclient进行编译,格式如下:
buildclient [-C] [-v] [{-w -r rmname}] [-o outfile] [-f firetfiles] [-l lastfiles]
参数说明:
-C 编译用COBOL写的客户端
-v 输出详细的编译信息
-w 编译成远程客户端。如果不带该参数,将编译成本地客户端。
-o 编译生成的可执行文件名
-f 要编译的C文件名
-l 指定要编译生成该可执行文件名要连接的其它库文件。如果有多个库文件要连接,之间用空格隔开。
-r 指定该客户端要连接的RM