tuxedo可以在win8上面win8安装密钥吗

6002人阅读
配置文件UBBCONFIG介绍一个TUXEDO应用系统的所有资源都在一个文本文件中进行定义,该文件称为UBBCONFIG,在配置完成后,UBBCONFIG被编译成一个二进制的文件TUXCONFIG.在TUXEDO系统启动时,从该文件中读取系统的配置信息。 UBBCONFIG文件类似WINDOWS下的*.INI文件。它包括以下9大部分, 我们称之为节,RESOURCES,MACHIENS,GROUPS这三个节必须的,其他的节是可选的。RESOURCES(必需): 与整个系统有关的配置信息MACHINES(必需): 一个TUXEDO应用系统可以跨越多台服务器,在该节中配置与每台服务器有关的信息GROUPS(必需): TUXEDO中的服务可被分为多个组,在该节中配置与组有关的信息SERVERS(可选): 与SERVER有关的信息在该节配置SERVICES(可选): 与SERVICES有关的信息在该节配置NETWORK(可选):与网络有关的信息在该节配置ROUTING(可选) :路由规则在该节配置NETGROUPS(可选):与网络分组有关的信息在该节配置名称解释:TUXEDO应用系统一个TUXEDO应用系统包括服务端,客户端,服务端安装在服务器上,客户端一般安装在PC机上,从开发角度看,一个TUXEDO应用系统包括服务端程序,客户端程序,一个配置文件。此外,一个TUXEDO应用系统可以部署在一台服务器上,也可以部署在多台服务器上。SERVER:服务端程序用C或COBAL编写,每一个程序文件编译成一个相应可执行文件,该可执行文件在运行时称为SERVER,它实际上就是一个进程。每个SERVER都有一个名字,也就是该进程的名字。为与TUXEDO应用系统的服务端区分,我们在本书中,我们用SERVER表示该进程,用服务端表示TUXEDO应用系统的服务端。SERVICE:在每个服务端程序中,主要是一个个的函数,在TUXEDO中称这些函数为SERVICE,一般也称之为服务。在该SERVICE中实现业务逻辑,在客户端中调用这些SERVICE来实现各种操作,如在前面的例子simpapp中,服务端程序为simpserv.c,它编译成可执行文件simperv, simpserv就是一个SERVER,该SERVER包括SERVICE:TOUPPER。
下面我们给出一个配置文件的例子:*RESOURCESIPCKEY 123456MASTER simpleUID 0GID 0PERM 0666MAXACCESSERS 100DOMAINID simpappMODEL SHMLDBAL YSCANUNIT 10SANITYSCAN 12BLOCKTIME 6NOTIFY DIPINMAXCONV 10*MACHINES&MYSYS& LMID=&simple&TUXCONFIG=&d:/tuxdemo/pbdemo/tuxconfig&TUXDIR=&d:/tuxedo65&APPDIR=&d:/tuxdemo/pbdemo&TLOGDEVICE=&d:/tuxdemo/pbdemo/TLOG&TLOGNAME=&TLOG&TLOGSIZE=100MAXWSCLIENTS=5CMPLIMIT=&MAXLONG,MAXLONG&NETLOAD=0SPINCOUNT=0MAXACLCACHE=100*GROUPS&GROUP1& LMID=&simple& GRPNO=1OPENINFO=&Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=600+MaxCur=5+LogDir=.&TMSNAME=&TMS_ORA8i&TMSCOUNT=2*SERVERSDEFAULT:CLOPT=&-A&&simpserv& SRVGRP=&GROUP1& SRVID=1CLOPT=&-A&RQADDR=&simpserv&RQPERM=0660 REPLYQ=Y RPPERM=0660 MIN=5 MAX=5 CONV=NMAXGEN=1 GRACE=86400 RESTART=N&WSL& SRVGRP=&GROUP1& SRVID=1116CLOPT=&-A -- -n //MYSERVER:8888 -m 2 -M 5 -x 6&*SERVICES&TOUPPER&LOAD=50 PRIO=50BUFTYPE=&ALL&TRANTIME=30AUTOTRAN=N*ROUTING各节之间的包含关系:从上到下,是一对多的关系,即:一个TUXEDO系统可以跨越多台服务器,一台服务器上可以有多个GROUP,但一个GROUP只能在一台服务器上,一个GROUP中可以有多个SERVER,一个SERVER中可以有多个SERVICE。
下面我们分别对每个节种具体的常见配置进行说明,NETWORK,NETGROUP,ROUTING三节及其他比较高级的配置我们在后面的内容中说明RESOURCES(必需):该节是必须的,在这里配置与整个TUXEDO应用系统有关的信息,主要包括:IPCKEY: TUXEDO使用它标识公告板及其他的IPC资源。它不能与该服务器上其他的IPC资源的ID号冲突范围:32,769-262,142MASTER: 指定该TUXEDO应用系统的MASTER服务器,在该服务器上对整个TUXEDO系统进行管理配置,可以为该MASTER服务器指定一台备份服务器,当该MASTER服务器当机时,可从BACKUP服务器上进行管理。在进行系统迁移时,也要指定BACKUP服务器。DOMAINID:该TUXEDO应用系统的唯一标识UID, GID, PERM:这三个参数控制对系统IPC资源的存取权限UID: 可对该TUXEDO应用系统进行管理的TUXEDO系统管理员的用户ID,在UNIX下就是UNIX系统的用户ID,默认为执行TMLOADCF的用户的ID。在NT下该设置没有用,要设为0。GID: 在UNIX下为UID中所指定的用户所在的组ID,在NT下该设置没有用,要设为0PERM: 指定对TUXEDO系统IPC资源的存取权限。默认值为0666,即任何人都可以对该IPC资源进行存取。MAXACCESSERS,MAXSERVERS,MAXSERVICES:这三个参数控制该TUXEDO应用系统对IPC资源的使用情况。MAXACCESSERS: 在本系统的一个节点(一台服务器)上,同时可以有多少个进程可以访问该TUXEDO系统的公告板,默认值为50,它包括本地客户端进程,SERVER进程,但不包括管理进程如:BBL,DBBL等MAXSERVERS: 在本系统中,总共可以有多少个SERVER存在,包括进行管理的SERVER,如:BBL,TMS等。默认值为50。MAXSERVICES: 在本系统中,总共可以有多少个SEVICE存在, 默认值为100。&TUXEDO应用系统的部署方式:一个TUXEDO应用系统可能部署在一台服务器上或多台服务器上,也可能是部署在共用一块全局共享内存的几台服务器上,可在MODEL,OPTIONAS中配置该TUXEDO应用系统的部署模式。MODLE:SHM: 单机或多台服务器但共用一个全局共享内存MP: 多台服务器但没有共用一个全局共享内存OPTION: LAN: 是多机(MP)部署模式MIGRATE: 可对该系统进行迁移
TUXEDO的管理进程BBL定时对它所在的服务器上的TUXEDO系统进行检查,检查超时的事务,超时的客户端连接等。SCANUNIT: 指定检查的最小时间单位,它单位为秒,必须是5的倍数。默认值为10,即10秒。SANTIYSCAN: 每隔多少个SCANUNIT检查一次, SANITYSCAN*SCANUNIT不能大于300秒。默认值为12,即120秒BLOCKTIME: 指定一个消息可以阻塞多长时间,如果过了SANITYSCAN*SCANUNIT秒该消息还没有发送出去,将超时出错。 SANITYSCAN*SCANUNIT不能大于32767秒。默认值为6,即60秒。同步调用的超时说明对同步调用TPCALL,指从TPCALL()开始调用,到SERVER端的返回结果到到该客户端并写到输入缓冲区这一段时间。包括:客户端开始调用TPCALL()把数据通过网络发送到SERVER端SERVER端的处理时间SERVER端把处理结果通过网络返回给客户端客户端TPCALL()调用返回异步调用和会话方式的超时说明对异步调用和会话方式,当一个进程调用TPACALL(),TPCONNECT(),TPSEND()时,超时时间只包括如果接收队列满时,这些调用的等待时间,如在TPACALL()中,所调用的SERVICE的接收队列如果满了,那么TPACALL()可阻塞在那里,直到该队列不满,可以接收该TPACALL()发送的请求。从TPACALL()开始阻塞到TPACALL()返回这段时间为它的超时时间。对TPGETRPLY(),TPRECV()的超时时间是指如果要接收的队列为空时,它们应该阻塞在那里等待有消息到来的时间。如:超时时间为60秒, 一点整调用TPGETRPLY()从接收的队列取消息,这时接收队列为空,如果到了一点零一分该接受队列还为空,那么TPGETRPLY()将超时出错。LDBAL: 要不要进行负载均衡,Y:要,N:不要,默认值为不要MAXCONV: 在一台服务器上最多可以有多少个会话同时存在。范围:0-32768,默认值为10NOTIFY : 设置消息的通知方式,有以下3种:默认为DIPINIGNORE: 该TUXEDO系统中的CLIENT不接收任何消息SIGNAL: 用SIGUSR1,SIGUSR2信号通知CLIENT有消息到来,如果在非UNIX平台上设置采用该方式,那么会被自动转化为DIPIN方式。DIPIN: 当CLIENT调用ATMI函数时,顺便检查看是否有消息,如果有就发送给该CLIENT默认值为DIPIN
*MACHINES(必需):该TUXEDO应用系统所包含的每台服务器都要在该节中进行配置LMID: 在TUXEDO,要为该应用系统中的每台服务器指定一个逻辑服务器名。如在上面的例子中,TUXEDO应用服务器MYSYS对应的逻辑服务器名为:simple,TUXEDO应用服务器名的查看方法:1. 在UNIX/linux下用uname -n 或者hostname 查看SERVER的名字,2. 在NT,windows下用ECHO %COMPUTERNAME%或者hostname 查看SERVER的名字注意:如果SERVER的名字太长(&8)或含有&.&等可以& &引起来,如: &&TUXCONFIG: 配置文件TUXCONFIG所在的路径TUXDIR: TUXEDO的安装目录APPDIR: TUXEDO应用系统所在的目录注意:TUXCONFIG,TUXDIR,APPDIR的值要与它们在环境变量中的设置的值一样ENVFILE: 该服务器上与TUXEDO有关的环境变量(如FIELDTBLS等)可以放到一个文件中,在ENVFILE中指定该文件名。TYPE: 指定该服务器的类型,当两台服务器的TYPE不一样时,在它们之间传送数据时要进行编码/解码工作ULOGPFX: 指定ULOG文件所在的目录及前缀。默认目录为$APPDIR,前缀为ULOG。UID,GID,PERM,MAXACCESSERS,MAXCONV这些在RESOURCES中的配置,在MACHINES中可以被重新配置,并且这些新的配置值会覆盖在RESOURCES中的配置值。
*GROUPS(必需):在TUXEDO中,要对SERVER进行分组,配置GROUP主要有三个目的,1.因为GROUP与数据库之间是一对一的关系,在一TUXEDO应用系统中,如果有多个数据库,就要配置多个GROUP,在该GROUP中配置TUXEDO与数据库的连接参数等。2. 数据依赖路由是以GROUP为单位的。3.进行系统迁移时也时以GROUP为单位的一个GROUP有一个名字,还有一个GROUPID,GROUP的名字和GROUP ID在一个TUXEDO系统中必须唯一。每个GROUP要指定该GROUP所在的服务器,及它的ID号,如果该GROUP中的SERVER要与数据库或其他的资源管理器相连,那么要在OPENINFO中设置连接的参数。具体的配置我们在讲数据库编程时再说明。*SERVERS:该系统所包含的所有的SERVER都在该节进行配置。在DEFAULT中的设置对所有的SERVER起作用。SRVGRP: 该SERVER所在的GROUPSRVID: 该SERVER所对应的ID,在一个GROUP中必须唯一MIN: 该SERVER最少启动的进程数MAX: 该SERVER最多可启动的进程数RESTART,RCMD,MAXGEN,GRACE: 在TUXEDO系统了,当一个SERVER进程因某中原因死掉时,可设置它可以自动重起,这4个参数指定TUXEDO的重起信息。RESTART 该进程死掉时是否可以自动重起,默认为N(不可以)GRACE,MAXGEN:在GRACE秒内,该进程最多可以重启MAXGEN次。RCMD: 指定该SERVER重启时,要执行的一个可执行文件名注意:1.为了使一个SERVER可以自动重起,光设置了RESTART=Y还不够,还要设置GRACE,MAXGEN才能在该SERVER死掉时,自动重起,2. 该SERVER能够被自动重起的一个前提条件时它还没有被从BULLITION BOARD中清除。例子:test SRVGRP=GROUP1 SRVID=1 RESTART=Y GRACE=100000 MAXGEN=255该设置指定在100000秒的时间内,SERVER进程:test可以启动255次。在缺省情况下,TUXEDEO的每一个SERVER对应一个请求队列,该SERVER从该请求队列中取客户端发来的请求,并把处理的结果通过该请求队列返回给客户端,TUXEDO的SERVER可以配置成多个SERVER对应一个请求队列,即MSSQ方式,以提高响应的速度。与MSSQ有关的参数是:RQADDR:该请求队列的名字,一般设成与该SERVER的名字一样RAPERM:该请求队列的存取权限,默认为0666REPLYQ:该SERVER中的某个SERVICE调用其他的SERVICE,并有返回结果,则应设置REPLYQ=Y,即把其他SERVICE的应答放到该队列中CONV: 该SERVER是否采用会话(CONVERSATION)通讯方式,注意采用会话通讯方式的SERVICE要单独在一个SERVER中,不能与采用其他通讯方式的SERVICE在同一个SERVER中,并且该SERVER要设置CONV=YCLOPT: 指定该SERVER的启动参数。默认为-A,即再该SERVER启动时,发布该SERVER包含的所有的SERVICE。通用的有:-e: 指定错误输出文件,默认为$APPDIR下的stderr-o: 指定标准输出文件,默认为$APPDIR下的stdout-r: 记录该SERVER中SERVICE每次调用的处理时间,并记录在错误输出文件中,然后可采用TUXEDO的性能分析工具txrpt对该SERVER进行性能分析。-A: 发布该SERVER包含的所有的SERVICE&*SERVICES:在SERVICES中可针对每个SERVICE进行配置,主要有:AUTOTRAN: 调用该SERVICE时是否自动启一个全局事务。默认为NLOAD:如果采用负载均衡,指定该SERVICE的负载因子,默认为50PRIO: 指定该SERVICE的优先级,默认为50DDR: 指定数据依赖路由规则与远程客户端有关的配置:1.在MACHINES中要配置MAXWSCLIENTS,即最多可以有多少个远程客户端同时连接到该服务器上,在上面的例子中为5个2. 在SERVERS中要配置SERVER:WSLWSL SRVGRP=&GROUP1& SRVID=1116 CLOPT=&-A -- -n //192.168.120.113:8888 -m 2 -M 5 -x 6&说明:-n //192.168.120.113:8888: 远程客户端通过该端口与服务器建立连接-m 2 :最少启动多少个WSH进程-M 5::最多启动多少个WSH进程,默认值为MAXWSCLIENTS/m-x 6:每个WSH进程可同时处理多少个远程客户端3.程客户端所在的服务器上要配置WSNADDR环境变量,它的值为-n参数的值,如在上面的配置中为:SET WSNADDR= //192.168.120.113:8888配置文件UBBCONFIG的编译:用下面的命令进行编译:tmloadcf &y UBBCONFIG文件名如:下面的命令编译名为ubbsimple的TUXEDO配置文件,生成二进制的配置文件TUXCONFIGtmloadcf &y ubbsimple有时候在改变了TUXCONFIG的目录后,执行tmloadcf,会出现类似下面的错误,可把原来的TUXCONFIG文件删除,然后再编译。D:/simpdb&tmloadcf -y ubbCMDTUX_CAT:1601: ERROR: TUXCONFIG,TUXOFFSET d:/simpdb/tuxconfig 0 doesn't match first device entry on configuration d:/tuxdemo/simpdb/tuxconfig 0D:/simpdb&del tuxconfigD:/simpdb&tmloadcf -y ubbD:/simpdb&用tmunloadcf命令可对二进制的配置文件TUXCONFIG的进行反编译如下面的命令反编译TUXCONFIG,并把结果输出到文件myubb中。通过反编译TUXCONFIG可查看该TUXEDO应用系统的一些属性默认值。Tmunloadcf &myubb&
3.2 多机(MP)模式的配置一个TUXEDO应用系统可以部署在多台服务器上,这些服务器通过网络连接,这种部署方式称为MP方式,在这些服务器中要选择一台服务器做MASTER服务器,在该服务器上有一个DBBL进程,负责整个TUXEDO应用系统的管理工作。在每台服务器上都有一个BBL进程,它与DBBL进程进行通信,管理各自服务器上的配置。每台服务器上还有一个名为BRIDGE的进程和一个名为TLISTEN的进程,他们负责服务器之间的通讯。MP模式的结构如图:&
如果配置了MP方式,那么在这些服务器之间可以做负载均衡和容错,客户端可以和其中的任何一台服务器建立连接,如果该服务器上没有该客户端所要调用的服务(SERVICE),TUXEDO可以自动把请求发送到别的有该服务的机器取处理,并把结果返回个客户端,如图,SITE1上的客户端调用了TRANSFER,当在SITE1上没有该SERVICE,在SITE3上有,那么SITE1通过BRIDGE把请求发送到SITE3上,SITE3把处理结果也通过BRIDGE发送到SITE1上,通过SITE1把结果返回给该客户端。这些对客户端时透明的。如果SITE1,STIE2,SITE3上都有TRANSFER,并且设置了负载均衡(LDBAL =Y),那么TUXEDO将根据他们的负载情况把请求发送到负载较小的服务器上。如果SITE1,SITE2,SITE3中的某一台或两台服务器出故障了,那么正常的机器仍然能够继续运行,如果时他们之间的网络连接断了,BRIDGE进程会自动进行重试,并且在这些服务器之间可以配置多个网络连接通路,当其中的一个出现故障时,会自动采用别的连接通路。所以MP方式提供了一个高可靠性的分布式应用系统。配置成MP方式的步骤:1. 这些服务器之间可以通过网络互相访问2. 在每台服务器上都正确安装了TUXEDO SERVER3. 应用已发布到这些服务器上4. 选择一台服务器做MASTER机,6. 在RESOURCES,MACHINES,NETWORK,NETGROUPS中做相应的配置RESOURCE:MODEL要设为MPOPTIONS中要有LANMASTER服务器上的DBBL负责与其他服务器上的服务器BBL进行通讯,BBLQUERY: 每台服务器上的BBL每隔SCANUNIT*BBLQUERY秒,向MASTER机上的DBBL发送一次状态信息。默认为300秒DBBLWAIT: 如果MASTER机没有收到某台服务器发送的状态信息,它将等待SCANUNIT*DBBLWAIT秒,如果还没有收到该服务器发送的状态信息,这台服务器将被分离出去(PARTITIONED),默认为20秒MACHIENS:在MACHINES中要配置该TUXEDO应用系统包括的每台服务器,如果该服务器时UNIX服务器,那么要配置UID,GID,UID,GID为TUXEDO用户所对应的UID,GID,在UNIX下可以用ID命令查看。
NETWORK:在该节中配置服务器之间通讯的IP地址及BRIDGE进程,在一个MP方式的TUXEDO应用系统中,不同的服务器之间通过BRIDGE进程进行通讯,该BRIDGE的侦听IP地址及端口在NADDR中指定。如果是在UNIX下要指定该BRIDGE所用的网络设备,如果是在NT下则不要。在TUXEDO系统启动前,不同服务器之间的通讯是通过tlisten进程来进行的,因为这时还没有BRIDGE进程。NLSADDR为tlisten进程侦听的IP地址及端口。一个MP方式的配置例子。环境:WIN2000服务器一台,安装TUXEDO6.5, 服务器名WIN,IP地址:10.13.1.124SUN5.8服务器一台,安装TUXEDO6.5, 服务器名SUN,IP地址:12.22.32.35MASTER机为WIN2000服务器,BACKUP机为SUN。在WIN2000服务器上的UBBCONFIG的内容如下,在SUN服务器上不用编写UBBCONFIG文件。当启动时DBBL会自动把WIN2000服务器上的TUXCONFIG文件发送到SUN服务器上。*RESOURCESIPCKEY 87656MASTER site1,site2MAXACCESSERS 40MAXSERVERS 40MAXSERVICES 40MODEL MPOPTIONS LAN*MACHINESWIN LMID=site1APPDIR=&d:/tuxdemo/mp&TUXCONFIG=&d:/tuxdemo/mp/tuxconfig&TYPE=&win2000&TUXDIR=&d:/tuxedo65&SUN LMID=site2UID=1006GID=30APPDIR=&/export/home/simpapp&TUXCONFIG=&/export/home/simpapp/tuxconfig&TYPE=&sun&TUXDIR=&/export/home/tuxedo&*GROUPSGROUP1LMID=site1 GRPNO=1 OPENINFO=NONEGROUP2LMID=site2 GRPNO=2 OPENINFO=NONE
*NETWORKsite1 NADDR=&//10.13.1.124:6000&NLSADDR=&//10.13.1.124:6001&
site2 NADDR=&//12.22.32.35:6000&NLSADDR=&//12.22.32.35:6001&BRIDGE=&/dev/tcp&&*SERVERSDEFAULT:CLOPT=&-A&simpserv SRVGRP=GROUP2 SRVID=3*SERVICESTOUPPER
1. 在WIN2000服务器上把该UBBCONFIG编译成TUXCONFIGtmloadcf -y ubbmp2. 在WIN2000服务器上启动tlisten进程tlisten -l //10.13.1.124:60013. 在SUN服务器上启动tlisten进程tlisten -d /dev/tcp -l /12.22.32.35:60014. 在WIN2000服务器上启动该TUXEDO应用系统tmboot -yTUXEDO会先启动WIN2000服务器上的进程,然后再启动SUN服务器上的进程。5. 在WIN2000服务器上执行simpcl mp test因为WIN2000服务器上没有TOUPPER服务,TUXEDO会自动调用SUN服务器上的TOUPPER服务,并把结果返回给客户端,这一切对客户端来说是透明的 问题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=Cexport LC_ALL=C重新执行tmloadcf -y ubb,没有错误,问题解决
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:248502次
积分:3468
积分:3468
排名:第3429名
原创:101篇
转载:17篇
评论:42条
(1)(1)(2)(2)(2)(2)(2)(3)(8)(8)(3)(9)(1)(1)(4)(10)(1)(8)(22)(10)(18)2949人阅读
关键字: 远程客户端配置
TUXEDO应用系统的配置
3.1 TUXEDO应用系统的常见配置
配置文件UBBCONFIG介绍
一个TUXEDO应用系统的所有资源都在一个文本文件中进行定义,该文件称为UBBCONFIG,在配置完成后,UBBCONFIG被编译成一个二进制的
文件TUXCONFIG.在TUXEDO系统启动时,从该文件中读取系统的配置信息。
UBBCONFIG文件类似WINDOWS下的*.INI文件。它包括以下9大部分,
我们称之为节,RESOURCES,MACHIENS,GROUPS
这三个节必须的,其他的节是可选的。
RESOURCES(必需): 与整个系统有关的配置信息
MACHINES(必需): 一个TUXEDO应用系统可以跨越多台服务器,在该节中配置与每台服务
器有关的信息
GROUPS(必需): TUXEDO中的服务可被分为多个组,在该节中配置与组有关的信息
SERVERS(可选): 与SERVER有关的信息在该节配置
SERVICES(可选): 与SERVICES有关的信息在该节配置
NETWORK(可选):与网络有关的信息在该节配置
ROUTING(可选) :路由规则在该节配置
NETGROUPS(可选):与网络分组有关的信息在该节配置
名称解释:
TUXEDO应用系统
一个TUXEDO应用系统包括服务端,客户端,服务端安装在服务器上,客户端一般安装在PC机上,从开发角度看,一个TUXEDO应用系统包括服务端程
序,客户端程序,一个配置文件。此外,一个TUXEDO应用系统可以部署在一台服务器上,也可以部署在多台服务器上。
服务端程序用C或COBAL编写,每一个程序文件编译成一个相应可执行文件,该可执行文件在运行时称为SERVER,它实际上就是一个进程。每个
SERVER都有一个名字,也就是该进程的名字。为与TUXEDO应用系统的服务端区分,我们在本书中,我们用SERVER表示该进程,用服务端表示
TUXEDO应用系统的服务端。
在每个服务端程序中,主要是一个个的函数,在TUXEDO中称这些函数为SERVICE,一般
也称之为服务。在该SERVICE中实现业务逻辑,在客户端中调用这些SERVICE来实现各
种操作,如在前面的例子simpapp中,服务端程序为simpserv.c,它编译成可执行文件
simperv, simpserv就是一个SERVER,该SERVER包括SERVICE:TOUPPER。
下面我们给出一个配置文件的例子:
*RESOURCES
IPCKEY 123456
MASTER simple
MAXACCESSERS 100
DOMAINID simpapp
SCANUNIT 10
SANITYSCAN 12
BLOCKTIME 6
NOTIFY DIPIN
MAXCONV 10
&MYSYS& LMID=&simple&
TUXCONFIG=&d:/tuxdemo/pbdemo/tuxconfig&
TUXDIR=&d:/tuxedo65&
APPDIR=&d:/tuxdemo/pbdemo&
TLOGDEVICE=&d:/tuxdemo/pbdemo/TLOG&
TLOGNAME=&TLOG&
TLOGSIZE=100
MAXWSCLIENTS=5
CMPLIMIT=&MAXLONG,MAXLONG&
SPINCOUNT=0
MAXACLCACHE=100
&GROUP1& LMID=&simple& GRPNO=1
OPENINFO=&Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=600+MaxCur=5+LogDir=.&
TMSNAME=&TMS_ORA8i&
TMSCOUNT=2
CLOPT=&-A&
&simpserv& SRVGRP=&GROUP1& SRVID=1
CLOPT=&-A&
RQADDR=&simpserv&
RQPERM=0660 REPLYQ=Y RPPERM=0660 MIN=5 MAX=5 CONV=N
MAXGEN=1 GRACE=86400 RESTART=N
&WSL& SRVGRP=&GROUP1& SRVID=1116
CLOPT=&-A -- -n //MYSERVER:8888 -m 2 -M 5 -x 6&
LOAD=50 PRIO=50
BUFTYPE=&ALL&
TRANTIME=30
AUTOTRAN=N
各节之间的包含关系:
从上到下,是一对多的关系,即:一个TUXEDO系统可以跨越多台服务器,一台服务器上可以有多个GROUP,但一个GROUP只能在一台服务器上,一个
GROUP中可以有多个SERVER,一个SERVER中可以有多个SERVICE。
下面我们分别对每个节种具体的常见配置进行说明,NETWORK,NETGROUP,ROUTING三节及其他比较高级的配置我们在后面的内容中说明
RESOURCES(必需):
该节是必须的,在这里配置与整个TUXEDO应用系统有关的信息,主要包括:
IPCKEY: TUXEDO使用它标识公告板及其他的IPC资源。它不能与该服务器上其他的IPC资源的ID号冲突范围:32,769-262,142
MASTER: 指定该TUXEDO应用系统的MASTER服务器,在该服务器上对整个TUXEDO系
统进行管理配置,可以为该MASTER服务器指定一台备份服务器,当该MASTER
服务器当机时,可从BACKUP服务器上进行管理。在进行系统迁移时,也要指定
BACKUP服务器。
DOMAINID:该TUXEDO应用系统的唯一标识
UID, GID, PERM:这三个参数控制对系统IPC资源的存取权限
UID: 可对该TUXEDO应用系统进行管理的TUXEDO系统管理员的用户ID,在UNIX下
就是UNIX系统的用户ID,默认为执行TMLOADCF的用户的ID。在NT下该设置
没有用,要设为0。
GID: 在UNIX下为UID中所指定的用户所在的组ID,在NT下该设置没有用,要设为0
PERM: 指定对TUXEDO系统IPC资源的存取权限。默认值为0666,即任何人都可以对该IPC资源进行存取。
MAXACCESSERS,MAXSERVERS,MAXSERVICES:这三个参数控制该TUXEDO应用系统对IPC资源的使用情况。
MAXACCESSERS: 在本系统的一个节点(一台服务器)上,同时可以有多少个进程可以访问
该TUXEDO系统的公告板,默认值为50,它包括本地客户端进
程,SERVER进程,但不包括管理进程如:BBL,DBBL等
MAXSERVERS: 在本系统中,总共可以有多少个SERVER存在,包括进行管理的SERVER,
如:BBL,TMS等。默认值为50。
MAXSERVICES: 在本系统中,总共可以有多少个SEVICE存在, 默认值为100。
TUXEDO应用系统的部署方式:
一个TUXEDO应用系统可能部署在一台服务器上或多台服务器上,也可能是部署在共用一块全局共享内存的几台服务器上,可在MODEL,OPTIONAS
中配置该TUXEDO应用系统的部署模式。
SHM: 单机或多台服务器但共用一个全局共享内存
MP: 多台服务器但没有共用一个全局共享内存
OPTION: LAN: 是多机(MP)部署模式
MIGRATE: 可对该系统进行迁移
TUXEDO的管理进程BBL定时对它所在的服务器上的TUXEDO系统进行检查,检查超时的事务,超时的客户端连接等。
SCANUNIT: 指定检查的最小时间单位,它单位为秒,必须是5的倍数。默认值为10,即10
SANTIYSCAN: 每隔多少个SCANUNIT检查一次, SANITYSCAN*SCANUNIT不能大于
300秒。默认值为12,即120秒
BLOCKTIME: 指定一个消息可以阻塞多长时间,如果过了SANITYSCAN*SCANUNIT秒该
消息还没有发送出去,将超时出错。 SANITYSCAN*SCANUNIT不能大于
32767秒。默认值为6,即60秒。
同步调用的超时说明
对同步调用TPCALL,指从TPCALL()开始调用,到SERVER端的返回结果到到该客户端并写到输入缓冲区这一段时间。包括:
客户端开始调用TPCALL()
把数据通过网络发送到SERVER端
SERVER端的处理时间
SERVER端把处理结果通过网络返回给客户端
客户端TPCALL()调用返回
异步调用和会话方式的超时说明
对异步调用和会话方式,当一个进程调用TPACALL(),TPCONNECT(),TPSEND()时,超时时间只包括如果接收队列满时,这些调用的等
待时间,如在TPACALL()中,所调用的SERVICE的接收队列如果满了,那么TPACALL()可阻塞在那里,直到该队列不满,可以接收该
TPACALL()发送的请求。从TPACALL()开始阻塞到TPACALL()返回这段时间为它的超时时间。
对TPGETRPLY(),TPRECV()的超时时间是指如果要接收的队列为空时,它们应该阻塞在那里等待有消息到来的时间。
如:超时时间为60秒,
一点整调用TPGETRPLY()从接收的队列取消息,这时接收队列为空,如果到了一点零一分该接受队列还为空,那么TPGETRPLY()将超时出错。
LDBAL: 要不要进行负载均衡,Y:要,N:不要,默认值为不要
MAXCONV: 在一台服务器上最多可以有多少个会话同时存在。范围:0-32768,默认值为10
NOTIFY : 设置消息的通知方式,有以下3种:默认为DIPIN
IGNORE: 该TUXEDO系统中的CLIENT不接收任何消息
SIGNAL: 用SIGUSR1,SIGUSR2信号通知CLIENT有消息到来,如果在非UNIX平台上设
置采用该方式,那么会被自动转化为DIPIN方式。
DIPIN: 当CLIENT调用ATMI函数时,顺便检查看是否有消息,如果有就发送给该
CLIENT默认值为DIPIN
*MACHINES(必需):
该TUXEDO应用系统所包含的每台服务器都要在该节中进行配置
LMID: 在TUXEDO,要为该应用系统中的每台服务器指定一个逻辑服务器名。如在上面的例子中,TUXEDO应用服务器MYSYS对应的逻辑服务器
名为:simple,
TUXEDO应用服务器名的查看方法:
1. 在UNIX下用uname -n 查看SERVER的名字,
2. 在NT,WIN2000下用ECHO %COMPUTERNAME$查看SERVER的名字
注意:如果SERVER的名字太长(&8)或含有&.&等可以& &引起来,如: &&
TUXCONFIG: 配置文件TUXCONFIG所在的路径
TUXDIR: TUXEDO的安装目录
APPDIR: TUXEDO应用系统所在的目录
注意:TUXCONFIG,TUXDIR,APPDIR的值要与它们在环境变量中的设置的值一样
ENVFILE: 该服务器上与TUXEDO有关的环境变量(如FIELDTBLS等)可以放到一个文件中,在ENVFILE中指定该文件名。
TYPE: 指定该服务器的类型,当两台服务器的TYPE不一样时,在它们之间传送数据时要进行
编码/解码工作
ULOGPFX: 指定ULOG文件所在的目录及前缀。默认目录为$APPDIR,前缀为ULOG。
UID,GID,PERM,MAXACCESSERS,MAXCONV这些在RESOURCES中的配置,在MACHINES中可以被重新配
置,并且这些新的配置值会覆盖在RESOURCES中的配置值。
*GROUPS(必需):
在TUXEDO中,要对SERVER进行分组,配置GROUP主要有三个目的,
1.因为GROUP与数据库之间是一对一的关系,在一TUXEDO应用系统中,如果有多个数据库,就要配置多个GROUP,在该GROUP中配置
TUXEDO与数据库的连接参数等。
2. 数据依赖路由是以GROUP为单位的。
3.进行系统迁移时也时以GROUP为单位的一个GROUP有一个名字,还有一个GROUP
ID,GROUP的名字和GROUP ID在一个TUXEDO系统中必须唯一。
每个GROUP要指定该GROUP所在的服务器,及它的ID号,如果该GROUP中的SERVER
要与数据库或其他的资源管理器相连,那么要在OPENINFO中设置连接的参数。具体的配置我们在讲数据库编程时再说明。
该系统所包含的所有的SERVER都在该节进行配置。
在DEFAULT中的设置对所有的SERVER起作用。
SRVGRP: 该SERVER所在的GROUP
SRVID: 该SERVER所对应的ID,在一个GROUP中必须唯一
MIN: 该SERVER最少启动的进程数
MAX: 该SERVER最多可启动的进程数
RESTART,RCMD,MAXGEN,GRACE:
在TUXEDO系统了,当一个SERVER进程因某中原因死掉时,可设置它可以自动重起,这4个参数指定TUXEDO的重起信息。
RESTART 该进程死掉时是否可以自动重起,默认为N(不可以)
GRACE,MAXGEN:在GRACE秒内,该进程最多可以重启MAXGEN次。
RCMD: 指定该SERVER重启时,要执行的一个可执行文件名
1.为了使一个SERVER可以自动重起,光设置了RESTART=Y还不够,还要设置
GRACE,MAXGEN才能在该SERVER死掉时,自动重起,
2. 该SERVER能够被自动重起的一个前提条件时它还没有被从BULLITION BOARD中清
test SRVGRP=GROUP1 SRVID=1 RESTART=Y GRACE=100000 MAXGEN=255
该设置指定在100000秒的时间内,SERVER进程:test可以启动255次。
在缺省情况下,TUXEDEO的每一个SERVER对应一个请求队列,该SERVER从该请求队列中取客户端发来的请求,并把处理的结果通过该请求队列返
回给客户端,TUXEDO的SERVER可以配置成多个SERVER对应一个请求队列,即MSSQ方式,以提高响应的速度。
与MSSQ有关的参数是:
RQADDR:该请求队列的名字,一般设成与该SERVER的名字一样
RAPERM:该请求队列的存取权限,默认为0666
REPLYQ:该SERVER中的某个SERVICE调用其他的SERVICE,并有返回结果,则应设置
REPLYQ=Y,即把其他SERVICE的应答放到该队列中
该SERVER是否采用会话(CONVERSATION)通讯方式,注意采用会话通讯方式的SERVICE要单独在一个SERVER中,不能与采用其他通
讯方式的SERVICE在同一个SERVER中,并且该SERVER要设置CONV=Y
CLOPT: 指定该SERVER的启动参数。默认为-A,即再该SERVER启动时,发布该SERVER
包含的所有的SERVICE。通用的有:
-e: 指定错误输出文件,默认为$APPDIR下的stderr
-o: 指定标准输出文件,默认为$APPDIR下的stdout
-r: 记录该SERVER中SERVICE每次调用的处理时间,并记录在错误输出文件中,然后可采用
TUXEDO的性能分析工具txrpt对该SERVER进行性能分析。
-A: 发布该SERVER包含的所有的SERVICE
*SERVICES:
在SERVICES中可针对每个SERVICE进行配置,主要有:
AUTOTRAN: 调用该SERVICE时是否自动启一个全局事务。默认为N
LOAD:如果采用负载均衡,指定该SERVICE的负载因子,默认为50
PRIO: 指定该SERVICE的优先级,默认为50
DDR: 指定数据依赖路由规则
与远程客户端有关的配置:
1.在MACHINES中要配置MAXWSCLIENTS,即最多可以有多少个远程客户端同时连接
到该服务器上,在上面的例子中为5个
2. 在SERVERS中要配置SERVER:WSL
WSL SRVGRP=&GROUP1& SRVID=1116 CLOPT=&-A -- -n //192.168.120.113:8888 -m
2 -M 5 -x 6&
-n //192.168.120.113:8888: 远程客户端通过该端口与服务器建立连接
-m 2 :最少启动多少个WSH进程
-M 5::最多启动多少个WSH进程,默认值为MAXWSCLIENTS/m
-x 6:每个WSH进程可同时处理多少个远程客户端
3.程客户端所在的服务器上要配置WSNADDR环境变量,它的值为-n参数的值,如在上面的配置中为:
SET WSNADDR= //192.168.120.113:8888
配置文件UBBCONFIG的编译:
用下面的命令进行编译:
tmloadcf &y UBBCONFIG文件名
如:下面的命令编译名为ubbsimple的TUXEDO配置文件,生成二进制的配置文件
tmloadcf &y ubbsimple
有时候在改变了TUXCONFIG的目录后,执行tmloadcf,会出现类似下面的错误,可把原来的TUXCONFIG文件删除,然后再编
D:/simpdb&tmloadcf -y ubb
CMDTUX_CAT:1601: ERROR: TUXCONFIG,TUXOFFSET d:/simpdb/tuxconfig 0
doesn't match first device entry on configuration
d:/tuxdemo/simpdb/tuxconfig 0
D:/simpdb&del tuxconfig
D:/simpdb&tmloadcf -y ubb
D:/simpdb&
用tmunloadcf命令可对二进制的配置文件TUXCONFIG的进行反编译
如下面的命令反编译TUXCONFIG,并把结果输出到文件myubb中。通过反编译TUXCONFIG可查看该TUXEDO应用系统的一些属性默认值。
Tmunloadcf &myubb
3.2 多机(MP)模式的配置
一个TUXEDO应用系统可以部署在多台服务器上,这些服务器通过网络连接,这种部署方式称为MP方式,在这些服务器中要选择一台服务器做
MASTER服务器,在该服务器上有一个DBBL进程,负责整个TUXEDO应用系统的管理工作。在每台服务器上都有一个BBL进程,它与DBBL进程进
行通信,管理各自服务器上的配置。每台服务器上还有一个名为BRIDGE的进程和一个名为TLISTEN的进程,他们负责服务器之间的通讯。MP模式的结
如果配置了MP方式,那么在这些服务器之间可以做负载均衡和容错,客户端可以和其中的任何一台服务器建立连接,如果该服务器上没有该客户端所要调用的服务
(SERVICE),TUXEDO可以自动把请求发送到别的有该服务的机器取处理,并把结果返回个客户端,如图,SITE1上的客户端调用了
TRANSFER,当在SITE1上没有该SERVICE,在SITE3上有,
那么SITE1通过BRIDGE把请求发送到SITE3上,SITE3把处理结果也通过BRIDGE发送到SITE1上,通过SITE1把结果返回给该客
户端。这些对客户端时透明的。
如果SITE1,STIE2,SITE3上都有TRANSFER,并且设置了负载均衡(LDBAL
=Y),那么TUXEDO将根据他们的负载情况把请求发送到负载较小的服务器上。
如果SITE1,SITE2,SITE3中的某一台或两台服务器出故障了,那么正常的机器仍然能够继续运行,如果时他们之间的网络连接断了,BRIDGE
进程会自动进行重试,并且在这些服务器之间可以配置多个网络连接通路,当其中的一个出现故障时,会自动采用别的连接通路。
所以MP方式提供了一个高可靠性的分布式应用系统。
配置成MP方式的步骤:
1. 这些服务器之间可以通过网络互相访问
2. 在每台服务器上都正确安装了TUXEDO SERVER
3. 应用已发布到这些服务器上
4. 选择一台服务器做MASTER机,
6. 在RESOURCES,MACHINES,NETWORK,NETGROUPS中做相应的配置
MODEL要设为MP
OPTIONS中要有LAN
MASTER服务器上的DBBL负责与其他服务器上的服务器BBL进行通讯,
BBLQUERY: 每台服务器上的BBL每隔SCANUNIT*BBLQUERY秒,向MASTER机上的
DBBL发送一次状态信息。默认为300秒
DBBLWAIT: 如果MASTER机没有收到某台服务器发送的状态信息,它将等待
SCANUNIT*DBBLWAIT秒,如果还没有收到该服务器发送的状态信息,这台服务
器将被分离出去(PARTITIONED),默认为20秒
MACHIENS:
在MACHINES中要配置该TUXEDO应用系统包括的每台服务器,如果该服务器时UNIX服务器,那么要配置UID,GID,UID,GID为
TUXEDO用户所对应的UID,GID,在UNIX下可以用ID命令查看。
在该节中配置服务器之间通讯的IP地址及BRIDGE进程,
在一个MP方式的TUXEDO应用系统中,不同的服务器之间通过BRIDGE进程进行通讯,该BRIDGE的侦听IP地址及端口
在NADDR中指定。如果是在UNIX下要指定该BRIDGE所用的网络设备,如果是在NT下则不要。
在TUXEDO系统启动前,不同服务器之间的通讯是通过tlisten进程来进行的,因为这时还没有BRIDGE进程。
NLSADDR为tlisten进程侦听的IP地址及端口。
一个MP方式的配置例子。
环境:WIN2000服务器一台,安装TUXEDO6.5, 服务器名WIN,IP地址:10.13.1.124
SUN5.8服务器一台,安装TUXEDO6.5, 服务器名SUN,IP地址:12.22.32.35
MASTER机为WIN2000服务器,BACKUP机为SUN。
在WIN2000服务器上的UBBCONFIG的内容如下,在SUN服务器上不用编写UBBCONFIG文件。当启动时DBBL会自动
把WIN2000服务器上的TUXCONFIG文件发送到SUN服务器上。
*RESOURCES
IPCKEY 87656
MASTER site1,site2
MAXACCESSERS 40
MAXSERVERS 40
MAXSERVICES 40
OPTIONS LAN
WIN LMID=site1
APPDIR=&d:/tuxdemo/mp&
TUXCONFIG=&d:/tuxdemo/mp/tuxconfig&
TYPE=&win2000&
TUXDIR=&d:/tuxedo65&
SUN LMID=site2
APPDIR=&/export/home/simpapp&
TUXCONFIG=&/export/home/simpapp/tuxconfig&
TYPE=&sun&
TUXDIR=&/export/home/tuxedo&
LMID=site1 GRPNO=1 OPENINFO=NONE
LMID=site2 GRPNO=2 OPENINFO=NONE
site1 NADDR=&//10.13.1.124:6000&
NLSADDR=&//10.13.1.124:6001&
site2 NADDR=&//12.22.32.35:6000&
NLSADDR=&//12.22.32.35:6001&
BRIDGE=&/dev/tcp&
CLOPT=&-A&
simpserv SRVGRP=GROUP2 SRVID=3
1. 在WIN2000服务器上把该UBBCONFIG编译成TUXCONFIG
tmloadcf -y ubbmp
2. 在WIN2000服务器上启动tlisten进程
tlisten -l //10.13.1.124:6001
3. 在SUN服务器上启动tlisten进程
tlisten -d /dev/tcp -l /12.22.32.35:6001
4. 在WIN2000服务器上启动该TUXEDO应用系统
TUXEDO会先启动WIN2000服务器上的进程,然后再启动SUN服务器上的进程。
5. 在WIN2000服务器上执行
simpcl mp test
因为WIN2000服务器上没有TOUPPER服务,TUXEDO会自动调用SUN服务器上的TOUPPER服务,并把结果返回给客户端,这一切对客户端
来说是透明的。
Tuxedo是一个很好的交易中间件,包含消息中间件等功能,历史悠久,功能强
大,是由BEA开发的,不过现在属于Oracle了。网上的Tuxedo入门教程千千万万,几乎没有一个可用的。尤其是在licsence和远程客户端配
置这两个问题上,都没有交代清楚。很符合中国的IT教程特色:&懂得人看得懂,但是并没有更懂;不懂的人更加不懂了!&。
本文集中讨论了四个问题:
Tuxedo的安装;
SDK和RTC的License;
Simpapp例子
远程客户端配置
好了,开始吧,我的开发环境如下,如果开发环境不同,也许本教程不适合你:
服务器:windows XP
客户端:Windows XP(VMWARE上)
本文的源代码在这里,你也许要根据下面的教程修改后才能成功运行:
Tuxedo8.1安装
Tuxedo8.1下载地址如下:
Microsoft Windows (32 bit)
下载完成后直接双击就可以安装了,可以选择安装服务器或者客户端。安装的时候需要选择bea的home目录和Tuxedo的目录,都可以采用默认配
置。服务端还需要指定tlisten密码。其他都暂时不需要配置,包括license都可以留到后面配置。
Tuxedo的license分为SDK和RTC两种,SDK即开发版,RTC即发布版。我刚开始就是得到了一个RTC,兴高采烈的run例子的时候编译
不过,告诉我&你没有一个合法的SDK
license&。其实bea已经公布了所有的license,直接去官方网站下载就可以了,不要到处找所谓的无限制xx
license,Tuxedo8.1的SDK license地址如下:
下载后解压,将文件名改为lic.txt,然后拷贝到TUXEDO_HOME/udataobj目录下面就可以了。我的TUXEDO_HOME是
C:/bea/tuxedo8.1。
拷贝完成后license马上生效。
Simpapp例子
Simpapp是Tuxedo自带的一个简单例子,只有服务器版本带有例子程序。我的例子在C:/bea/tuxedo8.1/samples/atmi
/simpapp。将该例子拷贝到另外一个目录,例如:C:/tuxedo_test/simpapp。
例子中有如下几个文件:
README和README.NT,是说明文件,但是我认为说得不详细,起码license和远程客户端配置就没说清楚;
setenv.cmd,设置环境变量的批处理文件;
ubbsimple,Tuxedo的应用程序配置文件,它会被编译为二进制的配置文件,所有服务端程序都需要该配置文件;
simpapp.nt,makefile文件,用来编译服务器和客户端程序;
simpcl.c,客户端源程序;
simpserv.c,服务端源程序;
要编译运行Simpapp例子,需要六个步骤:1)设置环境变量;2)修改编译配置文件;3)编译源程序;4)启动服务;5)运行客户端;6)关闭
注意:这是本地客户端的步骤,若是远程客户端,还有一些变动。
设置环境变量
首先,把本文的系统相关变量列举如下,大家要根据自己的情况在下面的各种配置文件中更改:
Tuxedo目录:C:/bea/tuxedo8.1
Tuxedo应用程序目录:C:/tuxedo_test/simpapp
服务器IP:192.168.222.1
客户端IP:192.168.222.2
修改setenv.bat文件:其解释已经在源代码中
rem 设置TUXEDO目录
set TUXDIR=C:/bea/tuxedo8.1
rem 设置TUXEDO应用程序目录
set APPDIR=C:/tuxedo_test/simpapp
rem 设置系统path
set PATH=%TUXDIR%/%APPDIR%;%PATH%
rem 设置TUXEDO应用程序配置文件
set TUXCONFIG=%APPDIR%/tuxconfig
然后打开一个windows控制台,将目录变更为tuxedo应用程序所在目录,即C:/tuxedo_test/simpapp,运行
setenv.bat。
C:/tuxedo_test/simpapp&setenv
修改编译配置文件
在修改配置文件前,先得到自己的计算机名称,运行:
C:/tuxedo_test/simpapp&echo %computername%
就可以得到自己的计算机名称,一般都是大写的。
Ubbsimple是本程序(即simpapp)的配置文件,将其修改为:
*RESOURCES
IPCKEY&&&&
#这个数字可以自己定
DOMAINID&&
MASTER&&&&
MAXACCESSERS
MAXSERVERS 5
MAXSERVICES&&
APPDIR=&C:/tuxedo_test/simpapp&
TUXCONFIG=&C:/tuxedo_test/simpapp/tuxconfig&
TUXDIR=&C:/bea/tuxedo8.1&
&WXB& LMID=simple&&&
#注意,把&WXB&改成自己的计算机名称
LMID=simple GRPNO=1 OPENINFO=NONE
CLOPT=&-A&
simpserv&&
SRVGRP=GROUP1 SRVID=1
配置文件是Tuxedo中最繁琐的部分,稍有不对服务就无法发布和执行,所以一定要仔细检查。目前不需要太多了解,按我写的做就可以了。注意,配置
文件和源程序的编译链接无关,只和服务发布相关,客户端也不需要配置文件。
修改完配置文件后,就需要将其编译为二进制的配置文件,其名称和目录由系统变量TUXCONFIG决定,该变量已经在setenv.bat中设置
了,此处是C:/tuxedo_test/simpapp//tuxconfig,这个tuxconfig就是服务用来发布时的二进制配置文件。
编译配置文件:
C:/tuxedo_test/simpapp&tmloadcf -y ubbsimple
若成功完成,则会生成tuxconfig。
编译源程序
使用makefile的方式编译源程序,这里我使用的是vc6自带的nmake命令,要确保你的vc相关目录已经正确在windows的path变量中设
置。Makefile文件已经写好,不需要更改,即simpapp.nt。执行命令如下:
C:/tuxedo_test/simpapp&nmake -f simpapp.nt
当然,如果你不熟悉makefile,那么可以使用如下两个命令别分编译客户端和服务端,其实这两条命令是我从simpapp.nt中抄出来的:
buildclient&&&&&&
-o simpcl -f simpcl.c
buildserver -s TOUPPER -o simpserv -f simpserv.c
若成功,则可发现在目录下出现了simpcl.exe和simpserv.exe文件。
启动服务非常easy,如果你前面都做对了的话:
C:/tuxedo_test/simpapp&tmboot -y
启动成功后会告诉你,两个进程已经成功启动。
运行客户端
如下命令:
C:/tuxedo_test/simpapp&simpcl &hello,wenwen&
Returned string is: HELLO,WENWEN
客户端会将一个字符串传送给服务器,服务器返回该字符串的大写形式。为什么是&hello,wenwen&而不是&hello,tuxedo&呢?
嗯,因为写到这儿的时候刚好雯雯到我身边来了。
关闭服务很容易,而且不会失败:
C:/tuxedo_test/simpapp&tmshutdown &y
远程客户端配置
好了,重点终于来了。毕竟对于大部分人来说,用中间件就是为了使用远程客户端,本地客户端只是玩玩而已嘛。远程客户端需要服务器端修改一些配置,远程客户
端也要进行一些配置。
要编译运行Simpapp例子,使其能够为本地客户端提供服务,需要六个步骤:1)设置环境变量;2)修改编译配置文件;3)编译源程序;4)启动服
务;5)运行客户端;6)关闭服务。
要编译运行Simpapp例子,使其能够为远程客户端提供服务,需要六个步骤:1)设置环境变量;2)修改编译配置文件;3)编译远程客户端源程
序;4)启动服务;5)运行远程客户端;6)关闭服务。
为了不让读者出错,我还是用最详细的方式把这些步骤都完成写一遍,当然,与上面不同的部分会用红色标注出来。
(1)设置环境变量
再次修改seten.bat文件:
rem 设置TUXEDO目录
set TUXDIR=C:/bea/tuxedo8.1
rem 设置WSN地址和端口
set WSNADDR=//192.168.222.1:8888
rem 设置TUXEDO应用程序目录
set APPDIR=C:/tuxedo_test/simpapp
rem 设置系统path
set PATH=%TUXDIR%/%APPDIR%;%PATH%
rem 设置TUXEDO应用程序配置文件
set TUXCONFIG=%APPDIR%/tuxconfig
注意,其中加入了WSN地址和端口的配置,地址就是本服务器IP地址,端口可以随意指定,只要不冲突就好。
运行setenv
C:/tuxedo_test/simpapp&setenv
(2)修改编译配置文件
再次修改ubbsimple
*RESOURCES
IPCKEY&&&&
123496&&&&&&&
#这个数字可以自己定
DOMAINID&&
MASTER&&&&
MAXACCESSERS
MAXSERVERS 5
MAXSERVICES&&
APPDIR=&C:/tuxedo_test/simpapp&
TUXCONFIG=&C:/tuxedo_test/simpapp/tuxconfig&
TUXDIR=&C:/bea/tuxedo8.1&
&WXB& LMID=simple&&&&&&&&
#注意,把&WXB&改成自己的计算机名称
MAXWSCLIENTS=5&&&
#指定的最大客户端连接数
LMID=simple GRPNO=1 OPENINFO=NONE
CLOPT=&-A&
simpserv&&
SRVGRP=GROUP1 SRVID=1
WSL SRVGRP=GROUP1 SRVID=5 CLOPT=&-A -t -- -n //192.168.222.1:8888
2 -M 5 -x 10&&&
#WSL发布地址
仅仅增加了两行代码,即最大客户端连接数和WSL的发布地址。其具体意义可以看书,这个倒是很多书都说清楚了。
编译配置文件:
C:/tuxedo_test/simpapp&tmloadcf -y ubbsimple
(3)编译远程客户端源程序
上面已经编译了服务端和本地客户端程序,远程客户端程序的编译下节再说。
(4)启动服务
同上。不过这次会启动三个进程,其中一个是WSL。Look:
C:/tuxedo_test/simpapp&tmboot -y
Booting all admin and server processes in
C:/tuxedo_test/simpapp/tuxconfig
INFO: BEA Tuxedo, Version 8.1
INFO: Serial #: -1, Expiration NONE, Maxusers
INFO: Licensed to: Customer
Booting admin processes ...
exec BBL -A :
process id=2556 ... Started.
Booting server processes ...
exec simpserv -A :
process id=3564 ... Started.
exec WSL -A -t -- -n //192.168.222.1:8888 -m 2 -M 5 -x 10 :
process id=760 ... Started.
3 processes started.
(6)运行远程客户端
下面详细交代。
(7)关闭服务
远程客户端
运行远程客户端需要三个步骤:1)设置环境;2)修改编译远程客户端程序;3)运行。
首先,将如下文件拷贝到远程客户端计算机:
Setenv.bat
Simplecl.c
Simpapp.nt
(1)设置环境
根据远程客户端的系统相关配置修改setenv.bat,注意WSNADDR要和服务器的一致:
rem 设置TUXEDO目录
set TUXDIR=C:/bea/tuxedo8.1
rem 设置WSN地址和端口
set WSNADDR=//192.168.222.1:8888
rem 设置TUXEDO应用程序目录
set APPDIR=C:/tuxedo_test/simpapp
rem 设置系统path
set PATH=%TUXDIR%/%APPDIR%;%PATH%
然后执行setenv:
C:/tuxedo_test/simpapp&setenv
(2)修改编译远程客户端程序
为了实现远程初始化,需要在客户端程序的tpinit函数前中加入一行代码:
tuxputenv(&WSNADDR=//192.168.222.1:8888&);
当然,为了使得程序可移植性更强,可以从系统变量中读取这个字符串。
然后,用makefile生成远程客户端程序:
C:/tuxedo_test/simpapp&nmake -f simpapp.nt wsimpcl.exe
不懂nmake的可以执行如下命令:
buildclient -w&&&&&&&
-o wsimpcl -f simpcl.c
成功后得到远程客户端执行程序wsimpcl.exe。
C:/tuxedo_test/simpapp&wsimpcl &hello,remote wenwen&
Returned string is: HELLO,REMOTE WENWEN
为什么是&hello,remote wenwen&呢?因为此时雯雯已经和妈妈在卧室睡着了。
但愿此文能够使大家熟悉Tuxedo的时间缩短一点,不要像我一样用了两天时间到处找资料。其中,SDK和RTC
license的问题就花了我一个下午;配置远程客户端花了我一天的时间。其实有好的资料的话,所有的安装配置运行估计一个上午就全部搞定了。
愿中国和所有懂中文的Tuxedo初学者省下一天半的时间陪老婆孩子吧!我花了周末的半天时间来写这篇文档,我真的是个好人!
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:136976次
积分:2640
积分:2640
排名:第5248名
原创:131篇
转载:62篇
评论:14条
(1)(7)(2)(2)(6)(1)(1)(11)(4)(1)(6)(2)(1)(13)(14)(12)(26)(29)(25)(21)(6)(2)}

我要回帖

更多关于 win8系统安装教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信