TUXEDO服务端如何访问INFORMIX数据库

 我来答
汗怀梦W6
2013-10-23 · TA获得超过106个赞
知道答主
回答量:109
采纳率:0%
帮助的人:113万
展开全部
2、通过XA接口互连。本文介绍这种互连的配置方法。 以上两种连接方式的区别: 采用XA的方式,你的应用中需要使用到全局事务,如果你的应用需要在一个事务中去更新两个或两个以上的数据库,并保证该事务的一致性。使用tuxedo的XA提供的全局事务最好。 如果一个数据库,可以不使用XA,事务由自己控制。因为NON-XA比XA的效率高! 但是不使用XA也可以连接数据库的时候,把db connect 放到tpsvrinit中,db shutdown 放到tpsvrdone中。也就是在tmboot就连接到数据库上。tmshutdown时候就db disconnect 数据库了。 在.profile中除了INFORMIXDIR,INFORMIXSERVER,PATH,SHLIB_PATH之外,还要写以下内容:CFLAGS="-I$INFORMIXDIR/incl -I$INFORMIXDIR/incl/esql" export CFLAGSLANG=CTUXCONFIGTUXDIR 3. 将TUXEDO/udataobj目录下的RM文件,加入:INFORMIX-DSHC:infx_xa_switch:-L/tuxedo/lib -L${INFORMIXDIR}/lib -L${INFORMIXDIR}/lib/esql -lifxa -lifsql -lifasf -lifgen -lifos -lifgls -lnsl -lm -lsec ${INFORMIXDIR}/lib/esql/checkapi.o -lifglx 4. 在TUXEDO用户下创建TMS文件:TMS_INF,TUXEDO通过TMS_INF与INFORMIX数据库采用XA协议进行通讯buildtms -r INFORMIX-DSHC -o /tuxedo/bin/TMS_INFORMIX 5. 配置 UBBCONFIG1.在*MACHINES节中增加:(若不使用XA接口可以不增加TLOG)TLOGDEVICE = "/usr/tuxedo/simpdb/TLOG"TLOGNAME=TLOGTLOGSIZE=2002. 改*GROUPS节的配置为:*GROUPSGROUP1 LMID=simple GRPNO=1TMSNAME="TMS_INFORMIX" TMSCOUNT=2 OPENINFO="INFORMIX-DSHC:mydb"修改后的配置文件UBBCONFIG内容如下,用tmloadcf -y UBBCONFIG重新生成tuxconfigIPCKEY 123456 ( 可以输入任意的一个序列数)DOMAINID simpappMASTER simpleMAXACCESSERS 100MAXSERVERS 50MAXSERVICES 100MODEL SHMLDBAL N *MACHINESserver LMID=simpleAPPDIR="/usr/tuxedo/simpdb"TUXCONFIG="/usr/tuxedo/simpdb/tuxconfig"TUXDIR="/usr/tuxedo"TLOGDEVICE = "/usr/tuxedo/simpdb/TLOG"TLOGNAME=TLOGTLOGSIZE=100*GROUPSGROUP1 LMID=simple GRPNO=1TMSNAME="TMS_INF" TMSCOUNT=2 OPENINFO="INFORMIX-DSHC:mydb"*SERVERSDEFAULT:CLOPT="-A"test SRVGRP=GROUP1 SRVID=1*SERVICES 6.用TMADMIN创建TLOG文件,TUXEDO用一个文件TLOG记录对数据库操作的日志。用于协调分布式数据库的提交与回滚.(若没有使用XA,可以省略此步骤) D:\>tmadmin>crdl -b 500 -z /usr/tuxedo/simpdb/TLOG>crlog -m simple>q 三、服务端的程序(见demo目录):test.cp 功能:根据客户端传的EMPNO到表EMP中取ENAME的值,并把它返回给客户端#include #include #include #include #include #include EXEC SQL INCLUDE sqlca; EXEC SQL BEGIN DECLARE SECTION;long al_empno=0;char ac_ename[11]=""; EXEC SQL END DECLARE SECTION; TEST(TPSVCINFO *rqst){ /*接收客户端来的数据*/al_empno = (FBFR32 *)rqst->data;EXEC SQL select ename into :ac_ename from EMP where empno=:al_empno;if(sqlca.sqlcode!=0){ userlog("select from EMP failure,sqlca.sqlcode=%ld\n",sqlca.sqlcode);tpreturn( TPFAIL, 0, rqst->data, 0, 0 );}/*把取出的结果返回给客户端*/strcpy(rqst->data,ac_ename);tpreturn( TPSUCCESS, 0, rqst->data, 0, 0 );} 四、编写客户端程序(见Demo目录): testcli.c功能:调用TUXEDO服务端的服务TEST,取EMPNO=420000所对应的ENAME的值,并显示出来#include #include "atmi.h" main(argc, argv){long reqlen=1024;char *reqbuf; /* 与TUXEDO服务端建立连接 */if (tpinit((TPINIT *) NULL) == -1){(void) fprintf(stderr, "Tpinit failed\n");exit(1);}/* 分配发送缓冲区*/reqbuf = (char *)tpalloc("STRING",NULL,reqlen);if ( reqbuf == (char *)NULL){printf("tpalloc failed\n");tpterm();}strcpy(reqbuf,"1000");/*调用TUXEDO的服务TEST*/if (tpcall("TEST", (char *)reqbuf, 0L, (char **)&reqbuf, (long *)&reqlen, 0< 0 ){printf("tpcall failed,tperrno=%ld,tperrtext=%s\n",tperrno,tpstrerror(tperrno));tpfree(reqbuf);tpterm();exit(1);}printf("name=%s\n",reqbuf);tpfree(reqbuf);tpterm();return(0);} 五、编译服务端程序1.用INFORMIX的esql把test.pc 文件预编译成test.c文件/usr/tuxedo/simpdb/esql -c test.pc -I$INFORMIXDIR/incl/esql 2.用buildserver把test.c编译成可执行文件,注意-r 后带的INFORMIX-DSHC与RM文件中的一致。/usr/tuxedo/simpdb/buildserver -o simpserv -f simpserver.c -r INFORMIX-DSHC -s TEST 六、编译客户端程序/usr/tuxedo/simpdb/buildclient -o testcli -f testcli.c 七、用 tmboot -y 启动TUXEDO,应能看到所有的SERVER都启动成功.这时,我们的服务端程序test 会自动与INFORMIX数据库建立连接,并一直保持这个连接,直到TUXEDO系统或INFORMIX数据库关闭.所以在我们的程序test.cp中看不到与数据库连接的语句,因为现在与数据库的连接由TUXEDO自动管理./usr/tuxedo/simpdb/ tmboot -yexec TMS_INFORMIX -A :process id=1072 ... Started.exec TMS_INFORMIX -A :process id=528 ... Started.exec test -A :process id=876 ... Started. 八、运行客户端程序,应能看到服务端返回的结果/usr/tuxedo/simpdb/ testcliname=bill 到此,整个配置过程就大功告成了.INFORMIX的其他版本的配置及在其他操作系统上的配置基本与本文所述差不多,差别主要在RM文件中所连的库文件可能会不样.使用esql -libs 命令得到应用所需的数据库动态连接库.再加上INFORMIX支持XA的库libinfxxa.a,注意在如果TMS_INF启动不成功,查看ULOG文件,根据ULOG文件的信息进行排错.
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式