版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、The E-Commerce Transactions Company ,TUXEDO 编程框架,TUXEDO 的安装,%cd /cdrom %sh install.sh,A sample of TUXEDO AP,Client main() tpinit(0); buf=tpalloc(“FML”,); bufoutput data tpfree(buf); tpterm() ,Server void JZ(TPSVCINFO *transb) s_buf = (FBFR*)transb-data; s_buf-input data; EXEC SQL INSERT INTO emp VAL
2、UES (:name,:age); r_buf=tpalloc(“FML”,.); r_buf - output data; tpreturn(TPSUCCESS, 0, r_buf,0 , 0); ,tpcall()-按名请求 服务,int tpcall(char *svc, char *idata, long ilen, char *odata, long *olen, long flags) ret = tpcall(TOUPPER, (char *)sendbuf, 0, (char *) ,服务程序的入口参数TPSVCINFO,/* interface to service rout
3、ines */ struct tpsvcinfo #define XATMI_SERVICE_NAME_LENGTH 32 charnameXATMI_SERVICE_NAME_LENGTH;/* service name invoked */ longflags;/* describes service attributes */ char*data;/* pointer to data */ longlen;/* request data length */ intcd;/* reserved for future use */ longappkey;/* application auth
4、entication client key */ CLIENTID cltid;/* client identifier for originating client */ ; typedef struct tpsvcinfo TPSVCINFO;,服务程序返回结果- tpreturn(),void tpreturn(int rval, long rcode, char *data, long len, long flags) void TOUPPER(TPSVCINFO *rqst) int i; for(i = 0; i len-1; i+) rqst-datai = toupper(rq
5、st-datai); tpreturn(TPSUCCESS, 0, rqst-data, 0L, 0); ,#include #include atmi.h/* TUXEDO Header File */ main(int argc, char *argv) char *buf ; long sendlen, rcvlen; int ret; if (tpinit(TPINIT *) NULL) = -1) (void) fprintf(stderr, Tpinit failedn); exit(1); sendlen = strlen(argv1); if(buf = (char *) tp
6、alloc(STRING, NULL, sendlen+1) = NULL) (void) fprintf(stderr,Error allocating send buffern); tpterm(); exit(1); (void) strcpy(buf, argv1); ret = tpcall(”TOUPPER, (char *) buf, 0, (char *) ,基于TUXEDO 的程序设计与运行管理-编写客户进程,编写客户程序 simpcl.c,buildclient,客户进程 simpcl,buildclient -w -o simpcl -f simpcl.c,TUXDIR=
7、/home/tuxedo; export TUXDIRPATH=$tuxdir/bin;$PATHNLSPATH=$TUXDIR/locale/C; export NLSPATHLANG=C; export LANG WSNADDR=/servername:port; export WSNADDR,#include #include #include /* TUXEDO Header File */ #include /* TUXEDO Header File */ int tpsvrinit(int argc, char *argv) userlog(Welcome to the simpl
8、e 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 *rqst) strcat(rqst-data ,”BBBBBB”); tpreturn(TPSUCCESS, 0, rqst-data, 0L, 0); ,基于TUXEDO 的程序设计与运行管理-
9、编写服务进程,编写服务程序 simpserv.c,buildserver,服务进程 simpserv,buildserver -o simpserv -f simpserv.c -s ADD_A -s ADD_B,TUXDIR=/home/tuxedo; export TUXDIRPATH=$tuxdir/path;$PATHNLSPATH=$TUXDIR/locale/C;LANG=C;,#include #include #include /* TUXEDO Header File */ #include /* TUXEDO Header File */ int tpsvrinit(int
10、 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(rqst-data ,”AAAAA”); else if !strcmp(rqst-name ,”ADD_B”) strcat(rqst-data ,”BBBBB”); tpreturn(TPSUCCES
11、S, 0, rqst-data, 0L, 0); ,基于TUXEDO 的程序设计与运行管理-编写服务进程,编写服务程序 simpserv.c,buildserver,服务进程 simpserv,buildserver -o simpserv -f simpserv.c -s ADD_A,ADD_B:ADD_FUNC,TUXDIR=/home/tuxedo; export TUXDIRPATH=$tuxdir/path;$PATHNLSPATH=$TUXDIR/locale/C;LANG=C;,基于TUXEDO 的系统配置,作成系统配置文件 Ubbconfig,系统分析与Client/ Serv
12、er 组件设计,*RESOURCES IPCKEY237456 MASTERotc MODELSHM *MACHINES ”AIX_SERVERLMID=otc TUXCONFIG=/usr/tuxedo/apps/dbteste/tuxconfig TUXDIR=/usr/tuxedo APPDIR=/usr/tuxedo/apps/dbtest MAXWSCLIENTS=10 *GROUPS GROUP1LMID=otcGRPNO=1 *SERVERS simpserv SRVGRP=GROUP1” SRVID=1 WSLSRVGRP=GROUP1 SRVID =300 CLOPT=-A
13、- -n /159.226.5.218:5898 -d/dev/tcp -m1 -M5 -x 10 *SERVICES ADD_A ADD_B,系统配置文件 UBBCONFIG,系统配置的生成,tmloadcf -y ubbconfig,TUXDIR=/home/tuxedo; export TUXDIRPATH=$TUXDIR/path;$PATHAPPDIR=/home/xiaohua/tuxtest; TUXCONFIG=/home/xioahua/tuxtest/tuxconfigNLSPATH=$TUXDIR/locale/C;LANG=C;,基于TUXEDO 的程序设计与运行管理-
14、起动、监控、停止,tmboot,tmadmin,tmshutdown,tmboot -y tmadmin psr psc pq pclt quit tmshutdown -y,通讯缓冲区类型概述,VIEW - C Structure Oriented Fixed length Encode/Decode,STRING - CharBytesStream Variable length Encode/Decode,CARRAY- BinaryByteStream Fixed length No Encode/Decode,FML - Attribtutes/Value Oriented Vari
15、able length, Encode/Decode,简单,复杂,效率高,效率低,死板,灵活,类型少,类型多,通讯缓冲区类型-CARRAY,. if(sendbuf = tpalloc(CARRAY,NULL, sendlen) = NULL) (void) fprintf(stderr,Error allocating send buffern); tpterm(); exit(1); memcpy(sendbuf,s_buf,s_len); .,int SVCNAME(rqst) TPSVCINFO *rqst; . memcpy(s_buf,rqst-data,rqst-len); .
16、,通讯缓冲区类型-STRING,. if(sendbuf = tpalloc(”STRING,NULL, sendlen) = NULL) (void) fprintf(stderr,Error allocating send buffern); tpterm(); exit(1); strcpy(sendbuf,s_buf); .,int SVCNAME(rqst) TPSVCINFO *rqst; . strcpy(s_buf,rqst-data); . ,通讯缓冲区类型-VIEW,$ /* View data structure */VIEW aud VIEW aud #type cna
17、me fbname count flag size null long b_id - 1 - - 0 float balance - 1 - - 0.0 string ermsg - 1 - 80 “” END,P3-7 Comipler graph viewc -n aud.v aud.h aud.V VIEWFILES=aud.V VIEWDIR=$APPDIR,aud.v,通讯缓冲区类型-VIEW(Continue),struct aud long b_id; float balance; char ermsg80; ;,s_buf=tpalloc(“VIEW”,”aud”,sizeof
18、(struct aud); s_buf-b_id =; s_buf-balance=; strcpy(s_buf-ermsg,); tpcall(“SVCNAME”,s_buf,);,通讯缓冲区类型-FML Buffer,*base 100 #namenumbertypeflagscomments BRANCH_ID1long- BALANCE 2float- STATLIN3string- NAME4string-,aud.flds,P4-11 Graph mkfldhdr aud.flds FLDTBLDIR=$APPDIR FIELDTBLS=aud.flds,. aud.flds.h,
19、通讯缓冲区类型-FML Buffer (Continue),/* fnamefldid*/ #define BRANCH_ID(FLFID 8302) /* number:101 type long */ #define BALANCE(FLFID 24692) /* number:102 type float */ #define STATLIN(FLFID 41069) /* number:103 type string */ #define NAME(FLFID 61070) /* number:104 type string*/,aud.flds.h,Fadd、Fchg、 Fget 、
20、Fprint, .,通讯缓冲区类型-FML Buffer (Continue),if(sendbuf = (FBFR *) tpalloc(FML, NULL, 1024) = (FBFR *)NULL) fprintf(stderr,Error allocating send buffern); tpterm(); exit(1); Fadd(sendbuf, NAME, argv1); Fchg(sendbuf, AGE, 0, (char *),Void INSERT(TPSVCINFO *rqst) $char name100; $int age; FLDLENlen; FBFR *b
21、uf; buf = (FBFR *)rqst-data; Fget(buf, NAME, 0,name, ,通讯缓冲区类型-FML Buffer with VIEW,$ /* View data structure */VIEW aud VIEW aud #type cname fbname count flag size null long b_id BRANCE_ID 1 - - 0 float balance BALANCE 1 - - 0.0 string ermsg STATLIN 1 - - “” END,FLDTBLDIR=flddir; FIELDTBLS=myfld.flds
22、 mkfldhdr VIEWDIR=viewdir VIEWFILES=myview.V viewc myview.v,Transactions,tpbegin(int timeout,long flags) tpabort(flags); tpcommit(flags);,Client: main() tpinit(); . tpbegin(30,0); ret1 = tpcall(“SVC1”,.); ret2 = tpcall(“SVC2”,.); if (ret1 | ret2) tpabort(0); tpcommit(0); ,MYSVC(TPSVCINFO *rqst) . EX
23、EC SQL INSERT(); if( sqlca.sqlcode) tpreturn(TPFAIL); tpreturn(TPSUCCESS); ,#include #include #include /* TUXEDO Header File */ #include /* TUXEDO Header File */ int tpsvrinit(int argc, char *argv) tpopen(); return(0); void tpsvrdone() tpclose(); return ; void INSERT(TPSVCINFO *rqst) FBFR *ibuf; int
24、success=0; ibuf = (FBFR*) rqst -data; Fget(ibuf, FNAME, 0, (char*)name, NULL); Fget(ibuf, FAGE, 0, (char*) ,*MACHINES myserver. TLOGDEVICE=APPDIR/TLOGDEV TLOGNAME=TLOG *GROUP xagroupGRPNO=1 TMSNAME=“TMS_INFORMIX” TMSCOUNT=2 OPENINFO=“INFORMIX-OnLine:workdb” *SERVERS dbserv SRVGRP=xagroup .,tmadmin c
25、rdl -z /appdir/TLOGDEV quit buildserver -o dbserv -f dbserv.o -r INFORMIX-OnLine,Administration-Configuration File,*RESOURCES *MACHINES *GROUPS *SERVERS *SERVICES *NETWORKS *ROUTING *NETGROUPS,Administration-Configuration File,*RESOURCES IPCKEY237456 32769-16,777,214 MASTERSITE1,SITE2 UID3002 /* BEA
26、 TUXEDO Administrator GID100 PERM0660 Access Control */ MAXACCESSERS75 /* on a node */ MAXSERVERS40 /* in the whole domain */ MAXSERVICES55/* in the system */ MODELMP OPTIONLAN,MIGRATE LDBALY/* TMNETLOAD environment */ NOTIFYSIGNAL /* DIPIN,IGNORE, TPINIT flag override*/ USIGNALSIGUSR1 SCANUNIT10/*
27、5*x */ SANITYSCAN3 /* SCANUNIT*SANITYSCAN 300 */ BLOCKTIME1 /* a message may block */,Administration - Commands,tmloadcf tmboot tmadmin crdl crlog psr psc pclt pq chtr on quit tmshutdown,ULOG* ULOGPFX = /home/hf0766/toolkit/events/ULOG tmadminchtr on,同步调用,tpcall( ) TxRPC,C,S,int tpcall(char *svc, ch
28、ar *idata, long ilen, char *odata, long *olen, long flags),Flags TPNOTRAN TPNOCHANGE TPNOBLOCK TPNOTIME TPSIGRSTRT,Ret=-1,tperrno,tpurcode TPEINVAL TPENOENT TPEITYPE TPEOTYPE TPETRAN TPETIME TPESVCFAIL TPESVCERR TPEBLOCK TPGOTSIG TPEPROTO TPESYSTEM TPEOS,异步调用,tpacall( ) tpgetrply( ) tpcancel(),C,S,S,S,管道通讯,tpforward( ),C,S,S,S,管道通讯-节省资源,C,C,S1,S2,S1,S2,Nested Services,Pipelined Services,What are the required ratios of S1 to S2?,void tpforward(char *svc, char *data, long len, long fla
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 固体废弃物预处理破碎技术方案
- 工程门窗安装验收方案
- 风电物资运输节能方案
- 防火建筑楼层边缘封堵方案
- 风电施工扬尘在线监测方案
- 办公用房现场协调方案
- 防火建筑防火密封胶施工方案
- 包装饮用水项目基础施工方案
- 装备制造能耗优化实施方案
- 小型引调水工程经济效益和社会效益分析报告
- 2024年高考政治试卷(江苏卷)附答案解析
- 《工业废水臭氧催化氧化深度处理技术规程》(T-SDEPI 030-2022)
- 主题班会课件-学会调节自己的情绪
- 城市雨水管道清淤施工方案
- 现代药物制剂与新药研发智慧树知到答案2024年苏州大学
- TD/T 1051-2017 土地整治信息分类与编码规范(正式版)
- 行政诉讼模拟法庭
- 颅内动脉狭窄治疗策略
- 2023年上海见证取样员考试试题
- 领导干部在企业兼职(任职)情况自查自纠登记表
- SB/T 11067-2013金属材料仓储技术与管理规范
评论
0/150
提交评论