




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
BEATUXEDO中间件应用初探ZDNET软件频道20071004作者CHINAUNIX|CHINAUNIX本文关键词应用技术BEA中间件随着中间件在大型应用系统中的日益普及,目前各类中间件充斥着市场,它们在银行、电信、金融等大规模关键事务领域中的整合各种异构平台、保证交易完整性等方面表现出了超强的能力。BEATUXEDO就是其中一款著名的交易中间件,本文以一个经典的例子(大写字母转换),主要介绍TUXEDO的工作原理及开发方法,以及TUXEDO应用程序的管理方法。工作原理TUXEDO是BEA公司的交易中间件产品,1984年由贝尔实验室开发成功,1992年易主NOVELL公司,1996年由BEA公司收购,经过十多年的不断更新和完善,TUXEDO已经发展成为交易中间件领域事实上的标准。TUXEDO可以有效地整合企业异构C/S系统,实现大规模的关键业务处理和分布式事务管理,从而为企业提供一个可靠的、高性能的、易维护的三层分布式计算机环境。图1展示了一个基本TUXEDO系统的组成和工作原理。图一CLIENT向SYSTEM/T发出查询请求,以找到SERVER消息队列的地址;CLIENT根据找到的入口地址将请求发送到SERVER的消息队列中;SERVER处理请求,并将结果返回给CLIENT的消息队列。SYSTEM/T是TUXEDO系统的核心,它实现了TUXEDO的所有功能和特征,如C/S数据流管理、服务请求的负载均衡、全局事务管理以保证交易的完整性、同步/异步服务请求、两阶段提交以确保消息的发送等。SYSTEM/T提供了一个类似公告栏的服务,用以发布C/S计算机环境中所有服务器、服务和客户机的信息,供其它分布式计算的参与者使用。下面笔者将通过一个大写字母转换的简单例子,讲述TUXEDO应用程序工作的基本原理和开发方法。应用介绍SIMPAPP是TUXEDO系统自带的一个例子,它由服务器和客户端程序两部分组成。服务器SIMPSERV实现了一个TOUPPER服务,它从客户程序接收一个字符串,将它转换成大写后,传回客户端。整个工作流程可以用图2表示。图二客户机首先收集要转换成大写的字符串,然后连接到SYSTEM/T并将字符串放入缓冲区,接着调用服务器上的TOUPPER服务,最后从服务器响应缓冲区中取出数据并退出SYSTEM/T。1SIMPAPP的服务程序下面是服务程序SIMPSERVC的源代码INCLUDESTDIOHINCLUDE“ATMIH“/TUXEDOATMI函数库的头文件/TOUPPERTPSVCINFORQSTINTIFORI0IRQSTLEN1IRQSTDATAITOUPPERRQSTDATAI/将RQSTDATA缓冲区内容转换成大写/TPRETURNTPSUCCESS,0,RQSTDATA,0L,0/将RQSTDATA作为响应缓冲区返回/可能你已经注意到了,该程序没有提供MAIN方法。事实上,TUXEDO不要求程序员编写MAIN方法,以便让他们把精力集中在业务逻辑的编写上,在编译时,TUXEDO系统会为它自动创建。TPSVCINFO是TUXEDO记录服务调用信息的一个结构体,DATA域是保存请求数据的缓冲区,LEN域记录了DATA域的长度。2SIMPAPP的客户程序客户程序SIMPCLC是服务调用的发起者,它从命令行接收参数,通过TPINIT调用连接到SYSTEM/T,通过TPALLOC调用分配一个字符串类型的缓冲区,通过TPCALL调用请求TOUPPER服务,最后通过TPTERM调用退出SYSTEM/T,下面是它的源代码INCLUDESTDIOHINCLUDE“ATMIH“INTMAININTARGC,CHARARGVCHARBUFLONGLENIFARGC2VOIDFPRINTFSTDERR,“USAGESIMPCLSTRINGN“EXIT1IFTPINITTPINITNULL1VOIDFPRINTFSTDERR,“TPINITFAILEDN“EXIT1LENSTRLENARGV1IFBUFCHARTPALLOC“STRING“,NULL,LEN1NULLVOIDFPRINTFSTDERR,“ERRORALLOCATINGSENDBUFFERN“TPTERMEXIT1VOIDSTRCPYBUF,ARGV1IFTPCALL“TOUPPER“,BUF,0,TPFREEBUFTPTERMEXIT3VOIDFPRINTFSTDOUT,“RETURNEDSTRINGISSN“,RCVBUFTPFREEBUFTPTERMRETURN03SIMPAPP的配置文件除了客户和服务程序以外,TUXEDO还需要一个配置文件来对应用进行描述。配置文件由多个段组成,每个段定义由一个星号开始。下面是NT平台下SIMPAPP的配置文件UBBSIMPLE的内容,其中带下划线的部分需要根据机器的资源配置作适当修改。RESOURCESIPCKEY123456MASTERNODE1MODELSHMMACHINESJQLMIDNODE1TUXDIR“GPROGRAMFILESBEASYSTEMSTUXEDO“APPDIR“GSIMPAPP“TUXCONFIG“GSIMPAPPTUXCONFIG“GROUPSGROUP1LMIDNODE1GRPNO1SERVERSSIMPSERVSRVGRPGROUP1SRVID1CLOPT“A“SERVICESTOUPPERTUXDIR指的是TUXEDO的安装路径,APPDIR指的是SIMPAPP应用程序所在的目录,TUXCONFIG指的是SIMPAPP的二进制配置文件,一般为APPDIRTUXCONFIG。4SIMPAPP的编译和运行由于BUILDCLIENT和BUILDSERVER没有编译能力,要编译TUXEDO应用程序时,还必须安装第三方的C语言编译器,在NT平台下推荐使用VC。步骤如下设置环境变量SETPATHPATHGPROGRAMFILESBEASYSTEMSTUXEDOBINSETTUXDIRGPROGRAMFILESBEASYSTEMSTUXEDOTUXCONFIGGSIMPAPPTUXCONFIG生成二进制配置文件TMLOADCFYUBBSIMPLE编译客户程序BUILDCLIENTOSIMPCLEXEFSIMPCLC编译服务程序BUILDSERVEROSIMPSERVEXEFSIMPSERVCSTOUPPER启动服务程序TMBOOTY运行客户程序SIMPCL“HELLO,JQ“关闭应用程序TMSHUTDOWNY5管理SIMPAPP通过TMADMIN命令可以方便地管理服务程序。TUXEDO函数说明ZDNET软件频道20071004作者CHINAUNIX|CHINAUNIX本文关键词技术函数TUXEDO中间件1与缓冲区使用有关的ATMI211TPALLOC212TPREALLOC213TPFREE214TPTYPES22常用的FMLFML32操作函数321FALLOC322FINIT323FADD324FCHG325FGET425FPRINT426FERROR43连接的建立与断开有关的ATMI531TPCHKAUTH532TPINIT533TPTERM64与请求TUXEDOSERVER有关的ATMI641TPCALL642TPACALL743TPGETRPLY744TPCANCEL745TPGPRIO846TPSPRIO85与请求错误处理有关的ATMI851TPSTRERROR852TPERRORDETAIL953TPSTRERRORDETAIL91与缓冲区使用有关的ATMI11TPALLOCCHARTPALLOCCHARTYPE,CHARSUBTYPE,LONGSIZE描述分配缓冲区参数TYPE缓冲区的类型SUBTYPE缓冲区的子类型,只有VIEW有子类型,其他的缓冲区该参数要设为NULLLONG缓冲区的大小返回值成功返回一个指向所分配空间首地址的CHAR形指针,失败返回NULL。12TPREALLOCCHARTPREALLOCCHARPTR,LONGSIZE描述重新分配缓冲区参数PTR指向原缓冲区首地址的指针SIZE新缓冲区的大小返回值成功返回一个指向新分配空间首地址的CHAR形指针,失败返回NULL。13TPFREEVOIDTPFREECHARBUFPTR描述释放由TPALLOC或TPREALLOC分配的缓冲区参数BUFPTR指向要释放的缓冲区首地址的指针返回值无注意用TPALLOC,TPREALLOC分配的内存只能有TPFREE释放掉,不能用FREE14TPTYPESLONGTPTYPESCHARPTR,CHARTYPE,CHARSUBTYPE描述返回有PTR所指向的缓冲区的类型及子类型参数PTR指向要进行类型识别的缓冲区首地址的指针TYPE类型名SUBTYPE子类型名(只对VIEW类型有效)返回值0成功,1失败,错误号保存在全局变量TPERRNO中。2常用的FMLFML32操作函数21FALLOCFBFRFALLOCFLDOCCF,FLDLENV描述分配一块FML缓冲区参数FLDOCC该FML缓冲区的字段个数,FLDLEN该FML缓冲区的长度返回值成功返回一个指向该FML缓冲区首地址的指针,失败返回NULL,错误号保存在全局变量FERROR中注意该FML缓冲区不能用于TPCALL,TPACALL,TPRETURN等中,在这些函数中用到的FML缓冲区只能用TPALLOC分配。22FINITINTFINITFBFRFBFR,FLDLENBUFLEN描述初始化该FML缓冲区参数FBFR一个指向该FML缓冲区首地址的指针BUFLEN该FML缓冲区的长度返回值失败为1,错误号保存在全局变量FERROR中23FADDINTFADDFBFRFBFR,FLDIDFIELDID,CHARVALUE,FLDLENLEN描述往FML缓冲区FBFR中ID为FIELDID的字段增加一个值VALUE参数FBFR指向该FML缓冲区首地址的指针FIELDID要增加的字段的IDVALUE要增加的值,如果时其他类型的要转化为CHARLEN该字段的长度,如果不时CARRARY类型的,可设为0返回值失败为1,错误号保存在全局变量FERROR中24FCHGINTFCHGFBFRFBFR,FLDIDFIELDID,INTOCC,CHARVALUE,FLDLENLEN描述改变FBFR中ID为FIELDID字段的值。参数FBFR指向该FML缓冲区首地址的指针FIELDID要增加的字段的IDVALUE该字段的新值,如果时其他类型的要转化为CHARLEN该字段的长度,如果不时CARRARY类型的,可设为0返回值失败为1,错误号保存在全局变量FERROR中25FGETINTFGETFBFRFBFR,FLDIDFIELDID,INTOCC,CHARVALUE,FLDLENMAXLEN描述从FBFR缓冲区中取ID为FIELDID字段的值到VALUE中。参数FBFR指向该FML缓冲区首地址的指针FIELDID字段的IDVALUE取出的值保存到该指针指向的地址中MAXLEN可以COPY到缓冲区VALUE中的字符串的长度,返回值为真正COPY到该缓冲区的字符串的长度返回值失败为1,错误号保存在全局变量FERROR中25FPRINTFPRINTFBFRFBFR描述按格式打印FBFR缓冲区的内容。一般用于程序调试中。参数FBFR指向该FML缓冲区首地址的指针返回值失败为1,错误号保存在全局变量FERROR中26FERRORFERROR和C语言中的ERRNO类似,当调用FML(FML32)函数出错时,把错误号保存在全局变量FERROR中。CHARFSTRERRORINTERR描述返回错误号为ERR的错误描述参数ERRFERROR的值返回值成功返回错误描述,失败返回NULL3连接的建立与断开有关的ATMI31TPCHKAUTHINTTPCHKAUTH描述检查该TUXEDOSERVER所采用的安全方式参数无返回值TPNOAUTH不需要认证TPSYSAUTH需要口令认证TPAPPSUTH需要口令认证,并且还需要应用级的认证或授权1调用失败,错误号保存在全局变量TPERRNO中。32TPINITINTTPINITTPINITTPINFO描述与TUXEDOSERVER建立连接参数TPINFO返回值失败返回1,错误号保存在全局变量TPERRNO中。TPINIT结构体在ATMIH中的定义如下STRUCTTPINFO_TCHARUSRNAMEMAXTIDENT2/CLIENTUSERNAME/CHARCLTNAMEMAXTIDENT2/APPLICATIONCLIENTNAME/CHARPASSWDMAXTIDENT2/APPLICATIONPASSWORD/CHARGRPNAMEMAXTIDENT2/CLIENTGROUPNAME/LONGFLAGS/INITIALIZATIONFLAGS/LONGDATALEN/LENGTHOFAPPSPECIFICDATA/LONGDATA/PLACEHOLDERFORAPPDATA/TYPEDEFSTRUCTTPINFO_TTPINIT说明USERNAME,CLTNAME,PASSWD,GRPNAME,DATA,DATALEN用于安全认证中FLAGS用于定义以何种方式通知该客户端一个UNSOLICTEDMESSAGE的到来它的值可以为TPUSIGTPUDIPTPUIGNTPSAFASTPATHTPSAPROTECTED33TPTERMINTTPTERM描述断开与TUXEDOSERVER建立连接参数无返回值失败返回1,错误号保存在全局变量TPERRNO中。4与请求TUXEDOSERVER有关的ATMI41TPCALLINTTPCALLCHARSVC,CHARIDATA,LONGILEN,CHARODATA,LONGOLEN,LONGFLAGS描述客户端同步调用服务端的名为SVC的SERVICE,参数SVCSERVICE的名称CHARIDATA输入缓冲区的地址,客户端传给服务端的参数放在该缓冲区内LONGILEN输入缓冲区的长度CHARODATA输出缓冲区的地址,服务端传给客户端的结果放在该缓冲区内LONGOLEN输出缓冲区的长度LONGFLAGS调用标志,由以下几个TPNOTRAN如果调用SVC的客户端当前在TRANSACTION方式下,那么SVC不参与当前的TRANSACTION。TPNOCHANGE如果服务端返回的缓冲区类型与客户端定义的缓冲区ODATA类型不一致,默认情况下,ODATA会转换成与服务端返回的缓冲区类型一致的类型,如果设置了该FLAG,那么当出现这种情况时,不进行缓冲区类型转换,并且会保错。TPNOBLOCK默认情况下,如果客户端有阻塞条件存在(如CLIENT的TCP/IP中的缓冲区满,磁盘I/O忙等),那么客户端会阻塞在那里,直到阻塞消除或超时出错。如果设置了TPNOBLOCK,当客户端有阻塞条件存在时,TPCALL会立刻返回并报错注意TPNOBLOCK只对发送请求时起作用,如果在接收服务端返回的结果时有阻塞条件存在,客户端会在那里等待,直到阻塞消除或超时出错TPNOTIME如果客户端有阻塞条件存在,客户端会一直阻塞在那里,即使到了超时时间也不返回,但如果该客户端是在TRANSACTION模式下,当到了事务的超时时间,还是会报超时错误并返回。TPSIGRSTRT如果在进行系统调用时,被信号中断,该系统调用会重新进行。调用成功返回0,失败返回1,错误号保存在全局变量TPERRNO中。42TPACALLINTTPACALLCHARSVC,CHARDATA,LONGLEN,LONGFLAGS描述客户端异步调用服务端的名为SVC的SERVICE,不等服务端返回结果,程序可继续往下走,在某个地方调用TPGETRPLY取的服务端的返回参数CHARSVC,CHARDATA,LONGLEN参数的含义与TPCALL中的一样FLAGS可设置为TPNOTRAN,TPNOREPLY,TPNOBLOCKTPNOTIME,TPSIGRSTRTTPNOTRAN,TPNOBLOCKTPNOTIME,TPSIGRSTRT的含义与与TPCALL中的一样TPNOREPLY调用TPACALL()的客户端不想接收SEVER端的应答。如果设置了TPNOREPLY服务端不会给该客户端发送应答。返回值失败返回1,成功返回一个HANDLER,可作为TPGETRPLY的参数,用于取应答43TPGETRPLYINTTPGETRPLYINTCD,CHARDATA,LONGLEN,LONGFLAGS描述取出服务端对TPACALL()的应答。参数CDTPACALL()返回的HANDLERCHARDATA返回缓冲区的地址,服务端传给客户端的结果放在该缓冲区内LONGLEN返回缓冲区的长度FLAGS可以是TPNOBLOCK,TPNOTIME,TPSIGRSTRT,TPGETANY不管CD的值,从服务器的应答队列中取第一个可用的消息,TPNOCHANGE返回值失败返回1,错误号保存在全局变量TPERRNO中。44TPCANCELINTTPCANCELINTHANDLE描述如果当前的程序不处于事务模式中,取消对TPACALL()的应答,如果处于事务模式中,则不能取消对TPACALL()的应答,该调用会失败参数TPACALL()返回的HANDLER返回值失败返回1,错误号保存在全局变量TPERRNO中。45TPGPRIOINTTPGPRIO描述返回最近发送TPCALL,TPACALL或接收TPGETRPLY的一个消息的优先级参数无返回值1100消息的优先级,值越高,优先级越高失败返回1,错误号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 慢性胆囊炎和胆石症护理
- 精细化管理工具在护理中的应用
- 科室年度工作总结报告
- 房地产造价成本年终总结
- 2025年宁德招标采购从业人员考试(招标采购专业理论与法律基础初级)在线复习题库及答案
- 月子会所营养师年终总结:心血管与人文护理
- 2025法人代表劳动合同模板
- 广东省茂名市茂南区2023-2024学年高一下学期第一次月考化学考试题目及答案
- 护理不良事件报告制度
- 道路工程制图 第5版 课件 项目十二识读涵洞工程图234
- 冲压车间给员工培训课件
- 铝合金门窗安装流程
- 八年级上册数学课件综合与实践《哪个城市夏天更热》北师大版
- 过敏性鼻炎的症状和治疗方法
- 消防喷淋系统安装检验批质量验收记录(含内容)
- 社会保障学第一章
- 丁丁的一次奇怪旅行
- 煤仓作业规程
- 高大模板支撑体系安全检查验收表
- 测金属电阻率实验报告
- 安全监理危险源控制表(填写)
评论
0/150
提交评论