来自:
http://www.tuxdev.cn/viewthread.php?tid=126&extra=page%3D1
1.使用buildclient构造client端程序
步骤:
1. client端程序包含atmi.h头文件;
2. 正确设置TUXDIR环境变量;
3. 使用buildclient工具编译程序;
buildclient的语法如下:
buildclient [-v] [-C] -o executable -f first-file \
[-f first-file]... [-l last-file]...
选项含义:
-C:编译COBOL代码;
-o:可执行文件的名字;
-f option:在链接tuxedo库之前处理该文件;
-l option:在链接tuxedo库之后处理该文件;
-v:打印实际的编译命令行。
buildclient在运行中使用下面的环境变量:
CFLAGS:自动在该变量中增加"-I${TUXDIR}/include";
CC:使用该变量指向的编译器。
2.使用tmloadcf
tmloadcf用于将tuxedo文本配置文件转化为运行时需要的二进制文件。
二进制文件的文件名由环境变量TUXCONFIG指定,该文件名必须是绝对路径的。
tmloadcf的语法如下:
tmloadcf [option] text-file;
选项有如下几个:
-c:计算该配置需要的IPC资源而不生成目标文件;
-n:进行语法检查而不生成目标文件;
-b:限制目标文件的大小;
-y:不提示直接覆盖现有的目标文件;
3.使用tmunloadcf
tmunloadcf将二进制配置文件以ASCII形式输出。
4.使用tmboot
tmboot启动tuxedo应用服务,创建必要的IPC资源。
有如下选项,无选项时启动所有配置的服务:
-A:只启动所有机器的管理server(BBL、DBBL);
-g grpname:只启动指定group的server;
-i srvid:只启动指定的server ID的所有server;
-S:启动所有应用server;
-s servername:启动指定的server;
-c:只计算最小的IPC资源需求。
5.使用tmshutdown
tmshutdown停止tuxedo服务,必要是删除相关的IPC资源。
有如下选项:
-A、-g、-i、-S、-s:与tmboot相同;
-R:在多机环境下停止除BB外的服务;
6.使用buildserver构造server端程序
语法如下:
buildserver [-o executable]...
[-v] \
[-s service2, service3:func] \
[-f source/object]...\
[-l object] ... \
[-r resource manager]
选项含义:
-o:生成的可执行程序名;
-v:打印实际的编译命令行;
-s:指定提供的service和对应的处理函数;
-f:在链接tuxedo库之前处理该文件;
-l:在链接tuxedo库之后处理该文件;
-r:要链接相关资源库(在$TUXDIR/udataobj/目录下)。来自:http://www.tuxdev.cn/viewthread.php?tid=126&extra=page%3D1
1.使用buildclient构造client端程序
步骤:
1. client端程序包含atmi.h头文件;
2. 正确设置TUXDIR环境变量;
3. 使用buildclient工具编译程序;
buildclient的语法如下:
buildclient [-v] [-C] -o executable -f first-file \
[-f first-file]... [-l last-file]...
选项含义:
-C:编译COBOL代码;
-o:可执行文件的名字;
-f option:在链接tuxedo库之前处理该文件;
-l option:在链接tuxedo库之后处理该文件;
-v:打印实际的编译命令行。
buildclient在运行中使用下面的环境变量:
CFLAGS:自动在该变量中增加"-I${TUXDIR}/include";
CC:使用该变量指向的编译器。
2.使用tmloadcf
tmloadcf用于将tuxedo文本配置文件转化为运行时需要的二进制文件。
二进制文件的文件名由环境变量TUXCONFIG指定,该文件名必须是绝对路径的。
tmloadcf的语法如下:
tmloadcf [option] text-file;
选项有如下几个:
-c:计算该配置需要的IPC资源而不生成目标文件;
-n:进行语法检查而不生成目标文件;
-b:限制目标文件的大小;
-y:不提示直接覆盖现有的目标文件;
3.使用tmunloadcf
tmunloadcf将二进制配置文件以ASCII形式输出。
4.使用tmboot
tmboot启动tuxedo应用服务,创建必要的IPC资源。
有如下选项,无选项时启动所有配置的服务:
-A:只启动所有机器的管理server(BBL、DBBL);
-g grpname:只启动指定group的server;
-i srvid:只启动指定的server ID的所有server;
-S:启动所有应用server;
-s servername:启动指定的server;
-c:只计算最小的IPC资源需求。
5.使用tmshutdown
tmshutdown停止tuxedo服务,必要是删除相关的IPC资源。
有如下选项:
-A、-g、-i、-S、-s:与tmboot相同;
-R:在多机环境下停止除BB外的服务;
6.使用buildserver构造server端程序
语法如下:
buildserver [-o executable]...
[-v] \
[-s service2, service3:func] \
[-f source/object]...\
[-l object] ... \
[-r resource manager]
选项含义:
-o:生成的可执行程序名;
-v:打印实际的编译命令行;
-s:指定提供的service和对应的处理函数;
-f:在链接tuxedo库之前处理该文件;
-l:在链接tuxedo库之后处理该文件;
-r:要链接相关资源库(在$TUXDIR/udataobj/目录下)。都 是自己工作中曾经犯过 的错或者是觉得容易弄错的地方,整理了部分与大家交流,还有些正在整理中。
1. ubbconfig配置中机器名���置: windows环境中一定要大写,unix中可用uname -n查看。
2. tmboot 起不来常与这几个 参数相关,并容易混淆,建议关注。
MAXACCESSERS,MAXSERVERS,MAXSERVICES:这三个参数控制该TUXEDO 应用系统对IPC资源的使用情况。
MAXACCESSERS: 在本系统的一个 节点(一台 服务器)上,同时可以有多少个进程可以 访问该TUXEDO系统的公告板,默认值为50,它包括本地客户端进程,SERVER进程,但不包括 管理进程如:BBL,DBBL等。
MAXSERVERS: 在本系统中,总共可以有多少个SERVER存在,包括进行管理的SERVER,如:BBL,TMS等。默认值为50。
MAXSERVICES: 在本系统中,总共可以有多少个SEVICE存在, 默认值为100。
MAXCONV: 在一台 服务器上最多可以有多少个会话同时存在。范围:0-32768,默认为10
3. 不同版本的tuxedo互连问题:如果是WSL模式:低联高版本在WSL中加入-t参数,如CLOPT=”-A -t ??n//机器名:端口号,高联低版本应在环境变量中 设置WSINTOPPRE71=yes;如果是域模式:低联高版本应该在ubbconfig中的 SERVERS配置GWADM的CLOPT中加入-t参数,例如GWADM SRVGRP=LGWGRP SRVID=3 REPLYQ=N CLOPT="-A -t -- "
4. 在dmconfig中如果配置了多个域,并且指定远端域服务时应该指定域服务路由(即远端服务的本地域是什么,远端域是什么),否则报协议错误,例如*DM_REMOTE_SERVICES
SERV_1 LDOM=TDOM1 RDOM=TDOM3 RNAME=SERV_1
SERV_2 LDOM=TDOM1 RDOM=TDOM3 RNAME=SERV_2
5. 用户用tmadmin进入了管理进程,如果没有退出,另外用户用tmadmin进入管理进程,就成为受限管理用户,部分命令不能使用。
6. TuxedoDomain-level Failover 的工作特点和配置方式:
特点
当本地domain与主的远端domain连接失败时,本地Domain将请求转发到另一个备份的远端domain上。支持 自动 failback。当主 domain恢复正常时,本地domain可以将请求转发回主domain。CONNECTION_POLICY必须配置成ON_STARTUP或者是 INCOMING_ONLY 。Domain-level要求本地domain与主domain和备份domain之间都建立好socket连接。可以有多个远端的备份domain
配置方法
在Domain 配置 文件(dmconfig)中的DM_REMOTE_SERVICES处按以下方法配置Service,用逗号分割Service所在的远端 domain ID,如:RDOM=identifier_1, identifier_2, identifier_3
*DM_REMOTE_SERVICES
DEFAULT: RDOM=R1, R2, R3
TOUPPER
TOLOWER
R1是主domain,后面的是备份domain
7. Tuxedo7.1及其以后的版本才正式支持多 线程环境。在6.5版本,在Windows上有个客户端的多线程附加包, 安装后可以用多线程方式并发调用服务,而在unix环境下6。5版不支持。
8. 如何在Tuxedo7.1中使用Fprint打印 中文,应该配置环境变量 FML_PRINT_NOHEX =yes
9. unix环境下可以通过配置环境变量TUXCONFIG和BDMCONFIG的不同目录,可以在一个用户中启动两套完全独立的BBL和两套应用,并在相应的环境变量下管理相应的应用。
10. 在Tuxedo中有许多关于 时间方面的参数,
SCANUNIT :
BBL 系统进程对Bulletin Board的管理和监控是基于时间片的轮询方式,时间片的大小就是SCANUNIT的值,SCANUNIT是Tuxedo对系统进行管理的最基本时间单位,其他许多时间方面的参数均是SCANUNIT的倍数。每隔SCANUNIT,BBL对Bulletin Board进行一次检查,看看有无超时的事务或服务请求。SCANUNIT必须是大于0的5的倍数,最大是60,缺省10,单位为秒。
BLOCKTIME:
服务请求的超时值,BBL发现有超时的Request时,会给相应的Client端发信息,Client端如果在调用时未加TPNOTIME标记,会报错返回,tperrno值为13。由于BLOCKTIME是以SCANUNIT为单位的,所以时间的绝对值为(BLOCKTIME * SCANUNIT),BLOCKTIME缺省为(60/SCANUNIT)。
SANITYSCAN
健全性检查扫描,健全性检查主要检查 Server进程状态和Bulletin Board数据结构, BBL检查Server进程是否存活,如果已经不存在,会清理Bulletin Board中相应的数据项及IPC资源,并根据参数配置决定是否重新启动,如果设了RESTART=Y,所占的Message Queue不会被清,Queue中的Request得到保留,仍会被处理。如果是MP模式,BBL还会给DBBL发状态消息。SANITYSCAN缺省为 (120/SCANUNIT)。
BBLQUERY
BBL检查,在MP模式下,DBBL会每隔一段时间检查是否所有的BBL都发了" I am ok "心跳信息给自己,如果没有收到某个BBL的信息,它会发Request给那个BBL,如果等了DBBLWAIT后仍然没有回复,DBBL会认为那台机器有问题,将其partition。BBL QUERY缺省为(300/SCANUNIT),DBBLWAIT缺省为(20/SCANUNIT)。BBLQUERY必须大于等于 SANITYSCAN���tmloadcf 时会强制检查,如果设的值小于SANITYSCAN,tmloadcf会自动调整为SANITYSCAN。
其它和时间相关的参数还有:
WSL [-I init-timeout]
WorkStation Client和后台建立连接的超时参数值,缺省60秒
WSL [-T Client-timeout]
WorkStation Client和WSH建立连接后,如果在指定的时间内没有信息交互,WSH会自动释放和这个Client端的连接,并将此Client在Bulletin Board中的数据项请空,RollBack它未完成的事务 。
WSL [-N network-timeout]
此值实际上是WorkStation Client在做receive时的超时值,如果发生超时,此操作会出错,WorkStation Client会断开和后台的连接。
SERVICES中的SVCTIMEOUT
如果SERVICE执行时间超过SVCTIMEOUT,BBL会自动将此Server进程Kill掉。
SERVICES中的TRANTIME
如果此SERVICE设置了AUTOTRAN=Y,则此值为事务超时值,超时后Transaction
Manager会自动RollBack此transaction