[转帖]Tuxedo的工作原理及Toupper功能讲解_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4390 | 回复: 0   主题: [转帖]Tuxedo的工作原理及Toupper功能讲解        下一篇 
mengyuanye
注册用户
等级:少校
经验:1413
发帖:108
精华:7
注册:2012-11-14
状态:离线
发送短消息息给mengyuanye 加好友    发送短消息息给mengyuanye 发消息
发表于: IP:您无权察看 2012-11-19 11:09:06 | [全部帖] [楼主帖] 楼主

BEA Tuxedo中间件应用初探

    本文以一个经典的例子(大写字母转换),主要介绍Tuxedo的工作原理及开发方法,以及Tuxedo应用程序的管理方法。

    随着中间件在大型应用系统中的日益普及,目前各类中间件充斥着市场,它们在银行、电信、金融等大规模关键事务领域中的整合各种异构平台、保证交易完整性等方面表现出了超强的能力。BEA Tuxedo就是其中一款著名的交易中间件,本文以一个经典的例子(大写字母转换),主要介绍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。 

1.Simpapp的服务程序

下面是服务程序simpserv.c的源代码: 

#include <stdio.h>
#include "atmi.h"


/ Tuxedo ATMI函数库的头文件 /

TOUPPER(TPSVCINFO rqst){
int i;
for(i=0;i<rqst->len-1;i++)


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域的长度。 

2.Simpapp的客户程序

客户程序Simpcl.c是服务调用的发起者,它从命令行接收参数,通过tpinit()调用连接到System/T,通过tpalloc()调用分配一个字符串类型的缓冲区,通过tpcall()调用请求TOUPPER服务,最后通过tpterm()调用退出System/T,下面是它的源代码: 

#include <stdio.h>
#include "atmi.h"
int main(int argc, char argv[]){
      char buf;
      long len;
      if(argc != 2) {
            (void) fprintf(stderr, "Usage: simpcl string\n");
            exit(1);
      }
      if (tpinit((TPINIT ) NULL) == -1) {
            (void) fprintf(stderr, "Tpinit failed\n");
            exit(1);
      }
      len = strlen(argv[1]);
      if((buf = (char ) tpalloc("STRING", NULL, len+1)) == NULL) {
            (void) fprintf(stderr,"Error allocating send buffer\n");
            tpterm();
            exit(1);
      }
      (void) strcpy(buf, argv[1]);
      if(tpcall("TOUPPER", buf, 0, &&buf, &&len, 0)==-1){
            (void) fprintf(stderr, "Can't send request to service TOUPPER\n");
            tpfree(buf);
            tpterm();
            exit(3);
      }
      (void) fprintf(stdout, "Returned string is: %s\n", rcvbuf);
      tpfree(buf);
      tpterm();
      return(0);
}


3.Simpapp的配置文件

除了客户和服务程序以外,Tuxedo还需要一个配置文件来对应用进行描述。配置文件由多个段组成,每个段定义由一个星号开始。下面是NT平台下simpapp的配置文件ubbsimple的内容,其中带下划线的部分需要根据机器的资源配置作适当修改。 

RESOURCES
IPCKEY 123456
MASTER NODE1
MODEL SHM
MACHINES
JQ LMID=NODE1
TUXDIR="G:\ProgramFiles\BEA Systems\Tuxedo"
APPDIR="G:\simpapp"
TUXCONFIG="G:\simpapp\tuxconfig"
GROUPS
GROUP1 LMID=NODE1 GRPNO=1
SERVERS
simpserv SRVGRP=GROUP1 SRVID=1 CLOPT="-A"
SERVICES
TOUPPER


TUXDIR指的是Tuxedo的安装路径,APPDIR指的是simpapp应用程序所在的目录,TUXCONFIG指的是simpapp的二进制配置文件,一般为%APPDIR%\tuxconfig。 

4.Simpapp的编译和运行

由于Buildclient和Buildserver没有编译能力,要编译Tuxedo应用程序时,还必须安装第三方的C语言编译器,在NT平台下推荐使用VC。步骤如下: 

⑴设置环境变量 

SET PATH=%PATH%; G:\Program Files\BEA Systems\Tuxedo\Bin
SET TUXDIR=G:\Program Files\BEA Systems\Tuxedo
TUXCONFIG=G:\simpapp\tuxconfig


⑵生成二进制配置文件 

tmloadcf -y ubbsimple


⑶编译客户程序 

buildclient -o simpcl.exe -f simpcl.c


⑷编译服务程序 

buildserver -o simpserv.exe -f simpserv.c -s TOUPPER


⑸启动服务程序 

tmboot -y


⑹运行客户程序 

simpcl "hello, JQ"


⑺关闭应用程序 

tmshutdown -y


5.管理Simpapp

通过tmadmin命令可以方便地管理服务程序。 




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论