BEA Tuxedo应用程序开发指南

更新时间:2023-05-22 23:55:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

pingancapital,中间件,ppt,pdf,cics,tuxedo

pingancapital,中间件,ppt,pdf,cics,tuxedo

第一章 开发BEA Tuxedo应用程序

§1.1 开发前的思考

在开发BEA Tuxedo应用程序之前,你需要先搞清楚一系列和设计开发相关的概念,如识别什么是客户机,有哪些方法可以从外界收集数据并提交服务器进行业务处理;识别什么是服务器,哪些程序包容了可以处理客户机输入的商业逻辑;识别什么是类型缓冲区,客户程序在向其这程序发送数据前如何分配内存区域;什么是BEA Tuxedo的消息范例等。最后你还要弄明白客户程序是通过调用ATMI库来访问BEA Tuxedo系统的。

§1.2 创建BEA Tuxedo的客户程序

创建BEA Tuxedo的客户程序与在C和C++编程语言中创建其它应用程序一样,BEA Tuxedo提供了一个其于C语言的编程接口,即应用程序事务监控接口ATMI,这套接口很容易使用,以便用于开发客户程序和服务程序。除了C语言接口外,BEA Tuxedo还提供了COBOL接口。

客户程序的任务

客户程序一般执行如下任务:

. 调用tpchkauth()决定加入一个应用程序所需的安全级别。可能出现的响应包括:

没有安全级别,应用程序口令,应用程序授权,访问控制列表,连接级加密,公钥加密,审计。这些可以根据你的需求进行选择;

. 调用tpinit()来连接到一个BEA Tuxedo应用程序,所需的安全信息作为tpinit()

的参数传给了应用程序; . 执行服务请求;

. 调用tpterm()来断开和BEA Tuxedo

应用程序的连接。

pingancapital,中间件,ppt,pdf,cics,tuxedo

§1.3 创建的服务程序

尽管开发者使用ATMI编程接口来创建BEA Tuxedo客户程序和服务程序,但服务程序不全部由开发者来编写,开发者只需写一些称为服务的商业函数,然后和BEA Tuxedo的一些二进制程序联编成一个可执行的服务程序。BEA Tuxedo服务程序启动后,它总是保持运行状态,只到接收到一个shutdown消息为止。一个典型的BEA Tuxedo服务程序在shutdown或reboot之前都在执行着数千个服务。

服务程序的任务

. 在BEA Tuxedo服务程序启动时,执行tpsvrinit()函数,可以在里面打开一些如

数据库之类的资源供以后使用;

. 在BEA Tuxedo服务程序关闭时,执行tpsvrdown()函数,可以在里面关闭

tpsvrinit()中打开的资料;

. BEA Tuxedo服务程序以服务的形式来响应客户程序的请求,客户程序不是通过

名字来调用服务程序的,而是调用服务,客户程序不知道处理它请求的服务程序的位置;

. 服务程序调用tpreturn()函数来结束服务请求,并返回一个缓冲区,必要时,将

它传给客户程序;

§1.4 在应用程序中使用类型缓冲区

在Bea Tuxedo系统中的所有通信过程都是通过类型缓冲区来完成的,Bea Tuxedo系

pingancapital,中间件,ppt,pdf,cics,tuxedo

统提供了大量的类型缓冲区来供开发者使用。所有类型缓冲区都必须通过Bea Tuxedo的tpalloc(), tprealloc(), tpfree()这些ATMI

来分配回收,它们都有特定的头部。

统一定义的类型缓冲区可以使它们在跨越不同网络、不同协议、不同CPU构架以及不同操作系统之间得到统一的处理,这就使得开发者在分布式计算环境中有效地避开了异

构网络和异构计算机系统带来的差异,把精力集中在商业逻辑的开发上。

§1.5 在BEA Tuxedo应用程序中使用消息范例

1.BEA Tuxedo系统提供多种通信模式

.同步Request/Response模式; .异步Request/Response模式; .嵌套调用; .调用转发; .会话通信; .主动消息通告; .基于事件的通信; .基于队列的通信; .使用事务。

2. 同步的Request/Response模式

要进行同步调用,Bea Tuxedo客户程序使用ATMI函数tpcall()把一个请求送到服务程序,它不是通过名字来调用服务程序的,而是通过特定的服务来完成。客户程序要等到服务程序作出响应后才处理后面的工作,也就是说,它在收到服务程序的响应之前一直处于阻塞状态。

pingancapital,中间件,ppt,pdf,cics,tuxedo

3.异步Request/Response模式

要进行异步调用,客户程序必须调用两个ATMI函数:tpacall(3c)函数,用于请求一个服务;tpgetrply(3c)函数,用于取得服务程序的响应。客户程序在请求和响应之间要完

成特定任务时,可以采用这种模式。

4.使用嵌套调用

一个服务可以充当BEA Tuxedo客户程序,去调用其它BEA Tuxedo服务,换句话说,你请求的服务需要调用其它服务才能处理请求。BEA Tuxedo客户程序调用了服务X,等待它的响应,服务X调用服务Y后也处于等待状态,当服务X得到响应后,再给客户程序一个响应,这种机制的特点是效率高。

pingancapital,中间件,ppt,pdf,cics,tuxedo

5

.使用调用转发

在嵌套服务中,最里层嵌套服务可以直接给客户程序一个响应,没有必要按照调用栈逐级返回,这就使其它嵌套服务可以处理其它请求,当第一个服务是一个分发代理时,这种模式是非常有用的。在嵌套调用中,被客户调用的服务X使用tpforward(3c)函数把请求传给服务Y,服务X没有tpreturn(3c)函数。客户程序不用管请求是由谁来完成的,因此,转发调用对客户程序是透明的。

6.会话通信

会话通信适合于有多个缓冲区需要以有状态的方式在BEA Tuxedo客户程序和服务之

pingancapital,中间件,ppt,pdf,cics,tuxedo

间传递的场合。恰当地使用BEA Tuxedo的会话,因为参与会话的服务器在会话结束之前是不可用的。要完成会话通信,你的代码需要遵循如下步骤:

.客户程序使用tpconnect()启动会话;

.客户程序和服务使用tpsend()和tprecv()函数进行数据交换,一个特殊的标记指

示着当前由哪一方来控制着会话;

.当服务程序调用tpreturn()或tpdiscon()

函数时,会话正常终止。

7.主动消息通告

要处理服务器的消息通知,客户程序必须使用tpsetunsol()函数来创建一个消息处理器,要发送主动消息,BEA Tuxedo客户程序或服务程序可以调用tpnotify()来把消息传递给单个客户程序,也可以通过tpbroadcast()函数来把消息同时广播给多个客户程序。当客户程序收到主动消息后,BEA Tuxedo系统调用客户程序的主动消息处理器来处理。

在一个基于信号系统中,客户程序没有必要处理所有的主动消息,然而,在一个非信号系统中,客户程序必须使用tpchkunsol()函数来检查主动消息。当客户程序调用一个服务请求时,tpchkunsol()被隐含地调用。在调用tpnotify()时,如果你设置了tpack标记位,你将会收到一个请求通知。

pingancapital,中间件,ppt,pdf,cics,tuxedo

8.基于事件的通信

在基于事件的通信中,事件可以被发送到应用程序队列、LOG文件和系统命令。当BEA Tuxedo服务或客户程序调用tppost()函数时,任何一个BEA Tuxedo客户程序都可以使用tpsubscribe()函数订阅用户自定义事件;当BEA Tuxedo系统检测事件时,客户程序也可以订阅系统定义事件。当一个服务器死了,.SysServerDied事件就会被发布,它由BEA Tuxedo

系统自动完成,不需要应用服务器干预。

pingancapital,中间件,ppt,pdf,cics,tuxedo

9.基于队列的通信

应用程序开发指南

为了实现了和/Q系统的接口,BEA Tuxedo客户程序使用两个ATMI函数,使用tpenqueue()把消息放入队列空间,使用tpdequeue()来把消息从队列空间中取走。

下面演示了点对点异步消息机制。一个客户程序使用tpenqueue()函数将消息传给服务,响应队列和失败队列的名字可以作为参数包含在tpenqueue()调用中,由于在队列中的数据是持续的,因此,所有和排队消息相关的响应消息和失败消息都可以从相应的响应队列和失败队列中取得。客户程序可以使用缺省的排队顺利,即按放放顺利排队,先进先出;也可以改变排队规则,如把一个消息放在队列开始,或放到另一个队列前面。Tpenqueue()调用把消息送到TMQUEUE服务器,并被放入固定存储体中进行排队,然后给客户程序发送一个通知消息。队列管理器给消息分配一个标识符,使用它可以随时将消息踢出队列,也可以用于tpenqueue()中,指示将新消息紧挨着标识符标识的消息。在消息出队时,要出队消息的事务必须成功地提交。客户程序使用tpdequeue()

来使消息出队。

下面演示了消息被转发到另一个服务器。客户程序发出一个消息,要调用服务器上的X服务,X服务接收消息后,处理消息中的指令,然后把响应放入队列空间,客户程序再从队列空间中取出。排队系统对于服务来说是透明的,也就是说,不论服务请求是从队列发出的,还是通过tp(a)call发出的,服务都能接受。

pingancapital,中间件,ppt,pdf,cics,tuxedo

10.使用事务

要使用事务,应用程序开发者需要使用如下ATMI函数: .tpbegin(),用于开始一个事务;

.tpcommit(),开始一个二阶段提交处理; .tpabort(),产即终止事务。

任何放在begin,commit/abord之外的代码不包含事务中。在下面的例子中,客户程序打开了一个事务,请求了两个服务,并且提交了事务。因为服务请求是在事务开始和提

交之间完成的,所以两个服务的行为都被了事务记录。

pingancapital,中间件,ppt,pdf,cics,tuxedo

第二章 一个简单的Tuxedo应用程序simpapp

本章介绍了BEA Tuxedo的一个简单例子,用C语言编写的simpapp,它包含了一个客户程序和一个服务器,服务器只执行一个服务:从客户程序接收小写字母,将其转换成大写后,返回给客户程序。在使用这个例子之前,需要在系统中安装C语言编译器。

准备simpapp的文件和资源

在准备simpapp例子之前,系统中必须安装了BEA Tuxedo软件,而且要设置$TUXDIR环境变量,NT平台下为%TUXDIR%,并把%TUXDIR%\bin加到PATH中,最后还要确保你的工作目录要有写权限。完成这些工作后,请按如下步骤来准备simpapp程序:

. 复制simpapp所需要的所有文件,它们位于$TUXDIR/samples/atmi/simpapp

目录下; . 检查并编译客户程序; . 检查并编译服务程序; . 编辑并加载配置文件; . 启动应用程序; . 执行运行时应用程序; . 监视运行时应用程序; . 关闭应用程序。

完成这个例子后,你应该理解客户程序和服务器所执行的任务,根据你的环境编写一个配置文件,通过tmadmin检查应用程序的活动。同时,你应该理解BEA Tuxedo应用程序的基本组成部分:客户程序、服务器程序、配置文件,通过BEA Tuxedo系统的哪些命令来管理你的应用程序。

1.复制simpapp例子的相关文件

.创建目录:

mkdir simpdir cd simpdir

.设置并导出环境变量

TUXDIR=BEA Tuxedo系统的根目录,如UNIX系统下可以设置为:

TUXDIR="/usr/tuxedo",NT系统下可以设置为:

TUXDIR="G:\Program Files\BEA System\Tuxedo"

TUXCONFIG=当前工作目录加上/tuxconfig,如UNIX系统下可以设置为: TUXCONFIG="/usr/me/simpdir/tuxconfig",NT系统下可以设置为: TUXCONFIG="G:\simpdir\tuxconfig" PATH=$PATH:$TUXDIR/bin

pingancapital,中间件,ppt,pdf,cics,tuxedo

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TUXDIR/lib

export TUXDIR TUXCONFIG PATH LD_LIBRARY_PATH

TUXDIR和PATH用于访问BEA Tuxedo系统的文件和执行命令,在Sun Solaris系统中,必须把/usr/5bin放在PATH中的第一个,在RS6000中的AIX上,将LD_LIBRARY_PATH替换成LIBPATH,在HP9000中的HP-UX上,将LD_LIBRARY_PATH替换为SHLIB_PATH。

设置TUXCONFIG的目的是用于加载配置文件。

.复制simpapp文件,

cp $TUXDIR/samples/atmi/simpapp/* . .查看文件

$ls

README env simpapp.nt ubbmp wsimpcl

README.as400 setenv.cmd simpcl.c ubbsimple README.nt simpapp.mk simpserv.c ubbws 文件说明:

simpcl.c客户程序的源代码 simpserv.c服务程序的源代码

ubbsimple应用程序配置文件的纯文本形式

2.检查并编译客户程序

.检查客户程序

pingancapital,中间件,ppt,pdf,cics,tuxedo

应用程序开发指南

pingancapital,中间件,ppt,pdf,cics,tuxedo

应用程序开发指南$buildclient -o simpcl -f simpcl.c

-o指明输出目标文件名,-f指出源文件名

3.检查并编译服务程序

.检查服务程序

pingancapital,中间件,ppt,pdf,cics,tuxedo

应用程序开发指南 .编译服务器

$buildserver –o simpserv –f simpserv.c –s TOUPPER –s TOUPPER指明了在服务器启动时需要提供的服务

4.编辑并加配置文件

pingancapital,中间件,ppt,pdf,cics,tuxedo

应用程序开发指南

$ tmloadcf ubbsimple

Initialize TUXCONFIG file: /usr/me/simpdir/tuxconfig [y, q] ? y $

5.启动应用程序

.执行tmboot启动应用程序 simpapp服务程序,它等待着处理请求。

6.如何执行运行时应用程序

$ simpcl “hello, world”

Returned string is: HELLO, WORLD

pingancapital,中间件,ppt,pdf,cics,tuxedo

7.如何监视运行时应用程序

应用程序开发指南

作为管理者,你可以使用tmadmin命令解释器来检测一个应用程序,并作一些动态的改变,要运行该命令,你必须设置TUXCONFIG环境变量。tmadmin可以解释超过50个命令,要看完整的列表,请看tmadmin(1),这里我们使用了两个tadmin命令。 .输入如一命令: $tmadmin

.输入printserver(psr)命令,显示:

.输入printservice(psc)命令,显示:

8.如何关闭应用程序

pingancapital,中间件,ppt,pdf,cics,tuxedo

应用程序开发指南$ 113837.tuxmach!tmloadcf.10261:

CMDTUX_CAT:879: A new file system has been created. (size = 32 4096-byte blocks) 113842.tuxmach!tmloadcf.10261: CMDTUX_CAT:871: TUXCONFIG file /usr/me/simpdir/tuxconfig has been created 113908.tuxmach!BBL.10768: LIBTUX_CAT:262: std main starting 113913.tuxmach!simpserv.10925: LIBTUX_CAT:262: std main starting 113913.tuxmach!simpserv.10925: Welcome to the simple server 114009.tuxmach!simpserv.10925: LIBTUX_CAT:522: Default tpsvrdone() function used. 114012.tuxmach!BBL.10768: CMDTUX_CAT:26: Exiting system

作者:经乾

邮件:jq75@

第 18 页 共 38 页

pingancapital,中间件,ppt,pdf,cics,tuxedo

第三章 一个完整的Tuxedo应用程序bankapp

bankapp是BEA Tuxedo系统提供一个简单的银行应用程序,它完成如下功能:打开和关闭账号,查询账号余额,存款和取款,账号之间转账。

§3.1 熟悉bankapp的文件

BEA Tuxedo系统提供了一个演示数据库,bankapp例子中有很多个地方使用了命令

pingancapital,中间件,ppt,pdf,cics,tuxedo

应用程序开发指南

§3.2 检查bankapp的客户程序

1.bankclt.c文件

它是一个基于文本的客户,提供了:余额查询、取款、存款、转账、打开账号、关闭、号、退出程序等几大功能。除退出应用程序以外,每一个选项都调用了一个执行如下功能的例程:

.通过get_account(), get_amount(), get_socsec(), get_phone(), get_val()函数从

键盘获得用户输入。

.将值存入一个全局的FML缓冲区(*fbfr),有些函数需要更多的字段,需要根据服

务器所需的信息来确定。

.通话通过do_tpcall()函数调用BEA Tuxedo系统服务,下面列出了一些函数和服

务。

pingancapital,中间件,ppt,pdf,cics,tuxedo

应用程序开发指南

本文来源:https://www.bwwdw.com/article/6mh4.html

Top