步骤:
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将tuxedo二进制配置文件以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外的服务;
强行停止服务可追加-k KILL命令
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/目录下)。
启动管理命令(注意执行完其管理命令eg. psr、psc之后要quit一次不然还在tmadmin下面)
psr查看启动进程
psc查看服务
8.使用tmconfig
tmconfig命令,用于动态修改Tuxedo应用系统的配置。它的使用方法如下:
注意:以下环境在Unix服务器中通过,但是在windows中遇到了一些问题
(1) $ tmconfig
Section: 1) RESOURCES, 2) MACHINES, 3) GROUPS 4) SERVERS
5)SERVICES 6) NETWORK 7) ROUTING q) QUIT 9) WSL
10) NETGROUPS 11) NETMAPS 12) INTERFACES [1]: 4
Operation: 1) FIRST 2) NEXT 3) RETRIEVE 4) ADD 5) UPDATE
6) CLEAR BUFFER 7) QUIT [1]: 3
Enter editor to add/modify fields [n]? n
Perform operation [y]? y
Section: 1) RESOURCES, 2) MACHINES, 3) GROUPS 4) SERVERS
5)SERVICES 6) NETWORK 7) ROUTING q) QUIT 9) WSL
10) NETGROUPS 11) NETMAPS 12) INTERFACES [4]: 4
Operation: 1) FIRST 2) NEXT 3) RETRIEVE 4) ADD 5) UPDATE
6) CLEAR BUFFER 7) QUIT [3]: 5
Enter editor to add/modify fields [n]? y
(2)修改TA_SERVERNAME /opt/app/tuxapp/tuxmisc/app/paysrv
注意:其他不需要修改的项全部删除
(3)再次执行
Operation: 1) FIRST 2) NEXT 3) RETRIEVE 4) ADD 5) UPDATE
6) CLEAR BUFFER 7) QUIT [1]: 3
Enter editor to add/modify fields [n]? n
Perform operation [y]? y
将指定路径下的服务的配置load
(4)再次进入修改文件编辑窗口,现在指定服务的配置文件就已经被load进来了,修改指定的项目保存即可
注意:在修改动态配置的时候,需要先将要修改的服务停掉,修改过后再启动
1、在黑屏cmd模式下运行tuxedo
(1)、安装tuxedo9.0(目前我用的是9.0版本的)
(2)、注意需要license文件lic.txt(在官网上下载)放在tuxedo9.0根目录下的udataobj目录下面
(3)、到tuxedo9.0根目录下面进入tuxedo\tuxedo9.0\samples\atmi\simpapp目录,查看README.nt文件,根据说明一步一步的进行操作
操作过程中注意事项:ubbsimple文件中的主机名要大写,并且不能有中线等特殊符号,查看主机名用hostname命令
当一个ATMI调用发生错误时,全局变量tperrno被设置,它指示发生错误的原因。可选值如下:
|
代码 |
解释 |
1 |
TPEABORT |
Transaction can not commit |
2 |
TPEBADDESC |
Bad descriptor for tpgetrply(3c) |
3 |
TPEBLOCK |
Blocking condition found and no-block specified |
4 |
TPEINVAL |
Invalid arguments given |
5 |
TPELIMIT |
Too many handles outstanding |
6 |
TPENOENT |
No entry found or no room on the Bulletin Board |
7 |
TPEOS |
Operating system error |
8 |
TPEPERM |
Bad permissions or failed authentication |
9 |
TPEPROTO |
Protocol error |
10 |
TPESVCERR |
Server error while handling request |
11 |
TPESVCFAIL |
Application level service failure |
12 |
TPESYSTEM |
Internal BEA TUXEDO error (userlog(3c)) message written) |
13 |
TPETIME |
Time-out occurred and TPNOTIME was not specified |
14 |
TPETRAN |
Caller in transaction mode and transaction aborted |
15 |
TPGOTSIG |
Signal received and TPSIGRSTRT not specified |
16 |
TPERMERR |
Resource Manager failure |
17 |
TPEITYPE |
Type and/or subtype do not match services |
18 |
TPEOTYPE |
Type and/or subtype do not match buffers or unknown |
19 |
TPERELEASE |
Caller has made a 3.0 library call |
20 |
TPEHAZARD |
Hazard exists that transaction heuristically completed |
21 |
TPEHEURISTIC |
Transaction heuristically completed |
22 |
TPEEVENT |
Event occurred |
23 |
TPEMATCH |
Service name cannot be advertised due to matching conflict |
1、问题:
ULOG: 105143.test1!tmadmin.12238.1.-2: LIBTUX_CAT:577: ERROR: Unable to register because the slot is already owned by another process $ tmadmin tmadmin - Copyright (c) 1996-1999 BEA Systems, Inc. Portions * Copyright 1986-1997 RSA Data Security, Inc. All Rights Reserved. Distributed under license by BEA Systems, Inc. Tuxedo is a registered trademark. TMADMIN_CAT:199: WARN: Cannot become administrator.Limited set of commands available. |
原因:重复打开tmadmin管理,在重复打开的tmadmin中个别命令不能使用,通过help命令可以看到当前可以使用的命令。
-------------------------------------
2、问题:
174304.test1!WSH.20044.1.0: gtrid x0 x47fb1049 x16e: LIBTUX_CAT:1288: ERROR: File transfer creat failed, file=/var/tmp/TUXAAAa200441, errno=不允许 174304.test1!WSH.20044.1.0: gtrid x0 x47fb1049 x16e: WSNAT_CAT:1042: ERROR: tpcall() call failed, tperrno = 7 |
原因:
1288 ERROR: File transfer creat failed, file=filename, errno=errno_val
DESCRIPTION
The UNIX kernel call creat () failed on filename. This temporary file was being created to transfer a large message between two TUXEDO System processes on the same machine.
ACTION
Check temporary directory's permissions. Check disk space and inode counts for the temporary file system.
-------------------------------------
3、问题:
105516.test0!TMUSREVT.17177.1.0: gtrid x0 x48105214 xe: CMDTUX_CAT:3129: ERROR: tpenqueue() to qname PAYQUE failed for event EVT_PLC_EFFT tperrno=24 |
原因:PAYQUE队列没有建立,用qmadmin创建队列。
-------------------------------------
4、问题:
103331.test1!dydealtasksrv.21551.1.0: ERROR: msgsnd err:(LIBTUX_CAT:669: ERROR: Message operation failed because of the invalid message queue identifier) errno=22,qid=208507,buf=-9223372032559197904,bytes=293,flag=2048 103331.test1!dydealtasksrv.21551.1.0: LIBTUX_CAT:1286: ERROR: tpreturn could not send reply TPEOS - operating system error |
原因:队列没有找到,可能是前台在后台返回前断开了服务连接,所以tpreturn时找不到
接收消息队列。或是其他原因导致队列被删除如 ipcrm -q qid
---------------------------------
5、问题:
101503.lf2qjf2!TUXAGENT.17788: LIBTUX_CAT:536: ERROR: Unable to create request queue 101503.lf2qjf2!TUXAGENT.17788: LIBTUX_CAT:248: ERROR: System init function failed, Uunixerr = : msgget: No space left on device |
原因:达到OS系统最大消息上限。使用ipcs -q|wc -l 查看当时建立得消息队列。
使用kmtune|grep msgmni 查看系统消息上限。
-----------------------------------------------------------------
6、问题:
111756.test1!BBL.23626.1.0: 12-11-2008: Tuxedo Version 8.1, 64-bit, Patch Level (none) |
原因:系统修改OS时间导致,重新创建TLOG 日志后此问题解决。
crdl 、crlog
如果BBL启动失败是因为事务Transaction Table不能在BB中再分配空间时,处理方法如下:
a. 备份相应的事务日志 TLOG : cp TLOG TLOG_Tuxedo_bbl_backup
b. 删除事务日志TLOG: rm TLOG
c. 使用tmadmin登录到tuxedo系统中重新建一个日志设备,方法如下:
$tmadmin
>crdl -b 1000 -z//tuxedo/new_tuxedo_bbl/TLOG
>crlog -m new_tuxedo_bbl
>q
$tmboot -y
其中:
crdl命令创建TLog的device
-b 为日志设备大小 1000 block(注意这里的大小必须比配置文件中的TLOGSIZE要大)
-z //tuxedo/new_tuxedo_bbl/TLOG 可以在ubb配置文件中*MACHINES段的TLOGDEVICE保持一致
crlog命令创建Tlog
-m new_tuxedo_bbl: new_tuxedo_bbl是虚拟主机名
如果BBL启动还是失败,看看IPCKEY值配置是否与某个其他用户相同,且那个用户服务在运行.
完毕,祝你启动tuxedo BBL成功
------------------------------------------
7、问题:
ERROR: File transfer creat failed, file=/var/tmp/TUXAAAa248801, errno=Permission denied |
原因:服务器多用户tuxedo环境时,创建的tmp里的文件已经存在,重启解决此问题。
8、在启动tuxedo服务的时候,报如下错误信息: LIBTUX_CAT:328: ERROR: No space in Bulletin Board for Server Table
解决方法:ubb中的MAXWSCLIENTS,MAXACCESSERS参数值太小,适当修改这个两个参数值就可以了.
9、在执行tmloadcf的时候,报如下错误:
CMDTUX_CAT:1615: ERROR: Identifier or number must be followed by white space or punctuation
解决方法:说明某个关键字后面需要有空格或者回车,根据错误信息在相应出错的位置添加空格就可以了。
10、执行tmboot -y启动服务的时候,报如下错误:
TPELIMIT - a system limit has been reached
CMDTUX_CAT:1685: ERROR: Application initialization failure
No space in Bulletin Board for Service Table
解决方法:上面的信息可以看出,是tuxedo配置的一些资源有限制,可以修改ubbconfig配置文件中的参数 MAXACCESSERS,MAXSERVERS,MAXSERVICES,MAXGTT来申请更多的资源,将上面的参数适当增大知道不出现错误信息为止,具体增加多少根据自己的系统配置和需求决定。
11、tmloadcf –y ubb的时候如下报错: CMDTUX_CAT:190: ERROR: SRVID xxx is not unique among server group xxxGRP
解决方法:tuxedo原来每个组里面的进程号与MIN\MAX的设置有关,其自动增加,所以组里面的服务ID应该保留足够的间隙