Tuxedo入门学习

阅读数:137 评论数:0

跳转到新版页面

分类

C/C++

正文

一、概述

Tuxedo:Transaction for Unix has been Extended for Distributed Operation(分布式操作扩展之后的Unix事务系统)

Tuxedo是一个事务处理(TP)监督器(transaction processing monitor),它管理联机事务处理(OLTP)系统操作的事务。客户通过结构化查询语言(SQL)调用,或其它类型的请求,产生对服务器的请求。这个事务处理监督器确信,正确地进行了修改,以保证数据的完整性。这在一个事务可以改变多个位置的数据库的分布式数据库环境是非常重要的。这个事务处理监督器使用双阶段提交,以保证所有的数据库都已经接收和认可了这些数据的正确性。否则,这个数据库返回它的事务前状态

WTC WebLogic Tuxedo Connector
OLTP On-Line Transaction Processing 联机事务处理
OLAP On-Line Analytical Processing 联机分析处理
ATMI application-to-Transaction Monitor Interface 应用程序到事务监视器接口
DTP Distributed Transaction Processing分布式事务处理
MSSQ Mutile Server,Singal Queue

二、详述

1、TUXEDO采用三层结构的组件软件模型

(1) Client为第一逻辑层。实现用户交互和数据表示,向第二层的Server发请求,调用业务逻辑处理服务。

(2)Server组件中间层,这些组件由TUXEDO管理,实现业务逻辑服务,接收服务请求,并返回服务结果。

(3)第三层为资源管理器,比如像关系数据库。负责管理应用系统的数据资源

2、uxedo的核心子系统:

事务管理器 TM(Transaction Manager)

工作站 WorkStation

Domain

队列 Queue

3、Tuxedo与 WebLogic通过WTC互联:

通常用TUXEDO实现系统的核心业务,用WEBLOGIC做为系统扩展到web的平台,实现电子商务。由WEBLOGIC调用TUXEDO上的服务,需要在Tuxedo和Weblogic之间建立连接。

WTC不仅能让WEBLOGIC调用TUXEDO中的SERVICE,而且能让TUXEDO调用WEBLOGIC中的EJB。但WTC仅能实现这两个平台之间的互联。

Tuxedo与WebLogic之间通过Domain实现互联调用,Tuxedo与Weblogic分别代表两个TDOMAIN。

使用WTC时,Tuxedo方面要配置相应的Domain配置文件(dmconfig),指明本身以及weblogic所在Domain的IP和Port。

使用WTC时Weblogic方面要做的修改是:

    —在ClassPath中,加入jamti.jar所在的路径。

    —在weblogic的配置文件,bdmconfig.xml中,加入描述两个TDOMAIN的部分

在Tuxedo和weblogic启动相应服务后,weblogic通过client端调用相应ejb,再有该ejb调用tuxedo service。

4、Tuxedo应用开发:

开发TUXEDO C/S系统的必要步骤:

(1)设置环境变量,通常写在setenv.sh。

(2)编码,并编译客户端/服务端程序。

(3)编写/编译Tuxedo配置文件。

(4)启动服务。

(5)测试(功能测试、压力测试)。

开发TUXEDO C/S开发的:

开发Client涉及的API:

进程管理的API:

int tpinit(TPINIT *tpinfo)

负责将Client端连接到BB,使Client端可以进一步调用ATMI函数。

TPINIT参数是一个Tuxedo定义的结构,用以存放一些安全相关的数据(必须在tuxedo的配置文件中打开security选项)。否则,可以使用NULL。

tpinit,不能在server端中出现,否则tuxedo会产生TPEPROTO(协议错)这样一个错误。

 

int tpterm( )

客户端调用tpterm( )切断与应用的连接,结束了客户端的TUXEDO进程.

5、Clieng与Server之间的通讯接口:

Client通过ATMI提供的API,与Server之间进行通讯,调用Server提供的服务。

通讯主要分为两种方式:

        同步方式:采用同步通讯时,Client端在向Server端发出请求后就被阻塞,等待Server端的返回。

        同步通讯方式的API:

int tpcall( char  *svc,   char *idata,   long   ilen, char  **odata,  long   *olen,  long   flags)

Svc:调用的服务(service)名称

idata:指向输入数据缓冲区指针。

ilen:  输入数据的缓冲区大小。

odata:指向输出数据缓冲区指针的指针。

olen: 输出数据缓冲区的大小的指针。

flags:通讯控制标志。

        异步方式:采用异步方式时,Client端在发出请求后,可以继续其他的任务,需要结果时,使用API去获取response队列中的结果。

        异步通信方式的API

                  — int tpacall(char *svc, char *data, long len, longflags)

                  — tpacall 调用成功后返回一个整数,称为descriptor,client使用这个整数在以后的某个时间来获取结果。

ATMI提供tpgetrply( )来获取异步调用的结果

                  — int tpgetrply(int *cd, char **data, long *len, longflags)

                  — 参数cd ,就是存放tpacall返回descriptor的指针。

无论是tpcall、tpacall以及tpgetrply,在client端和server端都可以使用。

6、Server端开发涉及的API:

l tpreturn( ):在Tuxedo中,tpreturn用来代替常规的return函数,执行tpreturn后,server将回应的数据缓冲区返回请求的发起点,交出程序的控制权。

void tpreturn(int rval, longrcode, char *data, long len, long  flags)

rval :是返回的结果,通常是TPSUCCESS, TPFAIL,  TPEXIT。

   rcode:是用户自定义的返回值,用以进一步区分返回结果。

   data  :是返回结果缓冲区。len:是缓冲区长度。

flags : 结果返回的标志,通常都是0。

 

l tpsvrinit()和tpsvrdone()分别用来启动和关闭服务。

如果在server的代码中,不提供这两个函数,Tuxedo将使用缺省函数。

tpsvrinit()用tpopen()缺省打开RM连接。

tpsvrdone()用tpclose()关闭RM连接。

tpsvrinit()只在服务boot起来时执行一次。相应的tpsvrdone()也只在服务shutdown时执行一次。

 

最后欢迎大家访问我的个人网站: 1024s




相关推荐

第1章 认识对象 1.面向对象分析(object-oriented analysis,OOA)的主要任务是分析问题域中的对象、对象之间的关系,然后构造出该问题域的分析模型。分析模型必须简洁、明确地抽象

第一章 C++初步认识 C++对C的“增强”,表现在两个方面: (1)在原来面向过程的机制基础上,对C语言的功能做了不少扩展 (2)增加了面向对象的机制   面向对象和面向过程不是矛盾的,而是各有用途

有一种特殊的指针叫做成员指针,它们通常指向一个类的成员,而不是对象中成员的特定实例。 <span styl

C++标准每5年会有一个新版本,1998年的C++98、2003年的C++03、2007年的C++TR1、2011年的C++11. 转换操作符 static_cast 将一个值以符合逻辑的方式转型。这

组织和策略问题 第0条 不要拘泥于小节(了解哪此东本西不应该标准化) 编程规范不应施加个人喜好或者过时的做法。 第1条 在高警告级别干净利落地进行编译 高度重视警告:使用编译器的最高警告级别。应该要求

它的规则就是当编译器对无限定域的函数调用进行名字查找时,除了当前名字空间域以外,也会把<span style="colo

1、C++版本更迭 年份 C++标准 通用名 别名 标准编译选项 GNU扩展选项 1978 C with Classes - - - - 1998 ISO/IEC 14882:199

1、转换操作 (1)static_cast 将一个值以符合逻辑的方式转型。这个可以看作是“利用原值重建一个临时对象,并在设立初值时使用型别转换”。唯有当上述型别转换有所定义时,整个转换才会成功。 如:

一、概述 GCC一般包括预处理、编译、组装和链接。GCC的运行一般是调用命令gcc,在cross-compiling时使用machine-gcc或machine-gcc-version,在使用c++时

一、概念 所谓的预编译头文件就是把工程中不会经常改变的代码预先编译好放在一个文件里(通过是以.pch为扩展名Precompiled heade