如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
TUXEDO服务端开发介绍中海集团资金结算管理系统采用了三层体系结构,具有良好的稳定性,安全性.系统数据集中管理,易于维护.柜面应用程序采用C/S结构,前台界面采用Delphi开发工具,界面具有易于操作,方便快速录入等特点.交易中间件采用tuxedo,保证了前后台数据的交互,队列管理,事务处理.业务逻辑采用C语言开发.这里,我向大家介绍一下TUXEDO服务器端开发:一,服务的运行流程为了更好的了解服务端的所有任务以编写服务端应用,有必要重新认识服务端在C/S模式中扮演的角色.首先,服务是系统资源的联系点.例如,一个数据库服务联系实际数据库并对其进行查询和修改.为有效进行,应建立一个数据库连接.其次,服务必须发布系统内可以访问的交易,保证客户端可以知道把请求发往何处.以上两步结束后,服务进入一个循环——接收请求,处理请求并返回结果.接收请求ń胂⒍恿?得到交易请求.处理请求包括检查请求数据缓冲,运行商业规则和逻辑,可能还包括访问数据库和返回结果数据缓冲.当系统管理员需要关闭系统,可以通过系统管理工具将关闭系统的消息发给服务.服务完成所有交易,取消交易发布,关闭资源连接然后结束.打开资源tmboot发布交易数据库资源客户端请求交易请求处理请求No到客户端发出回应取消发布的交易关闭?Yes关闭资源二,返回控制接下来,我们说说返回控制.在一般的C程序中,函数通过调用return()将控制返回,函数调用堆栈清空,控制返回调用点.TUXEDO系统的交易函数必须结束于将回应返回给客户端或前转到另一交易.函数tpreturn()用来结束交易将回应数据缓冲发给客户端.函数tpforward()将交易前转给另一个交易,由其负责回应原来的客户端.tpreturn()设计来代替常规的return(),结束绝大多数函数.它将回应数据缓冲返回请求的客户端,控制权返回给服务程序的标准main()(由TUXEDO提供).tpreturn()使用下列参数:第一个值表示交易是否成功,有3种可能:TPSUCCESS生成TPFAIL交易失败,tperrno将被设成TPESVCFAIL.如果是事务交易完全成功,如果是一个会话,TPEV_SVCSUCC被模式,事务被标志成abort-only,如果是会话,TPEV_SVCFAIL被生成.TPEXIT与TPFAIL类似,但服务会中断,如果服务设成可以重启动,则可以由TUXEDO系统将其重启动.第二个值是应用定义返回码,此处使交易可以发送一个整形代码到客户端,给出交易处理结果的详细信息.该值与/T系统无关,通过全程变量tpurcode送到客户端程序.第三个值是回应数据缓冲的的指针第四个值是回应数据缓冲的长度(仅缓冲类型为CARRY时需要)第五个值是标志位,通常不用下图是tpreturn()的示意图.服务端过程客户端过程tpcall();交易函数体tpreturn();tpreturn(TPSUCCESS,0,t->data,0,0);三,初始化和结束服务tpsvrinit()和tpsvrdone()分别用来启动和关闭服务.如果应用不提供这两个函数,可以使用替代函数.tpsvrinit()用tpopen()缺省打开RM连接.tpsvrdone()用tpclose()关闭RM连接.tpsrvinit()象标准C语言的main()一样使用参数argc,argv.服务的命令行参数可以传入该函数,被getopt()解析.该部分的用法参见应用配置部分.本函数出错时返回-1,成功返回0.tpsvrdone()无参数,无返回值.四,创建服务当C语言的交易程序编码完后,需要连接正确的库并编译.使用buildserver可以使该过程容易一点.该命令引用了C语言编译器并按正确的次序连接TUXEDO系统的库,连接TUXEDO生成的main()等.buildserver还用-s参数产生合适的交易名/函数名映射表.要使用buildserver,必须先正确设定环境变量TUXDIR,PATH,LD_LIBRARY_PATH.命令语法如下:buildserver[-v][–oexecutable][-sservice2,service3:func][-fsource/object][-lobject/libraryfile]参数解释如下:-o生成的可执行文件名-f需要在连接TUXEDO库之前传给编译器的文件名.如有多于一个的文件名,名字应用空格分隔并用引号引起.也可以使用多个-f参数.-l需要在连接TUXEDO库之前传给编译器的文件名.语法同上.-v编译过程显示.-b指定SHM或MP模式.如无此项,两种模式都包括;使用此项可以使生成的可执行文件小一点-r连接此处指出的RM库.该R