beatuxedo中间件应用初探

beatuxedo中间件应用初探

ID:31643248

大小:109.44 KB

页数:5页

时间:2019-01-16

beatuxedo中间件应用初探_第1页
beatuxedo中间件应用初探_第2页
beatuxedo中间件应用初探_第3页
beatuxedo中间件应用初探_第4页
beatuxedo中间件应用初探_第5页
资源描述:

《beatuxedo中间件应用初探》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、BEATuxedo中间件应用初探随着屮间件在大型应用系统屮的日益普及,目前各类中间件充斥着市场,它们在银行、电信、金融等大规模关键事务领域中的整合各种异构平台、保证交易完整性等方面表现出了超强的能力。BEATuxedo就是其中一款著名的交易屮间件,本文以一个经典的例子(大写字母转换),主要介绍Tuxedo的工作原理及开发方法,以及Tuxedo应用程序的管理方法。工作原理Tuxedo是BEA公司的交易中间件产品,1984年由贝尔实验室开发成功,1992年易主Novell公司,1996年由BEA公司收购,经过十多年的不断更新和完善,Tuxedo

2、已经发展成为交易中间件领域事实上的标准。Tuxedo可以有效地整合企业异构C/S系统,实现大规模的关键业务处理和分布式事务管理,从而为企业提供一个可靠的、高性能的、易维护的三层分布式计算机环境。图1展示了一个基本Tuxedo系统的组成和工作原理。①Client向System/T发出查询请求,以找到Server消息队列的地址;②Client根据找到的入口地址将请求发送到Server的消息队列中;③Server处理请求,并将结果返回给Client的消息队列。System/T是Tuxedo系统的核心,它实现了Tuxedo的所有功能和特征,如C/S

3、数据流管理、服务请求的负载均衡、全局事务管理以保证交易的完整性、同步/异步服务请求、两阶段提交以确保消息的发送等。System/T提供了一个类似公告栏的服务,用以发布C/S计算机环境屮所有服务器、服务和客户机的信息,供其它分布式计算的参与者使用。下面笔者将通过一个大写字母转换的简单例子,讲述Tuxedo应用程序工作的基本原理和开发方法。应用介绍Simpapp是Tuxedo系统自带的一个例了,它由服务器和客户端程序两部分组成。服务器simpserv实现了一个TOUPPER服务,它从客户程序接收一个字符串,将它转换成大写后,传回客户端。整个工作

4、流程可以用图2表示。加入系统入缓冲区十服务■收氏退出系统退出系统从缓冲区取出数锯图二客户机首先收集要转换成大写的字符串,然后连接到System/T并将字符串放入缓冲区,接着调用服务器上的TOUPPER服务,最后从服务器响应缓冲区屮取出数据并退出System/To1.Simpapp的服务程序下面是服务程序simpserv.c的源代码:^includeSinclude"atmi.h"/TuxedoATMI函数库的头文件/TOUPPER(TPSVCINFOrqst){inti;for(i=0;ilen-l;i++)

5、rqst->data[i]=toupper(rqst~>data[i]);/将rqst->data缓冲区内容转换成大写/tpreturn(TPSUCCESS,0,rqst->data,0L,0);/将rqst->data作为响应缓冲区返回/}可能你己经注意到了,该程序没有提供main方法。事实上,Tuxedo不要求程序员编写main方法,以便让他们把粘力集中在业务逻辑的编写上,在编译时,Tuxedo系统会为它自动创建。TPSVCINFO是Tuxedo记录服务调用信息的一个结构体,data域是保存请求数据的缓冲区,len域记录了data域的长

6、度。2.Simpapp的客户程序客户程序Simpcl.c是服务调用的发起者,它从命令行接收参数,通过tpinitO调用连接到System/T,通过LpallocO调用分配一个字符串类型的缓冲区,通过tpcallO调用请求TOUPPER服务,最后通过tptemi()调用退出System/T,下面是它的源代码:^includeSinclude"atmi.h"intmain(intargc,charargv[]){charbuf;longlen;if(argc!=2){(void)fprintf(stderr,"Usage:si

7、mpclstring〃);exit(1);}if(tpinit((TPINIT)NULL)==-1){(void)fprintf(stderr,"Tpinitfa订cd");exit(1);}len=strlen(argv[l]);if((buf二(char)tpalloc("STRING",NULL,len+1))二二NULL){(void)fprintf(stderr,z,Errorallocatingsendbuffer,/);tptermO;exit(1);}(void)strcpy(buf,argv[l]);ifCtp

8、callCTOUPPER",buf,0,&&buf,&&len,0)==-l){(void)fprintf(stderr,"Can'tsendrequesttoserviceTO

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。