《tuxedo编程》由会员分享,可在线阅读,更多相关《tuxedo编程(70页珍藏版)》请在金锄头文库上搜索。
1、The E-Commerce Transactions Company TUXEDO 编程框架TUXEDO 的安装$cd /cdrom $sh install.sh $TUXEDO客户端的配置 环境变量 WSENV文件WSNADDR=/192.168.102.249:4000SET PATH=C:PROGRA1BEASYS1TUXEDOBIN; SET INCLUDE=C:PROGRA1BEASYS1TUXEDOINCLUDE SET TUXDIR=C:PROGRA1BEASYS1TUXEDO SET LIB=C:PROGRA1BEASYS1TUXEDOLIB SET APPDIR=C:TUX
2、APP SET WSENVFILE=C:WSENVTUXEDO 服务端的系统配置作成系统配置文件Ubbconfig 系统分析与Client/ Server 组件设计系统配置文件 UBBCONFIG*RESOURCES IPCKEY237456 MASTERotc MODELSHM*MACHINES ”AIX_SERVER“LMID=“otc“ TUXCONFIG=“/usr/tuxedo/apps/dbteste/tuxconfig“ TUXDIR=“/usr/tuxedo“ APPDIR=“/usr/tuxedo/apps/dbtest“ MAXWSCLIENTS=10 *GROUPS “G
3、ROUP1“ LMID=“otc“GRPNO=1*SERVERS simpserv SRVGRP=“GROUP1” SRVID=1 WSLSRVGRP=“GROUP1“ SRVID =300 CLOPT=“-A - -n /159.226.5.218:5898 -d/dev/tcp -m1 -M5 -x 10“ *SERVICES ADD_A ADD_BAdministration-Configuration File*RESOURCES *MACHINES *GROUPS *SERVERS *SERVICES *NETWORKS *ROUTING *NETGROUPSAdministrati
4、on-Configuration File*RESOURCES IPCKEY237456 32769-16,777,214 MASTERSITE1,SITE2 UID3002 /* BEA TUXEDO Administrator GID100 PERM0660 Access Control */ MAXACCESSERS75 /* on a node */ MAXSERVERS40 /* in the whole domain */ MAXSERVICES55/* in the system */ MODELMP OPTIONLAN,MIGRATE LDBALY/* TMNETLOAD en
5、vironment */ NOTIFYSIGNAL /* DIPIN,IGNORE, TPINIT flag override*/ USIGNALSIGUSR1 SCANUNIT10/* 5*x */ SANITYSCAN3 /* SCANUNIT*SANITYSCAN help printserver printservicesA sample of TUXEDO AP Client main() tpinit(0); buf=tpalloc(“FML”,);bufoutput data tpfree(buf); tpterm() Servervoid JZ(TPSVCINFO *trans
6、b) s_buf = (FBFR*)transb-data; s_bufinput data; EXEC SQL INSERT INTO emp VALUES (:name,:age);r_buf=tpalloc(“FML”,.);r_buf len-1; i+) rqst-datai = toupper(rqst-datai);tpreturn(TPSUCCESS, 0, rqst-data, 0L, 0); #include #include “atmi.h“/* TUXEDO Header File */ main(int argc, char *argv) char *buf ; lo
7、ng sendlen, rcvlen; int ret; if (tpinit(TPINIT *) NULL) = -1) (void) fprintf(stderr, “Tpinit failedn“); exit(1); sendlen = strlen(argv1); if(buf = (char *) tpalloc(“STRING“, NULL, sendlen+1) = NULL) (void) fprintf(stderr,“Error allocating send buffern“); tpterm(); exit(1); (void) strcpy(buf, argv1);
8、 ret = tpcall(”TOUPPER“, (char *) buf, 0, (char *) if(ret = -1) (void) fprintf(stderr, “Cant send request to service TOUPPERn“); (void) fprintf(stderr, “Tperrno = %dn“, tperrno); tpfree(buf); tpterm(); exit(1); (void) fprintf(stdout, “Returned string is: %sn“,buf); tpfree(buf); tpterm(); 基于TUXEDO 的程
9、序设计与 运行管理-编写客户进程编写客户程序simpcl.cbuildclient客户进程 simpcl buildclient -w -o simpcl -f simpcl.cTUXDIR=/home/tuxedo; export TUXDIR PATH=$tuxdir/bin;$PATH NLSPATH=$TUXDIR/locale/C; export NLSPATH LANG=C; export LANG WSNADDR=/servername:port; export WSNADDR#include #include #include /* TUXEDO Header File */
10、#include /* TUXEDO Header File */int tpsvrinit(int argc, char *argv) userlog(“Welcome to the simple server“); return(0); void tpsvrdone() userlog(” simple server exited “); return ; void ADD_A(TPSVCINFO *rqst) strcat(rqst-data ,”AAAAA”); tpreturn(TPSUCCESS, 0, rqst-data, 0L, 0); void ADD_B(TPSVCINFO
11、 *rqst) strcat(rqst-data ,”BBBBBB”); tpreturn(TPSUCCESS, 0, rqst-data, 0L, 0); 基于TUXEDO 的程序设计与 运行管理-编写服务进程编写服务程序simpserv.cbuildserver服务进程 simpserv buildserver -o simpserv -f simpserv.c -s ADD_A -s ADD_BTUXDIR=/home/tuxedo; export TUXDIR PATH=$tuxdir/path;$PATH NLSPATH=$TUXDIR/locale/C; LANG=C;#inclu
12、de #include #include /* TUXEDO Header File */ #include /* TUXEDO Header File */int tpsvrinit(int argc, char *argv) userlog(“Welcome to the simple server“); return(0); void tpsvrdone() userlog(” simple server exited “); return ; void ADD_FUNC(TPSVCINFO *rqst) if !strcmp(rqst-name ,”ADD_A”) strcat(rqs
13、t-data ,”AAAAA”); else if !strcmp(rqst-name ,”ADD_B”) strcat(rqst-data ,”BBBBB”); tpreturn(TPSUCCESS, 0, rqst-data, 0L, 0); 基于TUXEDO 的程序设计与 运行管理-编写服务进程编写服务程序simpserv.cbuildserver服务进程 simpserv buildserver -o simpserv -f simpserv.c -s ADD_A,ADD_B:ADD_FUNCTUXDIR=/home/tuxedo; export TUXDIR PATH=$tuxdir
14、/path;$PATH NLSPATH=$TUXDIR/locale/C; LANG=C;*RESOURCES IPCKEY237456 MASTERotc MODELSHM*MACHINES ”AIX_SERVER“LMID=“otc“ TUXCONFIG=“/usr/tuxedo/apps/dbteste/tuxconfig“ TUXDIR=“/usr/tuxedo“ APPDIR=“/usr/tuxedo/apps/dbtest“ MAXWSCLIENTS=10 *GROUPS “GROUP1“LMID=“otc“GRPNO=1*SERVERS simpserv SRVGRP=“GROU
15、P1” SRVID=1 WSLSRVGRP=“GROUP1“ SRVID =300 CLOPT=“-A - -n /159.226.5.218:5898 -d/dev/tcp -m1 -M5 -x 10“ *SERVICES ADD_A ADD_B系统配置文件 UBBCONFIG 通讯缓冲区类型概述VIEW - C Structure Oriented Fixed length Encode/DecodeSTRING - CharBytesStream Variable lengthEncode/DecodeCARRAY- BinaryByteStream Fixed lengthNo Encode/DecodeFML - Attribtutes/Value Oriented Variable length, Encode/Decode简单复杂效率高效率低死板灵活类型少类型多通讯缓冲区类型-CARRAY. if(sendbuf = tpalloc(“CARRAY“,NULL, sendlen) = NULL) (void) fprintf(stderr,“Error allocating send b