TUXEDO应用系统的配置<br /><br />3.1 TUXEDO应用系统的常见配置<br /><br />配置文件UBBCONFIG介绍<br />一个TUXEDO应用系统的所有资源都在一个文本文件中进行定义,该文件称为UBBCONFIG,在配置完成后,UBBCONFIG被编译成一个二进制的文件TUXCONFIG.在TUXEDO系统启动时,从该文件中读取系统的配置信息。 UBBCONFIG文件类似WINDOWS下的*.INI文件。它包括以下9大部分, 我们称之为节,RESOURCES,MACHIENS,GROUPS<br />这三个节必须的,其他的节是可选的。<br /><br />RESOURCES(必需): 与整个系统有关的配置信息<br />MACHINES(必需): 一个TUXEDO应用系统可以跨越多台服务器,在该节中配置与每台服务<br />器有关的信息<br />GROUPS(必需): TUXEDO中的服务可被分为多个组,在该节中配置与组有关的信息<br />SERVERS(可选): 与SERVER有关的信息在该节配置<br />SERVICES(可选): 与SERVICES有关的信息在该节配置<br />NETWORK(可选):与网络有关的信息在该节配置<br />ROUTING(可选) :路由规则在该节配置<br />NETGROUPS(可选):与网络分组有关的信息在该节配置<br /><br />名称解释:<br />TUXEDO应用系统<br />一个TUXEDO应用系统包括服务端,客户端,服务端安装在服务器上,客户端一般安装在PC机上,从开发角度看,一个TUXEDO应用系统包括服务端程序,客户端程序,一个配置文件。此外,一个TUXEDO应用系统可以部署在一台服务器上,也可以部署在多台服务器上。<br />SERVER:<br />服务端程序用C或COBAL编写,每一个程序文件编译成一个相应可执行文件,该可执行文件在运行时称为SERVER,它实际上就是一个进程。每个SERVER都有一个名字,也就是该进程的名字。为与TUXEDO应用系统的服务端区分,我们在本书中,我们用SERVER表示该进程,用服务端表示TUXEDO应用系统的服务端。<br />SERVICE:<br />在每个服务端程序中,主要是一个个的函数,在TUXEDO中称这些函数为SERVICE,一般<br />也称之为服务。在该SERVICE中实现业务逻辑,在客户端中调用这些SERVICE来实现各<br />种操作,如在前面的例子simpapp中, 服务端程序为simpserv.c,它编译成可执行文件<br />simperv, simpserv就是一个SERVER,该SERVER包括SERVICE:TOUPPER。<br /><br /><br />下面我们给出一个配置文件的例子:<br />*RESOURCES<br />IPCKEY 123456<br />MASTER simple<br />UID 0<br />GID 0<br />PERM 0666<br />MAXACCESSERS 100<br />DOMAINID simpapp<br />MODEL SHM<br />LDBAL Y<br />SCANUNIT 10<br />SANITYSCAN 12<br />BLOCKTIME 6<br />NOTIFY DIPIN<br />MAXCONV 10<br /><br />*MACHINES<br />"MYSYS" LMID="simple" <br /> TUXCONFIG="d:\tuxdemo\pbdemo\tuxconfig" <br /> TUXDIR="d:\tuxedo65" <br /> APPDIR="d:\tuxdemo\pbdemo" <br /> TLOGDEVICE="d:\tuxdemo\pbdemo\TLOG" <br /> TLOGNAME="TLOG"<br /> TLOGSIZE=100<br /> MAXWSCLIENTS=5<br /> CMPLIMIT="MAXLONG,MAXLONG"<br /> NETLOAD=0<br /> SPINCOUNT=0<br /> MAXACLCACHE=100<br /><br />*GROUPS<br />"GROUP1" LMID="simple" GRPNO=1<br />OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=600+MaxCur=5+LogDir=."<br />TMSNAME="TMS_ORA8i" <br />TMSCOUNT=2<br /><br />*SERVERS<br />DEFAULT:<br /> CLOPT="-A"<br />"simpserv" SRVGRP="GROUP1" SRVID=1<br /> CLOPT="-A" <br /> RQADDR="simpserv"<br /> RQPERM=0660 REPLYQ=Y RPPERM=0660 MIN=5 MAX=5 CONV=N<br /> MAXGEN=1 GRACE=86400 RESTART=N<br />"WSL" SRVGRP="GROUP1" SRVID=1116<br /> CLOPT="-A -- -n //MYSERVER:8888 -m 2 -M 5 -x 6" <br />*SERVICES<br />"TOUPPER"<br /> LOAD=50 PRIO=50<br /> BUFTYPE="ALL"<br /> TRANTIME=30<br /> AUTOTRAN=N<br /><br />*ROUTING<br /><br />各节之间的包含关系:<br />从上到下,是一对多的关系,即:一个TUXEDO系统可以跨越多台服务器,一台服务器上可以有多个GROUP,但一个GROUP只能在一台服务器上,一个GROUP中可以有多个SERVER,一个SERVER中可以有多个SERVICE。<br /><br /><br />下面我们分别对每个节种具体的常见配置进行说明,NETWORK,NETGROUP,ROUTING三节及其他比较高级的配置我们在后面的内容中说明<br /><br />RESOURCES(必需): <br />该节是必须的,在这里配置与整个TUXEDO应用系统有关的信息,主要包括:<br />IPCKEY: TUXEDO使用它标识公告板及其他的IPC资源。它不能与该服务器上其他的IPC资源的ID号冲突范围:32,769-262,142<br />MASTER: 指定该TUXEDO应用系统的MASTER服务器,在该服务器上对整个TUXEDO系<br />统进行管理配置,可以为该MASTER服务器指定一台备份服务器,当该MASTER<br />服务器当机时,可从BACKUP服务器上进行管理。在进行系统迁移时,也要指定<br />BACKUP服务器。<br />DOMAINID:该TUXEDO应用系统的唯一标识<br /><br />UID, GID, PERM:这三个参数控制对系统IPC资源的存取权限<br />UID: 可对该TUXEDO应用系统进行管理的TUXEDO系统管理员的用户ID,在UNIX下<br />就是UNIX系统的用户ID,默认为执行TMLOADCF的用户的ID。在NT下该设置<br />没有用,要设为0。<br />GID: 在UNIX下为UID中所指定的用户所在的组ID,在NT下该设置没有用,要设为0<br />PERM: 指定对TUXEDO系统IPC资源的存取权限。默认值为0666,即任何人都可以对该IPC资源进行存取。<br /><br />MAXACCESSERS,MAXSERVERS,MAXSERVICES:这三个参数控制该TUXEDO应用系统对IPC资源的使用情况。<br /><br />MAXACCESSERS: 在本系统的一个节点(一台服务器)上,同时可以有多少个进程可以访问<br />该TUXEDO系统的公告板,默认值为50,它包括本地客户端进<br />程,SERVER进程,但不包括管理进程如:BBL,DBBL等<br />MAXSERVERS: 在本系统中,总共可以有多少个SERVER存在,包括进行管理的SERVER,<br />如:BBL,TMS等。默认值为50。<br />MAXSERVICES: 在本系统中,总共可以有多少个SEVICE存在, 默认值为100。 <br /><br /><br /><br />TUXEDO应用系统的部署方式:<br />一个TUXEDO应用系统可能部署在一台服务器上或多台服务器上,也可能是部署在共用一块全局共享内存的几台服务器上,可在MODEL,OPTIONAS中配置该TUXEDO应用系统的部署模式。<br />MODLE: <br /> SHM: 单机或多台服务器但共用一个全局共享内存<br /> MP: 多台服务器但没有共用一个全局共享内存<br /><br />OPTION: LAN: 是多机(MP)部署模式<br /> MIGRATE: 可对该系统进行迁移<br /><br /><br />TUXEDO的管理进程BBL定时对它所在的服务器上的TUXEDO系统进行检查,检查超时的事务,超时的客户端连接等。<br />SCANUNIT: 指定检查的最小时间单位,它单位为秒,必须是5的倍数。 默认值为10,即10<br />秒。<br />SANTIYSCAN: 每隔多少个SCANUNIT检查一次, SANITYSCAN*SCANUNIT不能大于<br />300秒。默认值为12,即120秒<br />BLOCKTIME: 指定一个消息可以阻塞多长时间,如果过了SANITYSCAN*SCANUNIT秒该<br />消息还没有发送出去,将超时出错。 SANITYSCAN*SCANUNIT不能大于<br />32767秒。默认值为6,即60秒。<br /><br />同步调用的超时说明<br />对同步调用TPCALL,指从TPCALL()开始调用,到SERVER端的返回结果到到该客户端并写到输入缓冲区这一段时间。包括:<br />客户端开始调用TPCALL()<br />把数据通过网络发送到SERVER端<br />SERVER端的处理时间<br />SERVER端把处理结果通过网络返回给客户端<br />客户端TPCALL()调用返回<br /><br />异步调用和会话方式的超时说明<br />对异步调用和会话方式,当一个进程调用TPACALL(),TPCONNECT(),TPSEND()时,超时时间只包括如果接收队列满时,这些调用的等待时间,如在TPACALL()中,所调用的SERVICE的接收队列如果满了,那么TPACALL()可阻塞在那里,直到该队列不满,可以接收该TPACALL()发送的请求。从TPACALL()开始阻塞到TPACALL()返回这段时间为它的超时时间。<br />对TPGETRPLY(),TPRECV()的超时时间是指如果要接收的队列为空时,它们应该阻塞在那里等待有消息到来的时间。<br />如:超时时间为60秒, 一点整调用TPGETRPLY()从接收的队列取消息,这时接收队列为空,如果到了一点零一分该接受队列还为空,那么TPGETRPLY()将超时出错。<br /><br />LDBAL: 要不要进行负载均衡,Y:要,N:不要,默认值为不要<br /><br />MAXCONV: 在一台服务器上最多可以有多少个会话同时存在。范围:0-32768,默认值为10<br /><br />NOTIFY : 设置消息的通知方式,有以下3种:默认为DIPIN<br />IGNORE: 该TUXEDO系统中的CLIENT不接收任何消息<br />SIGNAL: 用SIGUSR1,SIGUSR2信号通知CLIENT有消息到来,如果在非UNIX平台上设<br />置采用该方式,那么会被自动转化为DIPIN方式。<br />DIPIN: 当CLIENT调用ATMI函数时,顺便检查看是否有消息,如果有就发送给该<br />CLIENT默认值为DIPIN<br /><br /><br />*MACHINES(必需):<br />该TUXEDO应用系统所包含的每台服务器都要在该节中进行配置<br />LMID: 在TUXEDO,要为该应用系统中的每台服务器指定一个逻辑服务器名。如在上面的例子中,TUXEDO应用服务器MYSYS对应的逻辑服务器名为:simple,<br />TUXEDO应用服务器名的查看方法: <br /> 1. 在UNIX下用uname -n 查看SERVER的名字,<br /> 2. 在NT,WIN2000下用ECHO %COMPUTERNAME$查看SERVER的名字<br />注意:如果SERVER的名字太长(>8)或含有“.”等可以" "引起来,如: "DEMOSERVER.COM"<br /><br />TUXCONFIG: 配置文件TUXCONFIG所在的路径<br />TUXDIR: TUXEDO的安装目录<br />APPDIR: TUXEDO应用系统所在的目录<br />注意:TUXCONFIG,TUXDIR,APPDIR的值要与它们在环境变量中的设置的值一样<br />ENVFILE: 该服务器上与TUXEDO有关的环境变量(如FIELDTBLS等)可以放到一个文件中,在ENVFILE中指定该文件名。<br />TYPE: 指定该服务器的类型,当两台服务器的TYPE不一样时,在它们之间传送数据时要进行<br />编码/解码工作<br />ULOGPFX: 指定ULOG文件所在的目录及前缀。默认目录为$APPDIR,前缀为ULOG。<br /><br />UID,GID,PERM,MAXACCESSERS,MAXCONV这些在RESOURCES中的配置,在MACHINES中可以被重新配置,并且这些新的配置值会覆盖在RESOURCES中的配置值。<br /><br /><br />*GROUPS(必需):<br />在TUXEDO中,要对SERVER进行分组,配置GROUP主要有三个目的,<br />1. 因为GROUP与数据库之间是一对一的关系,在一TUXEDO应用系统中,如果有多个数据库,就要配置多个GROUP,在该GROUP中配置TUXEDO与数据库的连接参数等。<br />2. 数据依赖路由是以GROUP为单位的。<br />3. 进行系统迁移时也时以GROUP为单位的一个GROUP有一个名字,还有一个GROUP <br />ID,GROUP的名字和GROUP ID在一个TUXEDO系统中必须唯一。<br />每个GROUP要指定该GROUP所在的服务器,及它的ID号,如果该GROUP中的SERVER<br />要与数据库或其他的资源管理器相连,那么要在OPENINFO中设置连接的参数。具体的配置我们在讲数据库编程时再说明。<br />*SERVERS:<br />该系统所包含的所有的SERVER都在该节进行配置。<br />在DEFAULT中的设置对所有的SERVER起作用。<br />SRVGRP: 该SERVER所在的GROUP<br />SRVID: 该SERVER所对应的ID,在一个GROUP中必须唯一<br />MIN: 该SERVER最少启动的进程数<br />MAX: 该SERVER最多可启动的进程数<br /><br />RESTART,RCMD,MAXGEN,GRACE: 在TUXEDO系统了,当一个SERVER进程因某中原因死掉时,可设置它可以自动重起,这4个参数指定TUXEDO的重起信息。 <br />RESTART 该进程死掉时是否可以自动重起,默认为N(不可以)<br />GRACE,MAXGEN:在GRACE秒内,该进程最多可以重启MAXGEN次。<br />RCMD: 指定该SERVER重启时,要执行的一个可执行文件名<br />注意:<br />1. 为了使一个SERVER可以自动重起,光设置了RESTART=Y还不够,还要设置<br />GRACE,MAXGEN才能在该SERVER死掉时,自动重起,<br />2. 该SERVER能够被自动重起的一个前提条件时它还没有被从BULLITION BOARD中清<br />除。<br />例子:<br />test SRVGRP=GROUP1 SRVID=1 RESTART=Y GRACE=100000 MAXGEN=255<br />该设置指定在100000秒的时间内,SERVER进程:test可以启动255次。 <br />在缺省情况下,TUXEDEO的每一个SERVER对应一个请求队列,该SERVER从该请求队列中取客户端发来的请求,并把处理的结果通过该请求队列返回给客户端,TUXEDO的SERVER可以配置成多个SERVER对应一个请求队列,即MSSQ方式,以提高响应的速度。<br />与MSSQ有关的参数是:<br />RQADDR:该请求队列的名字,一般设成与该SERVER的名字一样<br />RAPERM:该请求队列的存取权限,默认为0666<br />REPLYQ:该SERVER中的某个SERVICE调用其他的SERVICE,并有返回结果,则应设置<br />REPLYQ=Y,即把其他SERVICE的应答放到该队列中<br /><br />CONV: 该SERVER是否采用会话(CONVERSATION)通讯方式,注意采用会话通讯方式的SERVICE要单独在一个SERVER中,不能与采用其他通讯方式的SERVICE在同一个SERVER中,并且该SERVER要设置CONV=Y<br />CLOPT: 指定该SERVER的启动参数。默认为-A,即再该SERVER启动时,发布该SERVER<br />包含的所有的SERVICE。通用的有:<br />-e: 指定错误输出文件,默认为$APPDIR下的stderr<br />-o: 指定标准输出文件,默认为$APPDIR下的stdout<br />-r: 记录该SERVER中SERVICE每次调用的处理时间,并记录在错误输出文件中,然后可采用<br />TUXEDO的性能分析工具txrpt对该SERVER进行性能分析。<br />-A: 发布该SERVER包含的所有的SERVICE<br /><br /><br /><br />*SERVICES: <br />在SERVICES中可针对每个SERVICE进行配置,主要有:<br />AUTOTRAN: 调用该SERVICE时是否自动启一个全局事务。默认为N<br />LOAD:如果采用负载均衡,指定该SERVICE的负载因子,默认为50<br />PRIO: 指定该SERVICE的优先级,默认为50<br />DDR: 指定数据依赖路由规则<br /><br />与远程客户端有关的配置:<br />1. 在MACHINES中要配置MAXWSCLIENTS,即最多可以有多少个远程客户端同时连接<br />到该服务器上,在上面的例子中为5个<br />2. 在SERVERS中要配置SERVER:WSL<br />WSL SRVGRP="GROUP1" SRVID=1116 CLOPT="-A -- -n //192.168.120.113:8888 -m 2 -M 5 -x 6"<br />说明:<br />-n //192.168.120.113:8888: 远程客户端通过该端口与服务器建立连接<br />-m 2 :最少启动多少个WSH进程<br />-M 5::最多启动多少个WSH进程,默认值为MAXWSCLIENTS/m<br />-x 6:每个WSH进程可同时处理多少个远程客户端<br />3. 程客户端所在的服务器上要配置WSNADDR环境变量,它的值为-n参数的值,如在上面的配置中为:<br />SET WSNADDR= //192.168.120.113:8888<br /><br />配置文件UBBCONFIG的编译:<br />用下面的命令进行编译:<br />tmloadcf –y UBBCONFIG文件名 <br />如:下面的命令编译名为ubbsimple的TUXEDO配置文件,生成二进制的配置文件<br />TUXCONFIG<br />tmloadcf –y ubbsimple<br /><br />有时候在改变了TUXCONFIG的目录后,执行tmloadcf,会出现类似下面的错误,可把原来的TUXCONFIG文件删除,然后再编译。<br />D:\simpdb>tmloadcf -y ubb<br />CMDTUX_CAT:1601: ERROR: TUXCONFIG,TUXOFFSET d:\simpdb\tuxconfig 0 doesn't match first device entry on configuration d:\tuxdemo\simpdb\tuxconfig 0<br />D:\simpdb>del tuxconfig<br />D:\simpdb>tmloadcf -y ubb<br />D:\simpdb><br />用tmunloadcf命令可对二进制的配置文件TUXCONFIG的进行反编译<br />如下面的命令反编译TUXCONFIG,并把结果输出到文件myubb中。通过反编译TUXCONFIG可查看该TUXEDO应用系统的一些属性默认值。<br />Tmunloadcf >myubb<br /><br /><br /><br /><br /> 3.2 多机(MP)模式的配置<br /><br />一个TUXEDO应用系统可以部署在多台服务器上,这些服务器通过网络连接,这种部署方式称为MP方式,在这些服务器中要选择一台服务器做MASTER服务器,在该服务器上有一个DBBL进程,负责整个TUXEDO应用系统的管理工作。在每台服务器上都有一个BBL进程,它与DBBL进程进行通信,管理各自服务器上的配置。每台服务器上还有一个名为BRIDGE的进程和一个名为TLISTEN的进程,他们负责服务器之间的通讯。MP模式的结构如图:<br /><br /> <br /><br /><br />如果配置了MP方式,那么在这些服务器之间可以做负载均衡和容错,客户端可以和其中的任何一台服务器建立连接,如果该服务器上没有该客户端所要调用的服务(SERVICE),TUXEDO可以自动把请求发送到别的有该服务的机器取处理,并把结果返回个客户端,如图,SITE1上的客户端调用了TRANSFER,当在SITE1上没有该SERVICE,在SITE3上有,<br />那么SITE1通过BRIDGE把请求发送到SITE3上,SITE3把处理结果也通过BRIDGE发送到SITE1上,通过SITE1把结果返回给该客户端。这些对客户端时透明的。<br />如果SITE1,STIE2,SITE3上都有TRANSFER,并且设置了负载均衡(LDBAL =Y),那么TUXEDO将根据他们的负载情况把请求发送到负载较小的服务器上。<br />如果SITE1,SITE2,SITE3中的某一台或两台服务器出故障了,那么正常的机器仍然能够继续运行,如果时他们之间的网络连接断了,BRIDGE进程会自动进行重试,并且在这些服务器之间可以配置多个网络连接通路,当其中的一个出现故障时,会自动采用别的连接通路。<br />所以MP方式提供了一个高可靠性的分布式应用系统。<br /><br />配置成MP方式的步骤:<br />1. 这些服务器之间可以通过网络互相访问<br />2. 在每台服务器上都正确安装了TUXEDO SERVER<br />3. 应用已发布到这些服务器上<br />4. 选择一台服务器做MASTER机,<br />6. 在RESOURCES,MACHINES,NETWORK,NETGROUPS中做相应的配置<br /><br />RESOURCE:<br />MODEL要设为MP<br />OPTIONS中要有LAN<br /><br />MASTER服务器上的DBBL负责与其他服务器上的服务器BBL进行通讯,<br />BBLQUERY: 每台服务器上的BBL每隔SCANUNIT*BBLQUERY秒,向MASTER机上的<br />DBBL发送一次状态信息。默认为300秒<br />DBBLWAIT: 如果MASTER机没有收到某台服务器发送的状态信息,它将等待<br />SCANUNIT*DBBLWAIT秒,如果还没有收到该服务器发送的状态信息,这台服务<br />器将被分离出去(PARTITIONED),默认为20秒<br /><br />MACHIENS:<br />在MACHINES中要配置该TUXEDO应用系统包括的每台服务器,如果该服务器时UNIX服务器,那么要配置UID,GID,UID,GID为TUXEDO用户所对应的UID,GID,在UNIX下可以用ID命令查看。<br /><br /><br />NETWORK:<br />在该节中配置服务器之间通讯的IP地址及BRIDGE进程,<br />在一个MP方式的TUXEDO应用系统中,不同的服务器之间通过BRIDGE进程进行通讯,该BRIDGE的侦听IP地址及端口<br />在NADDR中指定。如果是在UNIX下要指定该BRIDGE所用的网络设备,如果是在NT下则不要。<br /><br />在TUXEDO系统启动前,不同服务器之间的通讯是通过tlisten进程来进行的,因为这时还没有BRIDGE进程。<br />NLSADDR为tlisten进程侦听的IP地址及端口。<br /><br />一个MP方式的配置例子。<br /><br />环境:WIN2000服务器一台,安装TUXEDO6.5, 服务器名WIN,IP地址:10.13.1.124<br /> SUN5.8服务器一台,安装TUXEDO6.5, 服务器名SUN,IP地址:12.22.32.35<br /> MASTER机为WIN2000服务器,BACKUP机为SUN。<br /><br />在WIN2000服务器上的UBBCONFIG的内容如下,在SUN服务器上不用编写UBBCONFIG文件。当启动时DBBL会自动<br />把WIN2000服务器上的TUXCONFIG文件发送到SUN服务器上。<br /><br />*RESOURCES<br />IPCKEY 87656<br />MASTER site1,site2<br />MAXACCESSERS 40<br />MAXSERVERS 40<br />MAXSERVICES 40<br />MODEL MP<br />OPTIONS LAN<br /><br />*MACHINES<br />WIN LMID=site1<br /> APPDIR="d:\tuxdemo\mp"<br /> TUXCONFIG="d:\tuxdemo\mp\tuxconfig"<br /> TYPE="win2000"<br /> TUXDIR="d:\tuxedo65"<br /><br />SUN LMID=site2<br /> UID=1006<br /> GID=30<br /> APPDIR="/export/home/simpapp"<br /> TUXCONFIG="/export/home/simpapp/tuxconfig"<br /> TYPE="sun"<br /> TUXDIR="/export/home/tuxedo"<br /> <br />*GROUPS<br />GROUP1<br /> LMID=site1 GRPNO=1 OPENINFO=NONE<br />GROUP2<br /> LMID=site2 GRPNO=2 OPENINFO=NONE<br /><br /><br />*NETWORK<br />site1 NADDR="//10.13.1.124:6000"<br /> NLSADDR="//10.13.1.124:6001"<br /> <br /><br />site2 NADDR="//12.22.32.35:6000"<br /> NLSADDR="//12.22.32.35:6001"<br /> BRIDGE="/dev/tcp"<br /> <br /><br /><br />*SERVERS<br />DEFAULT:<br /> CLOPT="-A"<br /><br />simpserv SRVGRP=GROUP2 SRVID=3<br /><br />*SERVICES<br />TOUPPER<br /><br /><br />1. 在WIN2000服务器上把该UBBCONFIG编译成TUXCONFIG<br /> tmloadcf -y ubbmp<br />2. 在WIN2000服务器上启动tlisten进程<br /> tlisten -l //10.13.1.124:6001<br />3. 在SUN服务器上启动tlisten进程<br /> tlisten -d /dev/tcp -l /12.22.32.35:6001<br />4. 在WIN2000服务器上启动该TUXEDO应用系统<br /> tmboot -y<br /> TUXEDO会先启动WIN2000服务器上的进程,然后再启动SUN服务器上的进程。<br />5. 在WIN2000服务器上执行<br /> simpcl mp test<br /> 因为WIN2000服务器上没有TOUPPER服务,TUXEDO会自动调用SUN服务器上的TOUPPER服务,并把结果返回给客户端,这一切对客户端来说是透明的。
小弟刚接触TUXEDO,我在WIN2000 SERVER下面安装了TUXEDO7。<br />我在编译配置文件的时候出现了下面的问题:<br />CMDTUX_CAT:878: ERROR: Can't create TUXCONFIG c:\bea\myapp\ubbconfig<br /> vtoc_errno 5: Unix error: Permission denied<br /><br />我怎么能够解决呢?万分感谢!!!!
<!--QuoteBegin-我行我素+2004-01-12 11:32:37--><div class='quotetop'>QUOTE(我行我素 @ 2004-01-12 11:32:37)</div><div class='quotemain'><!--QuoteEBegin--> 小弟刚接触TUXEDO,我在WIN2000 SERVER下面安装了TUXEDO7。<br />我在编译配置文件的时候出现了下面的问题:<br />CMDTUX_CAT:878: ERROR: Can't create TUXCONFIG c:\bea\myapp\ubbconfig<br /> vtoc_errno 5: Unix error: Permission denied<br /><br />我怎么能够解决呢?万分感谢!!!! <!--QuoteEnd--></div><!--QuoteEEnd--><br />是不是UBBCONFIG这个文件里有什么地方写得不对!造成无法编译呀!
--转自