tuxedo速成培训教材
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Tuxedo速成培训
@Copy Right 2004-2007,Shanghai Baosight Software Co.,Ltd. The document is created and modified by Baosight, All rights reserved by Baosight.
应用管理 资源管理(RM)
数
据 访 问
请求“Z”
交易管理
处理请求 “Y”“Z”
TUXEDO的C/S方案
公告牌 机器信息 服务信息 交易信息 客户端信息
1
客户端回应Q
服务请求Q
5
2
4
3
客户端 tpcall(...)
服务端
Tuxedo速成培训
• • • • • • Tuxedo及C/S结构介绍 Tuxedo应用的一个简单例子 客户端开发 服务端开发 应用配置 Tuxedo管理命令
同步通讯
客户端与服务端之间的同步通讯通过tpcall()这一ATMI函数调用完 成。函数tpcall()有6个参数: • 交易名 • 请求数据缓冲 • 请求数据缓冲的长度(仅缓冲类型为CARRY时需要) • 返回数据缓冲的地址。缓冲大小可以根据收到数据而改变。 • 返回数据缓冲大小的地址 • 标志量 标志量可以是以下值: • TPNOTRAN 如有交易不调用 • TPNOBLOCK 如有阻塞不等待 • TPNOTIME 愿意等待直到超时 • TPSIGRSTRT 系统中断信号在TUXEDO完成后再发布 出错返回-1,错误原因如下: • TPEINVAL 参数错误 • TPETRAN 交易相关错误 • TPETIME 超时
客户端开发过程
客户端程序的设计和实现可以被分成2部分考虑: – 用户处理过程 – TUXEDO功能部分 TUXEDO功能部分 ,利用TUXEDO的ATMI API调用实现: – 基本的TUXEDO调试技巧 (tperrno,tpstrerror,userlog) – TUXEDO进程管理(tpinit,tpterm) – 基本数据缓冲管理(tpalloc,tprealloc,tpfree) – 基本通讯(tpcall,tpacall,tpgetrply)
调试和错误处理
当调用ATMI出错时,返回值为-1,全局 变量tperrno被设值,该变量提供系统定义的 出错原因。函数tpstrerror()以此变量为参数, 返回错误的字符说明信息。 完整的错误号和文本错误信息存在于文 件$TUXDIR/include/atmi.h。 函数userlog()重定向输出文件为 ULOG.mmddyy。使用方法同printf()。该函数 每次输出都写硬盘,这样在系统失败时也能 保留调试信息。
–定义配置文件ubbconfig
ubbconfig, tmloadcf
tmboot
–启动Tuxedo –执行程序
Tuxedo速成培训
• • • • • • Tuxedo及C/S结构介绍 Tuxedo应用的一个简单例子 客户端开发 服务端开发 应用配置 Tuxedo管理命令
客户端在C/S模式中的作用
TUXEDO 应用的三个基本部分
• 客户端:提交交易请求
• 服务端:响应请求交易的服务 • 配置文件:描述机器信息、服务信息等
一个例子 (图示)
main () { main
()
void TOUPPER (TPSVCINFO *p) {
{
tpinit() p=tpalloc() tpcall(“TOUPPER”,p,0,&p,&l,0) tpfree(p) tpterm() return }
基本的C/S模式 • C/S系统是一种分布式系统,其特点是: 客户端提供用户界面、请求交易 服务端按交易组织,将结果返回客户端 交易是分散的、按需求的操作
可管理多层C/S模式
客户端进程 交易处理管理 服务进程 处理请求 “X”“Y” 名字服务 请求“X”
请求“Y”
通讯 交易控制
请求“X”
Tuxedo速成培训
• • • • • • Tuxedo及C/S结构介绍 Tuxedo应用的一个简单例子 客户端开发 服务端开发 应用配置 Tuxedo管理命令
TUXEDO是什么
• BEA TUXEDO是在企业、Internet 这样的分 布式运算环境中开发和管理三层结构的客户/ 服务器型关键任务应用系统的强有力工具。 它具备分布式事务处理和应用通信功能,并 提供完善的各种服务来建立、运行和管理关 键任务应用系统。开发人员能够用它建立跨 多个硬件平台、数据库和操作系统的可互操 作的应用系统。BEA TUXEDO是企业、 Internet 分布式应用中的基础主干平台。它提 供了一个开放的环境,支持各种各样的客 户、 数据库、网络、遗留系统和通讯方式。
一个例子(服务端)
#include <stdio.h> #include <ctype.h> #include “atmi.h” void TOUPPER (TPSVCINFO *rqst) { int i; for ( i=0;i<rqst->len-1;i++) rqst->data[i] = toupper(rqst->data[i]); tpreturn(TPSUCCESS,0,rqst->data,0L,0); }
数据缓冲管理
ATMI提供函数分配(tpalloc(),tprealloc())、释 放(tpfree())TUXEDO数据缓冲。应用负责将应用 数据填入缓冲。应用的数据类型和组织决定应该选择 何种数据缓冲。函数type()可以返回正在使用的数据 缓冲类型。 以下是TUXEDO基本的数据缓冲类型: • STRING 以空值结尾的单域字符数据。 • CARRAY 有长度定义的单域二进制数据, 不进行编、解码。使BBL了解BB中已经存在 请求 • VIEW 类似C的结构多域组织 • FML 无固定结构的自定义缓冲
进程管理
为了使客户端能够访问TUXEDO交易,客户端程序必须连接 TUXEDO应用并进行登记。这种管理性步骤在切断连接时也要类似执 行一次。API如下: int tpinit(TPINIT *tpinfo) 客户端通过调用tpinit()与应用连接,进行交互,有以下事件发生: • 调用安全接口检查客户端是否需要认证 • 连接BB,使进一步的ATMI函数得到信息 • 使BBL了解BB中已经存在请求 • 建立客户端消息队列使服务可以发回返回信息,系统可以送出 广播通知等 int tpterm() 客户端调用tpterm()切断与应用的连接,结束了客户端的TUXEDO 进程,该过程发生以下事件: • BB入口删除,使BBL知道客户端已经离开 • 客户端离开BB,客户端的信号量被移除
一个例子(建立应用)
• 建立一个TUXEDO应用,有以下关键步骤:
–确保环境变量设置正确
TUXCONFIG, PATH, TUXDIR, SHLIB_PATH, APPDIR, others„..
–编写client端和server端的代码,编译
buildclient, buildserver
• buildclient –f client.c –o client -w • buildserver –f simpserv.c –o simpserv –s TOUPPER
一个例子(服务端)
• 服务端:
– 包含TUXEDO系统头文件”atmi.h” – 象所有的TUXEDO交易函数一样,TOUPPER 不用直接返回任何值,所以返回类型为void – 从客户端收到的数据放在TPSVCINFO结构中, 是唯一的入参 – 交易处理… – 用tpreturn()将数据缓冲返回客户端
使用类型缓冲区
• 在Tuxedo系统中的所有通信过程都是通过类型缓 冲区来完成的,Tuxedo系统提供了大量的类型缓 冲区来供开发者使用。所有类型缓冲区都必须通 过Tuxedo的tpalloc(), tprealloc(), tpfree() 这些ATMI来分配回收。 • 统一定义的类型缓冲区可以使它们在跨越不同网 络、不同协议、不同CPU构架以及不同操作系统之 间得到统一的处理,这就使得开发者在分布式计 算环境中有效地避开了异构网络和异构计算机系 统带来的差异,把精力集中在商业逻辑的开发上。
一个例子(客户端)
• 应用程序包含TUXEDO系统的头文 件”atmi.h”,以便引用TUXEDO的函数和变 量定义。 • 客户端调用tpinit()连接应用 • 用tpalloc()分配一个STRING类型数据缓冲 • 将数据拷贝进缓冲 • 用tpcall()包含数据缓冲,向交易 “TOUPPER”发一个同步请求 • 调用tpterm()切断与应用的连接
ຫໍສະໝຸດ Baidu
ATMI
ATMI
tpreturn() }
}
一个例子(客户端)
#include "atmi.h" /* TUXEDO Header File */ main(int argc, char *argv[]) { char *buf ; long sendlen, rcvlen; int ret; if (tpinit((TPINIT *) NULL) == -1) { (void) fprintf(stderr, "Tpinit failed\n"); exit(1); } sendlen = strlen(argv[1]); if((buf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) { (void) fprintf(stderr,"Error allocating send buffer\n"); tpterm(); exit(1); } (void) strcpy(buf, argv[1]); ret = tpcall(”TOUPPER", (char *) buf, 0, (char **)&buf, &rcvlen, (long)0); if(ret == -1) { (void) fprintf(stderr, "Can't send request to service TOUPPER\n"); (void) fprintf(stderr, "Tperrno = %d\n", tperrno); tpfree(buf); tpterm(); exit(1); } (void) fprintf(stdout, "Returned string is: %s\n",buf); tpfree(buf); tpterm(); }
为了更好的了解客户端的所有任务以编写客户 端应用,有必要重新认识客户端在C/S模式中扮演 的角色。 – 首先,客户端是用户界面。当用户在系统上 用程序进行一次操作的整个过程就是一个客 户端过程。前端过程是对客户端的另一个描 述。客户端的首要任务就是获得执行操作应 该得到的数据。 – 一旦客户端得到了应有的信息,应该将数据 按服务能够识别并适合传输的格式打包。 – 然后,向服务端发送请求并等待回应。 – 收到回应数据后,将其按一定格式展现给终 端用户。
分布式系统的层次结构
• 分布式系统的主要层次:
– 用户界面:被分成表示管理和表示逻 辑。代表有主机框架的仿真终端; UNIX系统的X终端等;还包括Web浏 览器界面。 – 商业逻辑:包含应用逻辑和应用规则。 – 数据管理:分为数据访问逻辑(SQL) 和数据库管理。
基本的C/S模式
客户端模块 (可能包含逻辑处理) 服务端模块 (在数据库中包含逻辑处理)
一个例子(配置文件)
• 有关应用的信息,如可用交易,交易位置,应用范围等, 有必要集中管理于单一资源。事实上,这些信息被集中于 文件UBBCONFIG。该文件分7节,主要部分内容描述如 下:
– *RESOURCES节包含全局信息,如:标识公告牌位置的唯一键值 (IPCKEY),主控节点的名字(MASTER),应用类型 (MODEL),SHM表示是一个单节点应用。 – *MACHINES节包含节点信息,如:机器物理名,TUXEDO系统 位置(TUXDIR),服务程序位置(APPDIR),以及本文件的二 进制码文件名(TUXCONFIG)。 – *GROUPS节包含一些管理用信息,如设定服务或交易的分布式事 务处理。 – *SERVERS节包含需要启动的交易和其组信息等其他信息。 – *SERVICES节包含影响应用操作方式的的必要信息。本节列出的 交易都是需要特别配置的,如有特别的优先级,装入参数,数据 依赖路由等。
@Copy Right 2004-2007,Shanghai Baosight Software Co.,Ltd. The document is created and modified by Baosight, All rights reserved by Baosight.
应用管理 资源管理(RM)
数
据 访 问
请求“Z”
交易管理
处理请求 “Y”“Z”
TUXEDO的C/S方案
公告牌 机器信息 服务信息 交易信息 客户端信息
1
客户端回应Q
服务请求Q
5
2
4
3
客户端 tpcall(...)
服务端
Tuxedo速成培训
• • • • • • Tuxedo及C/S结构介绍 Tuxedo应用的一个简单例子 客户端开发 服务端开发 应用配置 Tuxedo管理命令
同步通讯
客户端与服务端之间的同步通讯通过tpcall()这一ATMI函数调用完 成。函数tpcall()有6个参数: • 交易名 • 请求数据缓冲 • 请求数据缓冲的长度(仅缓冲类型为CARRY时需要) • 返回数据缓冲的地址。缓冲大小可以根据收到数据而改变。 • 返回数据缓冲大小的地址 • 标志量 标志量可以是以下值: • TPNOTRAN 如有交易不调用 • TPNOBLOCK 如有阻塞不等待 • TPNOTIME 愿意等待直到超时 • TPSIGRSTRT 系统中断信号在TUXEDO完成后再发布 出错返回-1,错误原因如下: • TPEINVAL 参数错误 • TPETRAN 交易相关错误 • TPETIME 超时
客户端开发过程
客户端程序的设计和实现可以被分成2部分考虑: – 用户处理过程 – TUXEDO功能部分 TUXEDO功能部分 ,利用TUXEDO的ATMI API调用实现: – 基本的TUXEDO调试技巧 (tperrno,tpstrerror,userlog) – TUXEDO进程管理(tpinit,tpterm) – 基本数据缓冲管理(tpalloc,tprealloc,tpfree) – 基本通讯(tpcall,tpacall,tpgetrply)
调试和错误处理
当调用ATMI出错时,返回值为-1,全局 变量tperrno被设值,该变量提供系统定义的 出错原因。函数tpstrerror()以此变量为参数, 返回错误的字符说明信息。 完整的错误号和文本错误信息存在于文 件$TUXDIR/include/atmi.h。 函数userlog()重定向输出文件为 ULOG.mmddyy。使用方法同printf()。该函数 每次输出都写硬盘,这样在系统失败时也能 保留调试信息。
–定义配置文件ubbconfig
ubbconfig, tmloadcf
tmboot
–启动Tuxedo –执行程序
Tuxedo速成培训
• • • • • • Tuxedo及C/S结构介绍 Tuxedo应用的一个简单例子 客户端开发 服务端开发 应用配置 Tuxedo管理命令
客户端在C/S模式中的作用
TUXEDO 应用的三个基本部分
• 客户端:提交交易请求
• 服务端:响应请求交易的服务 • 配置文件:描述机器信息、服务信息等
一个例子 (图示)
main () { main
()
void TOUPPER (TPSVCINFO *p) {
{
tpinit() p=tpalloc() tpcall(“TOUPPER”,p,0,&p,&l,0) tpfree(p) tpterm() return }
基本的C/S模式 • C/S系统是一种分布式系统,其特点是: 客户端提供用户界面、请求交易 服务端按交易组织,将结果返回客户端 交易是分散的、按需求的操作
可管理多层C/S模式
客户端进程 交易处理管理 服务进程 处理请求 “X”“Y” 名字服务 请求“X”
请求“Y”
通讯 交易控制
请求“X”
Tuxedo速成培训
• • • • • • Tuxedo及C/S结构介绍 Tuxedo应用的一个简单例子 客户端开发 服务端开发 应用配置 Tuxedo管理命令
TUXEDO是什么
• BEA TUXEDO是在企业、Internet 这样的分 布式运算环境中开发和管理三层结构的客户/ 服务器型关键任务应用系统的强有力工具。 它具备分布式事务处理和应用通信功能,并 提供完善的各种服务来建立、运行和管理关 键任务应用系统。开发人员能够用它建立跨 多个硬件平台、数据库和操作系统的可互操 作的应用系统。BEA TUXEDO是企业、 Internet 分布式应用中的基础主干平台。它提 供了一个开放的环境,支持各种各样的客 户、 数据库、网络、遗留系统和通讯方式。
一个例子(服务端)
#include <stdio.h> #include <ctype.h> #include “atmi.h” void TOUPPER (TPSVCINFO *rqst) { int i; for ( i=0;i<rqst->len-1;i++) rqst->data[i] = toupper(rqst->data[i]); tpreturn(TPSUCCESS,0,rqst->data,0L,0); }
数据缓冲管理
ATMI提供函数分配(tpalloc(),tprealloc())、释 放(tpfree())TUXEDO数据缓冲。应用负责将应用 数据填入缓冲。应用的数据类型和组织决定应该选择 何种数据缓冲。函数type()可以返回正在使用的数据 缓冲类型。 以下是TUXEDO基本的数据缓冲类型: • STRING 以空值结尾的单域字符数据。 • CARRAY 有长度定义的单域二进制数据, 不进行编、解码。使BBL了解BB中已经存在 请求 • VIEW 类似C的结构多域组织 • FML 无固定结构的自定义缓冲
进程管理
为了使客户端能够访问TUXEDO交易,客户端程序必须连接 TUXEDO应用并进行登记。这种管理性步骤在切断连接时也要类似执 行一次。API如下: int tpinit(TPINIT *tpinfo) 客户端通过调用tpinit()与应用连接,进行交互,有以下事件发生: • 调用安全接口检查客户端是否需要认证 • 连接BB,使进一步的ATMI函数得到信息 • 使BBL了解BB中已经存在请求 • 建立客户端消息队列使服务可以发回返回信息,系统可以送出 广播通知等 int tpterm() 客户端调用tpterm()切断与应用的连接,结束了客户端的TUXEDO 进程,该过程发生以下事件: • BB入口删除,使BBL知道客户端已经离开 • 客户端离开BB,客户端的信号量被移除
一个例子(建立应用)
• 建立一个TUXEDO应用,有以下关键步骤:
–确保环境变量设置正确
TUXCONFIG, PATH, TUXDIR, SHLIB_PATH, APPDIR, others„..
–编写client端和server端的代码,编译
buildclient, buildserver
• buildclient –f client.c –o client -w • buildserver –f simpserv.c –o simpserv –s TOUPPER
一个例子(服务端)
• 服务端:
– 包含TUXEDO系统头文件”atmi.h” – 象所有的TUXEDO交易函数一样,TOUPPER 不用直接返回任何值,所以返回类型为void – 从客户端收到的数据放在TPSVCINFO结构中, 是唯一的入参 – 交易处理… – 用tpreturn()将数据缓冲返回客户端
使用类型缓冲区
• 在Tuxedo系统中的所有通信过程都是通过类型缓 冲区来完成的,Tuxedo系统提供了大量的类型缓 冲区来供开发者使用。所有类型缓冲区都必须通 过Tuxedo的tpalloc(), tprealloc(), tpfree() 这些ATMI来分配回收。 • 统一定义的类型缓冲区可以使它们在跨越不同网 络、不同协议、不同CPU构架以及不同操作系统之 间得到统一的处理,这就使得开发者在分布式计 算环境中有效地避开了异构网络和异构计算机系 统带来的差异,把精力集中在商业逻辑的开发上。
一个例子(客户端)
• 应用程序包含TUXEDO系统的头文 件”atmi.h”,以便引用TUXEDO的函数和变 量定义。 • 客户端调用tpinit()连接应用 • 用tpalloc()分配一个STRING类型数据缓冲 • 将数据拷贝进缓冲 • 用tpcall()包含数据缓冲,向交易 “TOUPPER”发一个同步请求 • 调用tpterm()切断与应用的连接
ຫໍສະໝຸດ Baidu
ATMI
ATMI
tpreturn() }
}
一个例子(客户端)
#include "atmi.h" /* TUXEDO Header File */ main(int argc, char *argv[]) { char *buf ; long sendlen, rcvlen; int ret; if (tpinit((TPINIT *) NULL) == -1) { (void) fprintf(stderr, "Tpinit failed\n"); exit(1); } sendlen = strlen(argv[1]); if((buf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) { (void) fprintf(stderr,"Error allocating send buffer\n"); tpterm(); exit(1); } (void) strcpy(buf, argv[1]); ret = tpcall(”TOUPPER", (char *) buf, 0, (char **)&buf, &rcvlen, (long)0); if(ret == -1) { (void) fprintf(stderr, "Can't send request to service TOUPPER\n"); (void) fprintf(stderr, "Tperrno = %d\n", tperrno); tpfree(buf); tpterm(); exit(1); } (void) fprintf(stdout, "Returned string is: %s\n",buf); tpfree(buf); tpterm(); }
为了更好的了解客户端的所有任务以编写客户 端应用,有必要重新认识客户端在C/S模式中扮演 的角色。 – 首先,客户端是用户界面。当用户在系统上 用程序进行一次操作的整个过程就是一个客 户端过程。前端过程是对客户端的另一个描 述。客户端的首要任务就是获得执行操作应 该得到的数据。 – 一旦客户端得到了应有的信息,应该将数据 按服务能够识别并适合传输的格式打包。 – 然后,向服务端发送请求并等待回应。 – 收到回应数据后,将其按一定格式展现给终 端用户。
分布式系统的层次结构
• 分布式系统的主要层次:
– 用户界面:被分成表示管理和表示逻 辑。代表有主机框架的仿真终端; UNIX系统的X终端等;还包括Web浏 览器界面。 – 商业逻辑:包含应用逻辑和应用规则。 – 数据管理:分为数据访问逻辑(SQL) 和数据库管理。
基本的C/S模式
客户端模块 (可能包含逻辑处理) 服务端模块 (在数据库中包含逻辑处理)
一个例子(配置文件)
• 有关应用的信息,如可用交易,交易位置,应用范围等, 有必要集中管理于单一资源。事实上,这些信息被集中于 文件UBBCONFIG。该文件分7节,主要部分内容描述如 下:
– *RESOURCES节包含全局信息,如:标识公告牌位置的唯一键值 (IPCKEY),主控节点的名字(MASTER),应用类型 (MODEL),SHM表示是一个单节点应用。 – *MACHINES节包含节点信息,如:机器物理名,TUXEDO系统 位置(TUXDIR),服务程序位置(APPDIR),以及本文件的二 进制码文件名(TUXCONFIG)。 – *GROUPS节包含一些管理用信息,如设定服务或交易的分布式事 务处理。 – *SERVERS节包含需要启动的交易和其组信息等其他信息。 – *SERVICES节包含影响应用操作方式的的必要信息。本节列出的 交易都是需要特别配置的,如有特别的优先级,装入参数,数据 依赖路由等。