Tuxedo使用总结.ppt_第1页
Tuxedo使用总结.ppt_第2页
Tuxedo使用总结.ppt_第3页
Tuxedo使用总结.ppt_第4页
Tuxedo使用总结.ppt_第5页
免费预览已结束,剩余11页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录,中间件概述 Tuxedo基本概念 Tuxedo的功能 Tuxedo的开发 一个简单的例子-服务端 一个简单的例子-客户端 一个简单的例子-配置文件 Tuxedo运行时体系 一个简单的例子-配置文件的补充说明 Tuxedo的开发,中间件概述,二层结构与三层结构,中间件概述,中间件的定义 处于应用软件和系统软件之间的一类软件,而非一种软件,或独立于硬件或数据库厂商的一类软件,或者是客户方与服务方之间的连接件,或者是需要进行二次开发的中间产品 中间件的分类 消息中间件 交易中间件 主要功能是管理分布于不同计算机上的数据的一致性,协调数据库处理分布式 事务,保障整个系统的性能和可靠性。交易中间件

2、的标准是由X/OPEN组织和ISO组织来制订的。实际上的标准是BEA Tuxedo。 对象中间件 对象中间件也具有交易中间件的功能,它是按面向对象的模式来组织体系结构,通过对象请求代理来实现交易处理。对象请求代理体系结构主要有3种:CORBA、EJB和COM+。,Tuxedo概述,Tuxdeo历史: 1983年在贝尔实验室开发出来,在AT export WSNADDR,一个简单的例子-服务端,下面以hello world程序为例,对tuxedo的应用开发来个感性认识: 服务端程序: 功能:服务端程序实现了一个名为TOUPPER的服务,它从客户程序接收一个字符串,将它转换成大写后,传回客户端。

3、代码: #include #include atmi.h /* Tuxedo ATMI函数库的头文件 */ #ifdef _cplusplus extern C #endif void #if defined(_STDC_) | defined(_cplusplus) TOUPPER(TPSVCINFO *rqst) #else TOUPPER(rqst) TPSVCINFO *rqst; #endif int i; for(i = 0; i len-1; i+) rqst-datai = toupper(rqst-datai); /* Return the transformed buffe

4、r to the requestor. */ tpreturn(TPSUCCESS, 0, rqst-data, 0L, 0); 补充:在三层结构中,把业务逻辑都放到中间层上,采用TUXEDO做中间件时,也就是放到TUXEDO的服务端上,在服务端把业务逻辑划分成一个个独立的服务(SERVICE),把多个服务按一定的规则绑定到一个SERVER中.客户端调用这些服务来实现相应的操作.所以服务端编程的主要任务就是编写一个个的服务(SERVICE)。,入口函数:就是一个普通的C函数,函数名就是服务名,唯一参数为TPSVCINFO指针,该结构体在atmi.h中的定义: struct tpsvcinfo

5、#define XATMI_SERVICE_NAME_LENGTH 32 char nameXATMI_SERVICE_NAME_LENGTH;/* service name invoked */ long flags; /* describes service attributes */ char *data; /* pointer to data */ long len; /* request data length */ int cd; /* reserved for future use */ long appkey; /* application authentication cli

6、ent key */ CLIENTID cltid; /* client identifier for originating client */ ; typedef struct tpsvcinfo TPSVCINFO;,一个简单的例子-客户端,客户端程序: 功能:首先与TUXEDO应用服务器建立连接,接着调用服务器上的TOUPPER服务,把用户在命令行的输入作为输入参数,调用成功后,从返回缓冲区中取出服务端返回的数据并显示,最后断开与TUXEDO应用系统的连接。 char *sendbuf, *rcvbuf; long sendlen, rcvlen; if (tpinit(TPINIT

7、*) NULL) = -1) (void) fprintf(stderr, Tpinit failedn); exit(1); sendlen = strlen(argv1); /* Allocate STRING buffers for the request and the reply */ if(sendbuf = (char *) tpalloc(STRING, NULL, sendlen+1) = NULL) (void) fprintf(stderr,Error allocating send buffern); tpterm(); exit(1); if(rcvbuf = (ch

8、ar *) tpalloc(STRING, NULL, sendlen+1) = NULL) (void) fprintf(stderr,Error allocating receive buffern); tpfree(sendbuf); tpterm(); exit(1); ,1、客户端首先调用此API,与TUXEDO SERVER建立连接,2、在Tuxedo中客户端与服务端之间进行数据交换的缓冲区,都要用Tuxedo自己提供的API进行操作,不能采用C函数(malloc、free),一个简单的例子-客户端,接上页代码 (void) strcpy(sendbuf, argv1); /* R

9、equest the service TOUPPER, waiting for a reply */ ret = tpcall(TOUPPER, (char *)sendbuf, 0, (char *) /end of main,3、客户端同步调用服务端名为TOUPPER的Service,4、对tpalloc分配的缓冲区资源进行释放,5、断开与服务端的连接,一个简单的例子-配置文件,Tuxdeo的配置文件: 除了客户和服务程序以外,Tuxedo还需要一个配置文件来对应用进行描述一个TUXEDO应用系统所包含的所有资源。下面修改过的UNIX平台下simpapp的配置文件ubbsimple的内容。

10、 *RESOURCES IPCKEY123496 DOMAINIDsimpapp MASTERsimple MAXACCESSERS150 MAXSERVERS100 MAXSERVICES200 MODELSHM LDBALN *MACHINES myserver LMID=simple APPDIR=/usr/users/tuxedo/apps/simpapp TUXCONFIG=/usr/users/tuxedo/apps/tuxconfig TUXDIR=/usr/users/tuxedo MAXWSCLIENTS=10 *GROUPS GROUP1 LMID=simpleGRPNO=

11、1OPENINFO=NONE *SERVERS DEFAULT: CLOPT=-A simpservSRVGRP=GROUP1 SRVID=1 WSL SRVGRP=GROUP1 SRVID=5 CLOPT=-A - -n /192.168.1.100:9999 -m2 -M6 -x10 *SERVICES TOUPPER,一个简单的例子-运行,生成二进制配置文件 tmloadcf -y ubbsimple 编译程序 编译服务端 buildserver -o simpserv.exe -f simpserv.c -s TOUPPER 编译客户端 buildclient -o simpcl.ex

12、e -f simpcl.c 启动tuxedo应用系统 tmboot y 运行客户端程序 simpcl hello, world 关闭应用系统 tmshutdown y,一个简单的例子-运行时体系,Tuxedo运行时体系,远程客户端的访问流程说明: 1:客户端调用tpinit(),与WLS建立连接。 2:服务端WSL进程给该WSC指定一个WSH:服务端将指定的WSH的端口返回给WSC,之后WSC断开与WSL的连接。 4:WSC通过tpcall请求TOUPPER服务 5:WSC将请求写入队列。 6:服务进程通过tpreturn将结果经WSH返回给WSC 本地客户端则访问不需要WSL和WSC的参与.

13、,一个简单的例子-配置文件的补充说明,配置文件中与客户端有关的配置 在MACHINES中要配置MAXWSCLIENTS,即最多可以有多少个远程客户端同时连接 到该服务器上。 在SERVERS中要配置SERVER:WSL WSL SRVGRP=GROUP1 SRVID=1116 CLOPT=-A - -n /10.4.120.69:8888 -m 2 -M 5 -x 6 CLOPT中可带的参数为: CLOPT= -A servopts_options - -n netaddr -d device -w WSHname-t timeout_factor-T Client_timeout -m mi

14、nh-M maxh-x mpx_factor -p minwshport-P maxwshport -I init_timeout-c compression_threshold -k compression_threshold -z bits-Z bits-H external_netaddr -N network_timeout-Kclient|handler|both|none 参数说明: -n netaddr: WSL的侦听端口,远程客户端通过该端口与服务器建立连接 -m minh : 最少启动多少个WSH进程 -M maxh: 最多启动多少个WSH进程,默认值为MAXWSCLIENT

15、S/m -x mpx_factor:每个WSH进程可以同时与多少个远程客户端建立连接 -c compression_threshold 如果在远程客户端与服务器之间传送的数据包大小(单位为字节)超过-c指定的参 数,就自动进行数据压缩, -T Client_timeout: 指定一个远程客户端的空闲时间,如果该远程客户端在client_timeout这么长的时间内没有做任何调用,WSH将断开与该远程客户端的连接。单位为分钟,如果没有指点该参数,那么WSH永远不会自动断开远程客户端的连接 -t timeout_factor: 指定远程客户端与WSH建立连接的时间,如果在-t指定的时间内还没有建立

16、连接,那么连接将失败。如果没有采用安全认证方式默认为3*SCANUNIT秒,。如果采用安全认证方式默认为6*SCANUNIT秒, -p minwshport-P maxwshport:指定WSH可以使用的端口范围: 如果远程客户端要跨越防火墙才能访问该TUXEDO应用系统,在WSL中要指定该参数,指定WSH可以使用的端口范围,并让防火墙允许访问这些端口。如果不指定,TUXEDO会根据系统端口的使用情况进行分配,而分配的端口防火墙不允许通过,造成CLIENT无法调用TUXEDO SERVER。如下面的设置指定WSH可用的端口范围为17010 17030。 WSLSRVGRP=GROUP1SRVI

17、D=1 CLOPT=-A - -n /133.101.6.26:17009 -m 10 -M 10 -x 10 -p 17010 -P 17030,另一个例子-服务端,这个例子模拟一个典型的业务场景:业务订购和订购关系查询。同样代码现行,然后铺开了解tuxedo的细节 服务端程序: 功能:服务端程序实现了两个服务:ORDER_ORDER(订购)和ORDER_QUERY(查询)。 部分代码: #if defined(_STDC_) | defined(_cplusplus) ORDER_ORDER(TPSVCINFO *rqst) #else ORDER_ORDER(rqst) TPSVCINF

18、O *rqst; #endif int i; RECORD grData; struct tuxView * view; view = (struct tuxView *)rqst-data; char sql1024 = 0; sprintf(sql,insert into T_ORDER_RELATION values (%s,%s,%s,sysdate),view-mdn,view-spid,view-productid); GetDBConn( ,MP方式-运行时体系,Tuxedo运行时体系,如果配置了MP方式,那么在这些服务器之间可以做负载均衡和容错,客户端可以和其中的任何一台服务器建立连接,如果该服务器上没有该客户端

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论