TUXEDO三层程序安装配置及开发流程.docx
《TUXEDO三层程序安装配置及开发流程.docx》由会员分享,可在线阅读,更多相关《TUXEDO三层程序安装配置及开发流程.docx(13页珍藏版)》请在冰点文库上搜索。
TUXEDO三层程序安装配置及开发流程
三层改造程序安装、配置及开发
第一部分前台的安装和配置
一、TUXEDO安装
插入安装盘,运行setup,按照安装程序的提示进行安装,使用缺省路径,安装在C:
\TUXEDO下。
二、TUXEDO安装后的配置
1、win98,win95的配置
点击开始菜单中的“运行”,键入“sysedit”,回车后,在AUTOEXEC.BAT
文件中配置以下环境参数:
SETTUXDIR=C:
\TUXEDO(按缺省安装配置)
SETLIB=C:
\Programfiles\BEASYSTEMS\TUXEDO\LIB(按缺省安装配置)
SETINCLUDE=C:
\TUXEDO\INCLUDE(按缺省安装配置)
SETWSNADDR=//192.168.100.57:
10000(按实际情况填写)
在Path中加入"C:
\TUXEDO\BIN";
CY注:
安装目录最好不要有空格,例如C:
\TUXEDO而不要用C:
\Programfiles\BEASYSTEMS\TUXEDO,带空格的路径AUTOEXEC.BAT可能不认,造成找不到wtuxws32.dll的错误。
配置完毕后,重起机器,看看MSDOS中相应变量是否也已设置,若没有,则在DOS下也进行相应的设置,重起机器。
2、winNT的配置
右击“我的电脑”,点属性,选择菜单,“用户配置文件”,选择相应的用户,再点“环境”菜单,设置环境参数:
TUXDIR=C:
\TUXEDO(按缺省安装配置)
LIB=C:
\TUXEDO\LIB(按缺省安装配置)
INCLUDE=C:
\TUXEDO\INCLUDE
WSNADDR=//192.168.100.57:
10000(按实际情况填写,参照ubb)
在Path中加入C:
\TUXEDO\BIN;
不用重新启动机器。
3、注意!
!
!
!
经过以上设置,如果win98和95还是找不到tuxedo所提供的一些函数,这时,设置查看为“显示所有文件包括隐藏文件”,将\TUXEDO\BIN\wtuxws32.dll拷贝到windows目录下,即可。
三、收费、查询程序的安装
将收费部分三层改造后的程序安装在C:
\lbas\lbas_pay3\下;
将查询部分三层改造后的程序安装在C:
\lbas\lbas_qry3\下。
注意lbas.ini的设置。
CY注:
与咱们无关,忽略之
第二部分后台的安装、配置和开发流程
一、TUXEDO安装
1、cp/tux65.install/HP和tux65.install/install.sh-------->要安装的目录
下;
2、在unix提示符下键入$kshinstall.sh回车,便开始进行安装。
CY注:
安装需要install.sh、相应的软件包、README(对操作系统的说明)、及licence文件(lic.txt),不用把所有内容都拷过去。
二、TUXEDO安装后的配置
1、为了方便开发,最好对环境进行如下配置
编写三个环境文件ora.env,tux.env,tuxcfg.env(见相应的文件)
然后在.profile文件中加入
./ora.env
./tux.env
./tuxcfg.env
path=$TUXDIR/bin:
$PATH:
$ORACLE_HOME/bin:
$PATH;exportPATH
ora.env,tux.env,tuxcfg.env,.profile这四个文件安装在C:
\lbas\lbas3_cfg\目录下,
CY注:
不一定要做三个env文件,配置内容都放在.profile即可。
使用时需作相应的改动
2、将有效的licsence文件lic.txt放在$TUXDIR/udataobj/目录下;
CY注:
这一步安装过程中会自动完成。
3、编译器必须使用标准C编译器;
4、配置udataobj目录下RM文件中的XA与相关数据库的连接
5、使用buildtms生成$TUXDIR/bin/TMS_ORA;
CY注:
如果不用XA,这一步可忽略。
6、配置ubb(配置相应的参数,详见ubb);
7、将server加入ubb中,service可不写;
8、用tmloadcf命令生成二进制的配置文件tuxcfg。
三、开发流程
1、编写服务:
使用C语言(嵌入式SQL)编写服务(server,service),生成.pc文件。
使用XA机制与数据库连接,XA负责控制事务一致性,所以在服务程序中不必直接连接数据库(connect)或断开(disconnect),但需要使用函数tpbegin,tpcommit/tpabort控制事务开始和结束。
2、在服务器端建立服务(首先使用proc将.pc文件编译成.c文件,再用CC将.c文件编译成.o文件,最后使用buildserver将.o文件编译成可执行文件),这个过程使用.mk文件一步到位生成可执行文件。
3、将服务(server及service)加入到配置文件(一般名为ubbconfig)中,使用tmloadcf装载各TUXEDO设置。
本系统只需连接一个数据库,所以全部服务可指向同一组,该组设置与数据库连接用的XA接口参数。
4、执行命令TMBOOT即可将加入的服务运行起来。
(这个过程也包含在
.mk文件中)
注:
.mk文件被安装在C:
\lbas\lbas3_cfg\目录下,使用时需作相应的改
动。
5、在后台程序启动之后,性能调优还包括对操作系统UNIX内核的调整,
需要调整的参数文件para.txt被安装在C:
\lbas\lbas3_cfg\目录下。
问题:
(1)输出字符串长度有影响?
(2)非XA方式的事务处理用EXECSQLCOMMIT/ROLLBACK?
四、附录
1.PB中,externalFUNCTION的定义
FunctionIntegertpinit(LongTPINFO)LIBRARY"wtuxws32.dll"
FunctionIntegertpterm()LIBRARY"wtuxws32.dll"
FunctionIntegertpcall(StringSVCNAME,LongIDATA,LongILEN,refLongODATA,refLongOLEN,Longflags)LIBRARY"wtuxws32.dll"
FunctionIntegertpacall(StringSVCNAME,LongIDATA,LongILEN,Longflags)LIBRARY"wtuxws32.dll"
FunctionLongtpalloc(StringBUFTYPE,StringSUBTYPE,LongBUFSIZE)LIBRARY"wtuxws32.dll"
FunctionLongtprealloc(Longbuffer,LongBUFSIZE)LIBRARY"wtuxws32.dll"
Subroutinetpfree(Longbuffer)LIBRARY"wtuxws32.dll"
Functionintegergettperrno()library"wtuxws32.dll"
Functionstringtpstrerror(intERRNO)library"wtuxws32.dll"
FunctionintegergetFerror()library"wtuxws32.dll"
FunctionLonglstrcpyStr(refStringstr,Longbuffer)library"kernel32.dll"aliasforlstrcpy
FunctionLonglstrcpyPtr(Longbuffer,Stringstr)library"kernel32.dll"aliasforlstrcpy
FunctionIntegerFadd(LongFBFR32,longFLDID32,StringVALUE,UIntLEN)LIBRARY"wtuxws32.dll"aliasforFadd32
FunctionLongFalloc(IntOCCURENCE32,UIntLEN)LIBRARY"wtuxws32.dll"
FunctionIntegerFchg(LongFBFR32,longFLDID32,IntOCCURENCE32,StringVALUE,UIntLEN)LIBRARY"wtuxws32.dll"aliasforFchg32
FunctionIntegerFget(LongFBFR32,longFLDID32,IntOCCURENCE32,LongVALUE,UIntLEN)LIBRARY"wtuxws32.dll"aliasforFget32
FunctionIntegerFoccur(LongFBFR32,longFLDID32)LIBRARY"wtuxws32.dll"aliasforFoccur32
FunctionIntegerFgetInt(LongFBFR32,longFLDID32,IntOCCURENCE32,REFIntVALUE,UIntLEN)LIBRARY"wtuxws32.dll"aliasforFget32
FunctionIntegerFgetLong(LongFBFR32,longFLDID,IntOCCURENCE32,REFLongVALUE,UIntLEN)LIBRARY"wtuxws32.dll"aliasforFget32
FunctionIntegerFgetstring(LongFBFR32,longFLDID,IntOCCURENCE32,refstringstr,UIntLEN)LIBRARY"wtuxws32.dll"aliasforFget32
FunctionIntegerFnum(LongFBFR32)LIBRARY"wtuxws32.dll"aliasforFnum32
FunctionIntegertpbegin(Longtimeout,Longflag)library"wtuxws32.dll"
FunctionIntegertpcommit(Longflag)library"wtuxws32.dll"
FunctionIntegertpabort(Longflag)library"wtuxws32.dll"
2.Delphi中dll函数声明
unittuxlib;
interface
functiontpinit(TPINFO:
LongInt):
Integer;stdcall;
functiontpterm():
Integer;stdcall;
functiontpcall(SVCNAME:
PChar;IDATA:
PChar;ILEN:
LongInt;varODATA:
PChar;varOLEN:
Longint;flags:
LongInt):
Integer;stdcall;
functiontpacall(SVCNAME,IDATA:
PChar;ILEN:
LongInt;flags:
LongInt):
Integer;stdcall;
functiontpalloc(BUFTYPE,SUBTYPE:
PChar;BUFSIZE:
LongInt):
PChar;stdcall;
functiontprealloc(buffer:
PChar;BUFSIZE:
LongInt):
LongInt;stdcall;
proceduretpfree(buffer:
PChar);stdcall;
functiongettperrno():
Integer;stdcall;
functiontpstrerror(ERRNO:
Integer):
PChar;stdcall;
functiongetFerror():
Integer;stdcall;
functionlstrcpyStr(varstr:
PChar;buffer:
Pchar):
LongInt;stdcall;
functionlstrcpyPtr(buffer:
Pchar;str:
PChar):
LongInt;stdcall;
functionFadd(FBFR32,FLDID32:
LongInt;VALUE:
PChar;LEN:
Cardinal):
Integer;stdcall;
functionFalloc(OCCURENCE32:
Integer;LEN:
Cardinal):
LongInt;stdcall;
functionFchg(FBFR32,FLDID32:
LongInt;OCCURENCE32:
Integer;VALUE:
PChar;LEN:
Cardinal):
Integer;stdcall;
functionFget(FBFR32,FLDID32:
LongInt;OCCURENCE32:
Integer;VALUE:
LongInt;LEN:
Cardinal):
Integer;stdcall;
functionFoccur(FBFR32,FLDID32:
LongInt):
Integer;stdcall;
functionFgetInt(FBFR32,FLDID32:
LongInt;OCCURENCE32:
Integer;varVALUE:
Integer;LEN:
Cardinal):
Integer;stdcall;
functionFgetLong(FBFR32,FLDID:
LongInt;OCCURENCE32:
Integer;varVALUE:
LongInt;LEN:
Cardinal):
Integer;stdcall;
functionFgetstring(FBFR32,FLDID:
LongInt;OCCURENCE32:
Integer;varstr:
PChar;LEN:
Cardinal):
Integer;stdcall;
functionFnum(FBFR32:
LongInt):
Integer;stdcall;
functiontpbegin(timeout,flag:
LongInt):
Integer;stdcall;
functiontpcommit(flag:
LongInt):
Integer;stdcall;
functiontpabort(flag:
LongInt):
Integer;stdcall;
const
tuxws32='wtuxws32.dll';
kernel32='kernel32.dll';
implementation
functiontpinit;externaltuxws32;
functiontpterm;externaltuxws32;
functiontpcall;externaltuxws32;
functiontpacall;externaltuxws32;
functiontpalloc;externaltuxws32;
functiontprealloc;externaltuxws32;
proceduretpfree;externaltuxws32;
functiongettperrno;externaltuxws32;
functiontpstrerror;externaltuxws32;
functiongetFerror;externaltuxws32;
functionlstrcpyStr;externalkernel32name'lstrcpy';
functionlstrcpyPtr;externalkernel32name'lstrcpy';
functionFadd;externaltuxws32name'Fadd32';
functionFalloc;externaltuxws32;
functionFchg;externaltuxws32name'Fchg32';
functionFget;externaltuxws32name'Fget32';
functionFoccur;externaltuxws32name'Foccur32';
functionFgetInt;externaltuxws32name'Fget32';
functionFgetLong;externaltuxws32name'Fget32';
functionFgetstring;externaltuxws32name'Fget32';
functionFnum;externaltuxws32name'Fnum32';
functiontpbegin;externaltuxws32;
functiontpcommit;externaltuxws32;
functiontpabort;externaltuxws32;
end.
3、.profile配置示例
#@(#)$Revision:
72.2$
#Defaultuser.profilefile(/usr/bin/shinitialization).
#Setuptheterminal:
if["$TERM"=""]
then
eval`tset-s-Q-m':
?
hp'`
else
eval`tset-s-Q`
fi
sttyerase"^H"kill"^U"intr"^C"eof"^D"
sttyhupclixonixoff
tabs
#Setupthesearchpaths:
PATH=$PATH:
.
#Setuptheshellenvironment:
set-u
trap"echo'logout'"0
#Setuptheshellvariables:
EDITOR=vi
exportEDITOR
#oracleenv
ORACLE_HOME=/oracle/app/oracle/product/8.0.5
ORACLE_SID=cnc
ORACLE_TERM=vt100
ORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/data
TMPDIR=/oracle/tmp
PATH=$PATH:
$ORACLE_HOME/bin:
$ORACLE_HOME
NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280
LD_LIBRARY_PATH=/oracle/app/oracle/product/8.0.5/lib:
/usr/lib
exportORACLE_HOMEORACLE_SIDORACLE_TERMLD_LIBRARY_PATH
TERM=vt100;exportTERM
exportORA_NLS32TMPDIRPATHNLS_LANGLD_LIBRARY_PATH
#tuxedoenv
TUXDIR=/opt/tuxedo;exportTUXDIR
PATH=$PATH:
$TUXDIR/bin;exportPATH
TUXINC_PATH=$TUXDIR/include;exportTUXINC_PATH
SHLIB_PATH=$TUXDIR/lib:
$SHLIB_PATH;exportSHLIB_PATH
COBCPY=:
$TUXDIR/cobinclude;exportCOBCPY
COBOPT="-CANS85-CALIGN=8-CNOIBMCOMP-CTRUNC=ANSI-COSEXT=cbl";exportCOBOPT
#tuxedoconfigenv
APPDIR=/oracle/sp3/bin;exportAPPDIR
TUXCONFIG=$APPDIR/tuxconfig;exportTUXCONFIG
4Ubb示例:
#ident"@(#)apps/simpapp/ubbsimple$Revision:
1.1$"
#SkeletonUBBCONFIGfilefortheTUXEDOSimpleApplication.
#Replacetheitemswiththeappropriatevalues.
*RESOURCES
IPCKEY32888
DOMAINIDsimpapp
MASTERsimple
MAXACCESSERS100
MAXSERVERS50
MAXSERVICES100
MODELSHM
LDBALN
*MACHINES
DEFAULT:
TUXDIR="/opt/tuxedo"
APPDIR="/oracle/sp3/bin"
TUXCONFIG="/oracle/sp3/bin/tuxconfig"
MAXWSCLIENTS=80
ULOGPFX="/oracle/sp3/bin/ULOG"
#TLOGDEVICE="/oracle/sp3/bin/TLOG"
#TLOGSIZE=100
"fiber"LMID=simple
*GROUPS
WSLGRP1LMID=simpleGRPNO=2
GROUP1LMID=simpleGRPNO=1
#TMSNAME=TMS_ORATMSCOUNT=2
#OPENINFO="Oracle_XA:
Oracle_XA+LogDir=/oracle/sp3+Acc=P/spgroup/spgroup+SesTm=60"
CY注:
如果用XA,必须设置TMSNAME、OPENINOF
*SERVERS
DEFAULT:
CLOPT="-A"
WSLSRVGRP=WSLGRP1SRVID=1
CLOPT="-A-t---n//192.168.100.57:
10000-m2-M4-x5"
CY注:
WSL地址必须与客户端WSNADRR设置一致
simpservSRVGRP