linux下的tuxedo开发实例
- 安装配置
上传安装文件tux81.tar,然后解压
tar -xvf tux81.tar
在当前目录下有一个tuxedo8.1目录,接着需要配置环境变量.
vi .bash_profile 添加如下内容
PATH=$PATH:$HOME/bin
#apache
export APACHE_HOME=/usr/local/apache#oracle
export ORACLE_BASE=/home/ora/ora9
export ORACLE_HOME=/home/ora/ora9/oracle
export ORACLE_SID=linuxdb
export ORACLE_TERM=xterm
#xerces-c
export XERCESCROOT=$HOME/app/xerces-c-src_2_7_0#APP
export APP_HOME=$HOME/app
export APP_BIN=$APP_HOME/src/bin#tuxedo
export TUXDIR=/home/dev/app/tuxedo8.1
TUXCONFIG=$APP_BIN/tuxconfig
export TUXCONFIG
WSNADDR=//192.168.1.113:5438; export WSNADDR#PATH
PATH=$PATH:/usr/bin:/usr/sbin:/usr/local/bin:.
PATH=$PATH:$ORACLE_HOME/bin:$TUXDIR/bin:$APACHE_HOME/bin
export PATH#LD_LIBRARY_PATH
LD_LIBRARY_PATH=$XERCESCROOT/lib:$TUXDIR/lib:/usr/lib:/usr/local/lib:$ORACLE_HOME/rdbms/demo
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TUXDIR/lib
export LD_LIBRARY_PATH#LANG
NLS_LANG=american_america.ZHS16GBK;export NLS_LANG
export LANG=C
export LC_ALL="zh_CN.GB18030"保存退出,source .bash_profile使环境变量生效。
以上的目录可以根据自己的目录情况,进行修改,因为我用到了apache,xerecs,oracle,fastcgi等,所以上面包含了这些路径,如果没有用到这些,删除相应的路径配置即可。
下面是我遇到的一些问题和解决的办法:问题一:
执行tmadmin命令,出现如下错误
NLS:4: Cannot open message catalog TMADMIN_CAT, set 1, num 184; check TUXDIR=/home/dev/app/tuxedo8.1, LANG=zh_CN.GB18030
可以肯定,这个错误是由字符集引起的,我用的是简体中文linux
添加环境变量vi .bash_profile 添加如下内容
export LANG=C
保存退出,source .bash_profile 使环境变量生效问题二:
再执行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:188:ERROR: Error whileobtaining the Bulletin Board parameters
分析上面的信息,因为没有编译生成TUXCONFIG指向的文件,即公告牌文件
经过上面一些配置,已经可以使用tuxedo了,后面配置公告文件和开发程序都是开发的内容 - 配置公告牌文件
tuxedo服务的核心内容都配置再一个配置文本文件上,一般命名为ubbconfig(当然可以根据自己的需要随便命名),然后用tmlodcfg -y ubbconfig命令,编译成一个二进制文件,环境变量TUXCONFIG指向的文件名,在主机上运行的,所以在编写ubbconfig配置文件之前,先确保配置号了TUXCONFIG环境变量,不然会报错误.在这儿给出一个简单的公告牌配置文件
# (c) 2003 BEA Systems, Inc. All Rights Reserved.
#ident "@(#) samples/atmi/simpapp/ubbsimple $Revision: 1.5 $"
#Skeleton UBBCONFIG file for the TUXEDO Simple Application.
#Replace the <bracketed> items with the appropriate values.
*RESOURCES
#Example:
IPCKEY 123456
DOMAINID server_240
MASTER chenli
MAXACCESSERS 1000
MAXSERVERS 1000
MAXSERVICES 2500
MAXGTT 5
MODEL SHM
LDBAL N
BLOCKTIME 10
*MACHINES
DEFAULT:
APPDIR="/home/dev/app/src/bin"
TUXCONFIG="/home/dev/app/src/bin/tuxconfig"
TUXDIR="/home/dev/app/tuxedo8.1"
TLOGSIZE=500
MAXWSCLIENTS=50
#Example:
# APPDIR="/home/me/simpapp"
# TUXCONFIG="/home/me/simpapp/tuxconfig"
# TUXDIR="/usr/tuxedo"
#<Machine-name>
chenli_linux LMID=chenli
#Example:
#beatux LMID=chenli
*GROUPS
GROUP1
LMID=chenli GRPNO=1 OPENINFO=NONE
GROUP2
LMID=chenli GRPNO=2 OPENINFO=NONE
GROUP3
LMID=chenli GRPNO=3 OPENINFO=NONE
GROUP4
LMID=chenli GRPNO=4 OPENINFO=NONEGROUPWSL
LMID=chenli GRPNO=6 OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A" RESTART=Y GRACE=86400
#======================= GROUP1 servers Define ==========================#
GENERAL_SERVICE SRVGRP=GROUP1 SRVID=200 MIN=1 MAX=2 REPLYQ=Y RQADDR="GENERAL_SERVICE" MAXGEN=2#WSL SRVGRP=GROUP1 SRVID=700 MIN=1 MAX=1 REPLYQ=Y MAXGEN=2 RESTART=Y CLOPT = "-A -t -- -n //192.168.1.201:3195 -H //192.168.1.201:3195 -m 5 -M 20 -x 3 -T 120 -I 30"
WSL SRVGRP=GROUPWSL SRVID=2 MAXGEN=2 CLOPT=" -A -- -n //192.168.1.113:3195 -m 2 -M 6 -x 10"*SERVICES
GENERAL_SERVICE注意这一行中chenli_linux必须用hostname得到的主机名
chenli_linux LMID=chenli---------------------------------------------------------------------------------------------------------------------
GENERAL_SERVICE SRVGRP=GROUP1 SRVID=200 MIN=1 MAX=2 REPLYQ=Y RQADDR="GENERAL_SERVICE" MAXGEN=2
如果RESTART=Y当SERVER程序GENERAL_SERVICE异常终止时,TUXEDO会根据MAXGEN,GRACE参数来重启这个SERVER
---------------------------------------------------------------------------------------------------------------------WSL SRVGRP=GROUPWSL SRVID=2 MAXGEN=2 CLOPT=" -A -- -n //192.168.1.113:3195 -m 2 -M 6 -x 10"是为了提供非本机客户程序调用而设置的,表示服务将在本级的ip地址192.168.1.113,端口3195上面监听请求,并进行应答处理.
*SERVICES
GENERAL_SERVICE
配置了提供调用的服务,一个服务程序可能提供多个服务.问题1:
tmloadcf -y ubb出现如下错误:
NLS:4: Cannot open message catalog CMDTUX_CAT, set 1, num 883; check TUXDIR=/home/dev/app/tuxedo8.1, LANG=zh_CN.GB18030
显然跟环境变量的设置有关
export LANG=C
export LC_ALL=C
重新执行tmloadcf -y ubb,没有错误,问题解决 - 程序开发
在做程序开发前,还需要介绍一个关键的东西:license.
Tuxedo有两套license(SDK:开发license,RDK:实际应用的license).当你编译程序的时候必须使用SDK类型的license,这个license允许连接的的用户数一般都很少,只有几个而已. 正式使用的时候,两个license都可以用,只是用户数不同而已(如果用户数很多的话,使用SDKlicense,tuxedo将不能承受).
如果没有有效的sdk license,在执行buildserver,buildclient的时候,会报如下的错误信息:
CMDTUX_CAT:4382:ERROR:You do not have a valid SDK license
获取一个有效的tuxedo sdk license拷贝到$TUXDIR/udataobj目录下,就能用buildserver,buildclient进行程序开发了.问题1:
在tuxedo客户端程序中,调用tpinit失败,返回-1,tperrno=12。
在用buildclient编译客户端程序的时候,如果加入了-w选项,那么必须设置WSADDR环境变量,如果没有采用-w选项,那么默认请求本地的服务。
如果在编译客户端程序的时候,采用了-w选项,而又没有正确设置WSADDR环境变量,那么tpinit失败,返回-1,tperrno=12;
同时UBB中,需要访问服务所在的组也必须设置WSL选项,如:
WSL SRVGRP=GROUP1 SRVID=2 MAXGEN=2 CLOPT=" -A -- -n //192.168.1.201:3195 -m 2 -M 6 -x 10"
同时在*MACHINE节点设置MAXWSCLIENTS=5,MAXWSCLIENTS是最大的WSL client数。
在客户端程序运行的时候export WSNADDR=//192.168.1.201:3195,就可以访问服务了。
如果在编译客户端程序的时候,没有采用-w选项,默认访问本地的服务,不需要设置WSADDR环境变量。问题2:
WSL启动失败
WSL启动失败的原因有很多,比如:UBB中没配置MAXWSCLIENTS,WSL的端口和别人冲突等等。需要看ULOG才能确定具体原因。问题3:
tpcall有时莫名的返回-1
tpcall后,不管是否成功,都要释放memory(上边tpalloc等函数申请的memory)。然后才能tpterm。问题4:
启动服务的时候现实如下的信息:
CMDTUX_CAT:819: INFO: Process id=1956 Assume started (pipe).
这时需要看一下程序,是否在程序中tpsvrinit函数时已经异常退出。问题5:
启动服务tmboot -y的时候出现如下的错误信息:
mboot: WARN: No BBL available on site srd.
Will not attempt to boot server processes on that site.
去除MACHINES中的TLOGDEVICE="/home/srd/srdapp/bin/TLOG"定义就可以解决。问题6:
在启动tuxedo服务的时候,报如下错误信息:
LIBTUX_CAT:328: ERROR: No space in Bulletin Board for Server Table
ubb中的MAXWSCLIENTS,MAXACCESSERS参数值太小,适当修改这个两个参数值就可以了.问题7:
在执行tmloadcf的时候,报如下错误:
CMDTUX_CAT:1615: ERROR: Identifier or number must be followed by white space or punctuation
说明某个关键字后面需要有空格或者回车,根据错误信息在相应出错的位置添加空格就可以了。问题8:
执行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来申请更多的资源,将上面的参数适当增大知道不出现错误信息为止,具体增加多少根据自己的系统配置和需求决定。 - gdb调试tuxedo服务
在编译生成程序的时候,加入-g选项,就可以用gdb调试tuxedo服务
假定你的服务程序名是program,先用tmboot -y启动服务,然后查询该服务程序的进程id
ps -ef|grep program
得到进程pid之后,假定进程id=5313,然后执行下列命令,就进入gdb调试服务程序状态
gdb --pid=5313
注意在调试服务程序的时候,切忌用r,run,因为程序已经运行.
用c,表示继续运行,断点一般先打在服务函数,然后向下调试.
后台面的调试方法同普通的gdb调试应用程序方法一样了.
linux下的tuxedo开发实例相关推荐
- linux下IIC驱动开发分析
1. IIC规范 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.IIC总线产生于在80年代,最初为音频和 ...
- Linux下C语言开发(信号signal处理机制)
信号signal处理是Linux程序的一个特色,用信号处理来模拟操作系统的中断功能,对于系统程序员来说是最好的一个选择了.同样信号处理也是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概 ...
- linux下TCP通信简单实例
linux下TCP通信简单实例 基于TCP(面向连接)的socket编程,分为服务器端和客户端 服务器端的流程如下: (1)创建套接字(socket) (2)将套接字绑定到一个本地地址和端口上(bin ...
- 2021-01-13 Linux下安装lua开发环境 Ubuntu
Linux下安装lua开发环境 Ubuntu 1.下载lua包并解压 wget -c http://www.lua.org/ftp/lua-5.3.5.tar.gz tar zxvf lua-5.3. ...
- linux下手动删除数据库实例
linux下手动删除数据库实例,直接删除相应的目录就可以了,不多说了.... 1. $ORACLE_HOME/dbs/ [oracle9@frogger dbs]$ pwd /u01/app/orac ...
- php 类似微信下拉菜单,微信小程序模拟下拉菜单开发实例
本文主要和大家分享微信小程序模拟下拉菜单开发实例,希望能帮助到大家. 一.知识点 1.实现动态显示和隐藏某个控件 列表1data:{ open:false }, showitem:function() ...
- arm-linux-gcc 裸机程序,Linux下ARM裸机开发-交叉工具链
初识linux下ARM的裸机开发全过程.现在总结如下: 首先说明为什么要学习裸机开发,一方面bootloader的编写要用到裸机开发的知识,另一方面就是驱动的开发.一般情况下我们进行的系统上的开发. ...
- linux中grep的例子,Linux下grep命令使用实例
那么你知道grep命令参数.如何使用grep命令去搜索某个文件中的内容呢.grep 命令递归查找.使用grep去匹配某一个单词么?接下来是小编为大家收集的Linux下grep命令使用实例,欢迎大家阅读 ...
- GCC编译器简明教程(Linux下C语言开发环境的搭建)
GCC编译器简明教程(Linux下C语言开发环境的搭建) 市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境(例如GNOME.KDE.Unity等)和各种常用的必 ...
最新文章
- c++ make_pairpair
- 【经验】向word中插入格式化的代码块
- C#进阶系列——动态Lamada
- linux处理邮件编码
- 2015年科技巨头的十个开源产品,不只是.NET、Swift
- 共享内存 传一个类指针_共享内存介绍:Shared Memory
- go zap去除程序名称_适用于Zip,Zap和Zoom游戏的Python程序
- java排队系统模型,MMC排队系统模型
- MySQL_日期时间处理函数及应用
- signature=fd45b8c9a90eebce5d855f07302ab4ee,Private Use Area
- 华为NP课程笔记14-PIM-SM和SPT切换
- python PIL库的getdata()函数
- html默认初始代码
- 依图科技CTO颜水成被曝离职!或加入东南亚某电商
- 2022年第十三届蓝桥杯大赛软件类决赛C/C++/Java/Python真题
- Could Not Autowired ,No Beans of ....
- [墨者学院] Windows硬盘文件分析取证(新建的用户名)
- 解决mac pro 装 win10以后 蓝牙 卡顿的问题
- 我爱赚钱吧:学生都可以做的兼职工作
- 有极性(电解电容)与无极性电容