一、 课程目标
通过本课程学习,你可以掌握如下知识:
掌握tuxedo中STRING类型buffer的用途
掌握tuxedo中CARRAY类型buffer的用途
掌握tuxedo中FML(FML32)类型buffer的用途
掌握tuxedo中VIEW(VIEW32)类型buffer的用途
注:后续的课程将介绍Tuxedo新增的数据类型:EFML(Embedded Record in FML)、XML Buffer
二、 String类型buffer介绍
(1)STRING类型buffer简介
STRING类型buffer是主要用于面向行、变长度的文本信息类型buffer。STRING类型buffer要求必须以NULL作为结束符的。如果
系统采用STRING类型,那么在配置ubbconfig文件时,必须在*MACHINE部分配置TYPE,指明buffer类型为STRING类型。在
两种不同类型架构的机器进行buffer传输时候,TUXEDO对STRING类型buffer进行加码、解码过程。无论系统申请了多少长度的
buffer,系统自动按着NULL所在的位置决定STRING类型的buffer长度。
(2)STRING类型buffer如何申请
char *SndBuf;
SndBuf = (char *) tpalloc("STRING",NULL,1024)
(3)STRING类型使用方法和调用方法
strcpy(SndBuf,"Bea Tuxedo");
tpcall("TOUPPER",SndBuf,0,&RcvBuf,&len,0);
三、 CARRAY类型buffer介绍
(1)CARRAY类型buffer简介
CARRAY类型buffer是一种独立于机器的buffer类型。用户在使用时必须指定CARRAY类型数据的长度,CARRAY类型数据可以包含
NULL字符。CARRAY类型数据不需要加、解码过程。CARRAY类型数据可以用来传输汉字、二进制数据、文件、图形等。CARRAY类型可以作为
FML(FML32)、VIEW(VIEW32)的数据类型子项buffer。
(2)CARRAY类型buffer如何申请
tpalloc("CARRAY",NULL,1024*2)
(3)CARRAY类型使用方法和调用方法
四、 VIEW(VIEW32)类型buffer介绍
(1)VIEW类型buffer简介
Tuxedo使用VIEW类型buffer处理类似C语言的结构等数据类型复杂数据。使用VIEW类型buffer可以将各数据元素与一种结构数据类型结合,通过结构就可以访问各数据元素。VIEW类型数据即使没有没有数据也占用空间,结构发生变化,需要重新编译程序。
注明:(VIEW类型buffer是16位寻址的,VIEW32是32位寻址的.)
(2)VIEW类型buffer使用方法
使用VIEW类型数据步骤:
建立VIEW文件
设置环境变量
编译VIEW文件
在代码中包含VIEW头文件,在程序中使用VIEW结构及API函数
编译程序
运行程序
(1)建立VIEW文件
VIEW user
$ /* VIEW structure for user information */
#type
cname
fbname count flag size null
long
count COUNT 1
-
- “”
0
float
sumfee SUMFEE
1
-
-
0.0
string usrname USRNAME 1
-
80
“”
short
num
NUM
1
-
-
0
END
|
(2)设置环境变量
/* view文件存放路径,使用冒号分割(NT用分号)*/
VIEWDIR=$APPDIR/inc
/* 用逗号分割的二进制view文件 */
VIEWFILES=user.V
export VIEWDIR VIEWFILES
(3)编译VIEW文件
使用viewc(viewc32)编译view文件
$viewc -n user.v
view命令简介:
viewc [-n] [-d viewdir] viewfile [viewfile ...]
或者:
viewc32 [-n] [-d viewdir] viewfile [viewfile ...]
[-d viewdir]:指定输出文件的路径(默认在当前目录下)
[-n]:指定在编译view结构类型数据不产生FML buffer数据结构
(4)view编译后生成的头文件
struct user {
/* VIEW structure for user information */
long
count;
float
sumfee;
char
usrname[80];
short
num;
};
|
(5)VIEW类型buffer的使用
struct user *pszUser;
pszUser=(struct user *)tpalloc("VIEW"," user",sizeof(user));
…………………
pszUser ->count = 1680;
pszUser ->sumfee = 198.96;
strcpy(pszUser->usrname,"Wsy");
pszUser->num = 160;
…………………
tpcall("PSVC",(char *)pszUser,0,(char **)&pszUser,&rcvlen,0);
…………………
五、 FML(FML32)类型buffer介绍
(1)VIEW类型buffer简介
FML类型buffer允许存取多个命名的字段。例如:(NAME: "BEA",ADDRESS "China Beijing",PHONE "010-85281188")。每一个命名的字段可以在buffer中存放零个或更多个(occurrences)的值.
注明:(FML类型buffer是16位寻址的,FML32是32位寻址的.)
(2)FML支持的数据类型:
Short
Char
Long
Float
Double
String
Carray
(3)FML类型buffer使用方法
使用FML类型数据步骤:
建立FML文件
设置环境变量
编译FML文件
在代码中包含FML头文件,在程序中使用FML API函数
编译程序
运行程序
(1)建立FML Field Table文件
*base 1000
# name
number type flags comments
COUNT
1
long
-
-
SUMFEE
2
float
- -
USRNAME 3
string -
-
NUM
4
short
-
-
|
(2)设置环境变量
set FLDTBLDIR32="c:\tuxedo\wsy"
set FIELDTBLS32=user.fld
其中:
FLDTBLDIR(FLDTBLDIR32):指明Field Table文件的名字,多个用逗号分割
FIELDTBLS (FIELDTBLS32):Filed Table文件的所在路径,多个用冒号分割,在WinNT系统中使用分号分割.
(3)编译FML Field Table文件
使用mkfldhdr(mkfldhdr32)编译Field Table文件
$mkfldhdr32 user.fld
(4)FML Field Table编译后生成的头文件
/*
fname
fldid
*/
/*
-----
-----
*/
#define
COUNT
((FLDID32)33555433)
/* number: 1001
type: long */
#define
SUMFEE
((FLDID32)100664298)/* number: 1002
type: float */
#define
USRNAME
((FLDID32)167773163)/* number: 1003
type: string */
#define
NUM
((FLDID32)1004)
/* number: 1004 type: short */
|
(5)FML类型buffer的使用
FBFR32 *SndBuf;
SndBuf = (FBFR32 *)tpalloc("FML32",NULL,1024);
…………………
lCount = 1680;
Fchg32(SndBuf, COUNT,0,(char *)&lCount ,0);
fSumFee = 198.96;
Fchg32(SndBuf, SUMFEE, (char *)&fSumFee,0);
Strcpy(sUsrName , "wsy");
Fchg32(SndBuf, USRNAME, (char *)sUsrName,0);
iNum = 160;
Fchg32(SndBuf, SUMFEE, (char *)&iNum,0);
…………………
tpcall("PSVC",(char *) SndBuf,0,(char **)& SndBuf,&rcvlen,0);
Fget32(SndBuf, COUNT,0, (char *)&lCount ,0);
Fget32(SndBuf, USRNAME,0, (char *)sUsrName,0);
…………………
注:FML和VIEW类型buffer的API函数在后续的文章有详细的介绍和代码分析.
225633.ahxzyy2!rtmgr.200716.1.0: 06-03-2007: Tuxedo Version 8.1, 64-bit
225633.ahxzyy2!rtmgr.200716.1.0:
LIBTUX_CAT:328:
ERROR:
No
space
in Bulletin Board for Service Table
225633.ahxzyy2!rtmgr.200716.1.0: LIBTUX_CAT:248: ERROR:
System init function failed, Uunixerr = : msgctl: Error 0
225633.ahxzyy2!tmboot.606478.1.-2: CMDTUX_CAT:825: ERROR:
Process rtmgr at h8020 failed with /T tperrno (TPEOS - operating system error)
解决方案:调解参数MAXSERVICES
-t : 匹配C/S之间版本兼容问题(eg:6.5的client联8.1的server,就要配置)
-n : 使用iport方式
-m : 最少启动WSH的个数
-M : 最大启动的WSH的个数
-x : 每个WSH可以处理的请求数 ( M*x=maxwsclients )
-T : 在与SERVER建立联接后,如果超过-T设置的时间没有活动的事物,就会自动短开连接(单位:分钟)
ULOG里报错如下:
132223.hpl1!tmadmin.3526.1.-2: LIBTUX_CAT:334: ERROR: No BBL
132313.hpl1!BBL.3538.1.0: 03-25-2003: Tuxedo Version 7.1
132313.hpl1!BBL.3538.1.0: gtrid x0 x3e7aa463 x10333: LIBTUX_CAT:328: ERROR: No space in Bulletin Board for Transaction Table
132313.hpl1!BBL.3538.1.0: gtrid x0 x3e7aa463 x10333: LIBTUX_CAT:397: ERROR: Cannot allocate entry on GTT 字串9
解决方案:
假如BBL启动失败是因为事务Transaction Table不能在BB中再分配空间时,处理方法如下:
a. 备份相应的事务日志 TLOG : cp TLOG TLOG***
b. 删除事务日志TLOG: rm TLOG
c. 使用tmadmin登录到tuxedo系统中重新建一个日志设备,方法如下:
$tmadmin
>crdl -b 1000 -z//tuxedo/newweb/TLOG
>crlog -m newweb
recordcount = Foccur32(recebuf, fieldname)
recebuf是server端接收的fml32缓冲区, fieldname是FLDID32类型表示的具体的缓冲区中的一列.
Fget32(recebuf, fieldname, 80, str_detail, 0);
str_detail就是取出来的数据
分享到:
相关推荐
《深入理解Tuxedo:企业级事务处理系统详解》 Tuxedo,全称为Transaction ...通过阅读和研究提供的“tuxedo课件”和“tuxedo培训资料”,你可以系统地掌握Tuxedo的相关知识,提升你在企业级应用开发中的专业技能。
BEA Tuxedo应用程序开发指南.doc BEA TUXEDO快速入门.doc BEA Tuxedo的七种通信方式⑴.doc BEA Tuxedo的七种通信方式⑵.doc Tuxedo 技术文档.pdf tuxedo培训教程.doc Tuxedo常用函数说明ATMI.doc Tuxedo应用开发指南...
《TUXEDO与其他系统的互连深度解析》 在IT领域,TUXEDO作为一个高性能、高可用性的分布式事务处理系统,一直以来都是企业级应用的重要选择...理解并熟练掌握这些知识点,对于提升企业级应用的性能和可扩展性至关重要。
【Tuxedo8.1】是一款由Oracle公司开发的企业级交易处理系统,主要应用于构建分布式、高可用性的大型企业应用。这款产品以其高效、可靠和可扩展性著称,尤其在金融、电信等行业中有着广泛的应用。在Windows平台上安装...
下面是 Linux 系统下 Tuxedo 安装指导借鉴的知识点总结: 一、安装准备 * 在 Linux 环境中新建一个用户 tuxedo/tuxedo,並下载支持该 Linux 系统的 Tuxedo 软件包。 * 将软件包传到该用户的目录下,并执行安装命令...
**BEA Tuxedo 管理手册** BEA Tuxedo 是一款强大的交易中间件,主要用于构建高可用性、高性能的企业级分布式应用系统。它提供了事务处理监控器(Transaction Processing Monitor, TPM)功能,确保在分布式环境中...
总之,Tuxedo是企业级分布式应用的重要支撑,理解和掌握Tuxedo的相关知识对于从事系统架构、软件开发和运维工作的人来说是极其有价值的。通过提供的教程和常见问题解答,学习者可以深入理解Tuxedo的工作机制,提升在...
"TUXEDO快速入门" TUXEDO是一个强有力的工具,用于开发和管理三层结构的客户端/服务器型关键任务应用系统。它提供了一个开放的环境,支持各种各样的客户端、数据库、网络、遗留系统和通讯方式。TUXEDO的主要特点...
### 基于IPC机制浅析Tuxedo及其应用 #### 摘要 本文旨在通过探讨基于进程间通信(IPC)机制的Tuxedo中间件及其应用,从而揭示其强大的功能背后的运作原理。通过结合UNIX核心系统参数与ATMI技术,并借助`ipcs`工具...
### Tuxedo系统管理知识点详解 #### 一、Tuxedo简介 Tuxedo是由BEA Systems公司开发的一款中间件产品,主要用于构建大型分布式事务处理系统。它支持跨平台运行,能够提供高性能、高可靠性的服务。Tuxedo在银行、...
【Tuxedo快速入门】 Tuxedo,全称为Transaction Processing Facility for UNIX,是Oracle公司推出的一款面向服务架构(SOA)的企业级...通过理解并掌握这些知识点,开发者可以构建出高效、可靠的分布式应用程序。
在安装BEA TUXEDO时,需要对这些知识点有深入的理解,以确保系统的正确配置和高效运行。安装过程中,要仔细阅读安装手册,遵循步骤进行,同时注意配置文件的正确设置和管理工具的使用,以确保TUXEDO能够顺利集成到...
### Tuxedo FML编程手册详解 #### 一、引言 《Tuxedo FML编程手册》是一本关于如何使用Tuxedo系统中的FML(Function Macro Language)语言进行编程的指导书籍。该手册针对的是Tuxedo 8.1版本,并且出版于2003年1月...
【标题】:“Tuxedo”——企业级分布式应用服务框架 【描述】:Tuxedo,全称为Transarc TUXedo,是由AT&T的Transarc公司开发的一种企业级的分布式应用服务框架。它是一个高性能、高可靠性的中间件,主要用于构建和...
在提供的“lic.rar_licence.lic_tuxedo 8.1 licen_tuxedo_l_tuxedo licence_t”这个压缩包中,核心内容似乎是与TUXEDO 8.1版本的授权许可相关的。"licence.lic"文件通常是软件授权文件,用于验证用户对软件的合法...
《Tuxedo详细安装步骤与Oracle数据库连接》 Tuxedo,一款由Oracle公司开发的分布式事务处理中间件,常用于构建大型企业级应用。本文将详细介绍如何在Linux环境下,特别是Cent OS 5.3操作系统上,进行Tuxedo的安装及...
综上所述,《Tuxedo性能监控文档》将详细阐述上述各个知识点,并提供实际操作指南和案例分析,帮助读者深入理解Tuxedo性能监控的重要性,提升系统运维能力。通过阅读文档中的"Tuxedo性能监控.doc",你将能掌握一套...
在IT行业中,Tuxedo和Delphi是两个重要的软件开发工具。Tuxedo,全称为AT&T Tuxedo,是一款分布式事务处理系统,主要用于构建高可用性和高性能的企业级应用。而Delphi则是一款由Embarcadero Technologies开发的集成...
**BEA Tuxedo官方培训源代码详解** BEA Tuxedo是一款强大的分布式应用服务器,由BEA Systems(后被Oracle公司收购)开发,主要用于构建高性能、高可用性的C/S(客户端/服务器)和B/S(浏览器/服务器)应用程序。...
Tuxedo是一款由Oracle公司提供的分布式事务处理中间件,它主要用于...理解这些知识点对于开发者来说至关重要,因为它们构成了Tuxedo客户端工作的基础。在实际操作中,根据具体的业务需求和环境进行适当的调整是必要的。