一、Tuxedo基本命令2
二、UBB文件配置说明3
三、数据库XA设置7
3.1 ORACLE XA7
3.2 SYBASE XA8
3.3 INFORMIX XA8
四、Tuxedo多机方式配置要点9
4.1启动tlisten9
4.2 ubb文件配置9
4.3管理11
五、用JOLT连接Tuxedo和Weblogic11
5.1在Tuxedo上安装、配置JOLT Server11
5.2 配置Weblogic Server 6.x12
5.3 Example setup13
六、TUXEDO动态配置13
6.1 用tmadmin修改配置13
6.2 用tmconfig更改TUXCONFIG(UBBCONFIG)14
二、UBB文件配置说明
*SERVERS
#这里描述应用服务器。SRVGRP的该SERVER所属组名,SRVID为服务器ID号,MIN表示该服务器CLOPT提供运行的相关参数,要求是”-A -- ….”,可以在应用服务器的srvinit函数中获得这些参数。
DEFAULT:
CLOPT="-A"
分类总结
3.3 INFORMIX XA
1.运行esql -lib获得要连接的所有lib库的名称.然后将这些名称全部加到RM文件中INFORMIX-OnLine:infx_xa_switch:$/lib/esql/libinfxxa.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixsql.a /usr/informix/lib/libixasf.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixgls.a -lnsl_s -lm -lV3 -lcl -lsec /usr/informix/lib/esql/libixglx.a
2.ubbconfig 文件中
*GROUP节 TMS_NAME=TMS_INFO TMSCOUNT=3 OPENINFO="INFORMIX-OnLine:test_tux"
具体察看Sybase文当中xa_open String中提供了解释
3.运行 buildtms -o $(TUXDIR)/bin/TMS_INFO -r INFORMIX-OnLine
4. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=500
6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
五、用JOLT连接Tuxedo和Weblogic
5.1在Tuxedo上安装、配置JOLT Server
1 – 安装JOLT Server
2 -- set your environment
set TUXDIR=d:beatuxedo
set JOLTDIR=%TUXDIR%udataobjjolt
set APPDIR=%TUXDIR%samplesatmisimpapp
set PATH=%TUXDIR%bin;%JOLTDIR%bin;%APPDIR%;%PATH%
set NLSPATH=%TUXDIR%localeC
set TUXCONFIG=%APPDIR%tuxconfig
六、TUXEDO动态配置
TUXEDO的动态配置可以通过tmadmin和tmconfig两个命令行工具实现不同级别的配置修改。tmadmin的作用主要是监控TUXEDO的运行,可以修改服务的参数;而tmconfig功能更强大,可以在线修改当前TUXEDO的系统UBB配置,即通过MIB修改用UBBCONFIG生成的二进制TUXCONFIG在内存的拷贝。
6.1 用tmadmin修改配置
进入tmadmin后用命令help可以列出所有命令。
1. 用tmconfig增加新主机
2. 用tmconfig增加新Server进程
Tuxedo系统平台的调试参数及步骤
1.配置MAXSERVERS、MAXSERVICES两个参数,看是否满足ubbfile文件的配置的服务数和服务参数的个数。Tmadmin——bbs,看里面的参数个数。
2.数据库的可以连接数的大小是否满足ubbfile文件里面同一个数据库连接得servers的数目。参照xa_NULL*.trc文件的错误提示。
3.用命令tmloadcf –c ubbfile看tuxedo的进程所需要的共享内存配置。然后修改系统的共享内存的配置。除了AIX平台外,系统的共享内存参数——set shmsys:shminfo_shmmin要设置为1。
4.Tmunloadcf 看现在运行的TUXEDO环境。
5.Tmadmin——crdl -b -z 创建日志文件。
6.TUXEDO环境的设置顺序。Tuxconfig——tmadmin——TLOG;
二、UBB文件配置说明3
三、数据库XA设置7
3.1 ORACLE XA7
3.2 SYBASE XA8
3.3 INFORMIX XA8
四、Tuxedo多机方式配置要点9
4.1启动tlisten9
4.2 ubb文件配置9
4.3管理11
五、用JOLT连接Tuxedo和Weblogic11
5.1在Tuxedo上安装、配置JOLT Server11
5.2 配置Weblogic Server 6.x12
5.3 Example setup13
六、TUXEDO动态配置13
6.1 用tmadmin修改配置13
6.2 用tmconfig更改TUXCONFIG(UBBCONFIG)14
一、Tuxedo基本命令
#1.设置环境变量TUXDIR,APPDIR,TUXCONFIG,LANG(跟OS相关),LD_LIBRARY_PATH(跟OS相关)
#2.编译ubb文本生成二进制配置文件:tmloadcf –y ubbconfig
#3.所有机器上运行tlisten,具体见文档中NETWORK一节
#4.启动tmboot –y
#5.关闭tmshutdown –y
参数:
-A在所有机器上启动/关闭管理的Server进程
-M只在MASTER机器上启动/关闭管理的Server进程
-isrvid 启动/关闭某个server id指定的Server进程
-ggrpname启动/关闭某个server group名字指定的Server Group
-S启动/关闭所有应用服务器(LMID)
-sserver-name 启动/关闭某个server名字指定的Server进程
-llmid option 在指定的机器上启动/关闭所有TMS进程和应用服务器(LMID)
-Tgrpname 启动/关闭指定的server group中所有的TMS进程
-Blmid 在指定的机器上启动/关闭BBL进程
-ecommand 指定一个程序可以当在MASTER机器上启动任何一个进程失败时执行
-c计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源
#2.编译ubb文本生成二进制配置文件:tmloadcf –y ubbconfig
#3.所有机器上运行tlisten,具体见文档中NETWORK一节
#4.启动tmboot –y
#5.关闭tmshutdown –y
参数:
-A在所有机器上启动/关闭管理的Server进程
-M只在MASTER机器上启动/关闭管理的Server进程
-isrvid 启动/关闭某个server id指定的Server进程
-ggrpname启动/关闭某个server group名字指定的Server Group
-S启动/关闭所有应用服务器(LMID)
-sserver-name 启动/关闭某个server名字指定的Server进程
-llmid option 在指定的机器上启动/关闭所有TMS进程和应用服务器(LMID)
-Tgrpname 启动/关闭指定的server group中所有的TMS进程
-Blmid 在指定的机器上启动/关闭BBL进程
-ecommand 指定一个程序可以当在MASTER机器上启动任何一个进程失败时执行
-c计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源
#用tmunloadcf > generated.ubb 可以得出目前配置得UBB文件所有得参数值(没有设置的有缺省值)
#用tmloadcf –c或tmboot –c可以计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源。
#用tmloadcf –c或tmboot –c可以计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源。
二、UBB文件配置说明
UBB配置文件分成*RESOURCES,*GROUP,*SERVER,*SERVICE,*NETWORK等若干节。DEFAULT表示该节中所有对象共有的缺省属性。
*RESOURCES
#RESOUCES节提供整个系统的基本参数。
#RESOUCES节提供整个系统的基本参数。
IPCKEY55555 (32767-262143)
#进行IPC通讯的key值
DOMAINIDunicom
#DOMAIN的ID值
MASTERunicom1,unicom2
#指定DOMAIN中的管理主机为unicom1,运行过程中unicom1若出现问题,管理主机切换至unicom2
MAXACCESSERS 1000
#这里该值表示整个系统中单个机器上可以访问TUXEDO的最多的Client和Server的总数(可以访问 BBL的最大进程数),应大于license用户数+server数(副本应记入)。该字段会被MACHINE部分的MAXACCESSERS覆盖。
#系统核心参数中SEMAPHORE的数目(SEMMNS)要大于这里的MAXACCESSERS数目,而ipc消息个数(MSGMAX)应大于MAXACCESSERS数+所有带REPLYQ的SERVER的个数。
MAXSERVERS80
#最大的server数(副本应记入)
MAXSERVICES200
#最大的service数(多个server重复记入)
MAXGTT20
#系统最多的并发的全局交易数目
MODELMP
#表示cluster方式,否则为SHM
OPTIONSLAN,MIGRATE
#多机cluster方式时必须指定为LAN方式,MIGRATE表示可以以组为单位进行机器间SERVER的迁移。
LDBALY
#允许负载均衡
#进行IPC通讯的key值
DOMAINIDunicom
#DOMAIN的ID值
MASTERunicom1,unicom2
#指定DOMAIN中的管理主机为unicom1,运行过程中unicom1若出现问题,管理主机切换至unicom2
MAXACCESSERS 1000
#这里该值表示整个系统中单个机器上可以访问TUXEDO的最多的Client和Server的总数(可以访问 BBL的最大进程数),应大于license用户数+server数(副本应记入)。该字段会被MACHINE部分的MAXACCESSERS覆盖。
#系统核心参数中SEMAPHORE的数目(SEMMNS)要大于这里的MAXACCESSERS数目,而ipc消息个数(MSGMAX)应大于MAXACCESSERS数+所有带REPLYQ的SERVER的个数。
MAXSERVERS80
#最大的server数(副本应记入)
MAXSERVICES200
#最大的service数(多个server重复记入)
MAXGTT20
#系统最多的并发的全局交易数目
MODELMP
#表示cluster方式,否则为SHM
OPTIONSLAN,MIGRATE
#多机cluster方式时必须指定为LAN方式,MIGRATE表示可以以组为单位进行机器间SERVER的迁移。
LDBALY
#允许负载均衡
SCANUNIT10
#SCANUNIT 是BBL在所有服务请求中定期扫描以寻找超时的交易和被阻塞德调用和德间隔时间(秒)。这个参数指定BBL扫描间隔时间的基本单位,它会影响在tpbegin中指定的交易超时时间和用BLOCKTIME指定的请求阻塞超时时间的精确程度。SANITYSCAN, BBLQUERY, DBBLWAIT, BLOCKTIME等参数都是SCANUNIT的倍数,而不是实际秒数。而作为时间单位SCANUNIT必须是5的倍数,并且满足0<SCANUNIT<60。
#SCANUNIT 是BBL在所有服务请求中定期扫描以寻找超时的交易和被阻塞德调用和德间隔时间(秒)。这个参数指定BBL扫描间隔时间的基本单位,它会影响在tpbegin中指定的交易超时时间和用BLOCKTIME指定的请求阻塞超时时间的精确程度。SANITYSCAN, BBLQUERY, DBBLWAIT, BLOCKTIME等参数都是SCANUNIT的倍数,而不是实际秒数。而作为时间单位SCANUNIT必须是5的倍数,并且满足0<SCANUNIT<60。
SANITYSCAN12
#SANITYSCAN的值指定在每个MACHINE上BBL自动检测所有进程的时间间隔,以SCANUNIT为单元。缺省值满足(SCANUNIT*SANITYSCAN)约为120秒。
#SANITYSCAN的值指定在每个MACHINE上BBL自动检测所有进程的时间间隔,以SCANUNIT为单元。缺省值满足(SCANUNIT*SANITYSCAN)约为120秒。
DBBLWAIT 2
#DBBLWAIT的值指定DBBL扫描BBL时等待所有BBL应答的最大时间,以SCANUNIT为单元,即超过DBBLWAIT*SCANUNIT(秒)就超时。每一次DBBL将请求转发给它的BBL时,BBL会在请求返回结果之前先回复一个肯定的应答。这样可以定时检测死掉或不正常的BBL。缺省值满足(SCANUNIT*DBBLWAIT)的值等于SCANUNIT和20秒两者之间的最大者。
#DBBLWAIT的值指定DBBL扫描BBL时等待所有BBL应答的最大时间,以SCANUNIT为单元,即超过DBBLWAIT*SCANUNIT(秒)就超时。每一次DBBL将请求转发给它的BBL时,BBL会在请求返回结果之前先回复一个肯定的应答。这样可以定时检测死掉或不正常的BBL。缺省值满足(SCANUNIT*DBBLWAIT)的值等于SCANUNIT和20秒两者之间的最大者。
BBLQUERY30
#BBLQUERY指定DBBL对所有BBL进行状态检查的时间间隔,它也是以SCANUNIT为计算单位。如果DBBL的状态询问没有回答,该BBL就被‘隔离’了。缺省值满足(SCANUNIT * BBLQUERY) 约为 300秒。
#BBLQUERY指定DBBL对所有BBL进行状态检查的时间间隔,它也是以SCANUNIT为计算单位。如果DBBL的状态询问没有回答,该BBL就被‘隔离’了。缺省值满足(SCANUNIT * BBLQUERY) 约为 300秒。
BLOCKTIME6
#BLOCKTIME指定在阻塞队列中的被阻塞请求的超时时间(包括客户端从tpinit到tpterm的等待时间),以SCANUNIT为计算单位。缺省值满足(SCANUNIT * BLOCKTIME) 约为60秒。
#BLOCKTIME指定在阻塞队列中的被阻塞请求的超时时间(包括客户端从tpinit到tpterm的等待时间),以SCANUNIT为计算单位。缺省值满足(SCANUNIT * BLOCKTIME) 约为60秒。
*MACHINES
DEFAULT:
#该部分对各主机进行描述。
unicom2LMID=unicom2
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXACCESSERS=100
unicom1LMID=unicom1
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXWSCLIENTS=50
DEFAULT:
#该部分对各主机进行描述。
unicom2LMID=unicom2
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXACCESSERS=100
unicom1LMID=unicom1
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXWSCLIENTS=50
#unicom2, unicom1为网络主机名用hostname获得。
#LMID:Logical Machines ID 为tuxedo对主机的内部逻辑命名。
#APPDIR要求放置SERVER的可执行文件。
#TUXCONFIG为全路径的二进制配置文件,要求和环境变量TUXCONFIG相同。对于master机tuxconfig文件是由tmloadcf生成的,而非master机则是由tmboot启动后由tlisten从master机上拷贝获得。
#TUXDIR为tuxedo安装目录,要求和环境变量TUXDIR相同。
#MAXWSCLIENTS表示可连接client的最大个数。
#LMID:Logical Machines ID 为tuxedo对主机的内部逻辑命名。
#APPDIR要求放置SERVER的可执行文件。
#TUXCONFIG为全路径的二进制配置文件,要求和环境变量TUXCONFIG相同。对于master机tuxconfig文件是由tmloadcf生成的,而非master机则是由tmboot启动后由tlisten从master机上拷贝获得。
#TUXDIR为tuxedo安装目录,要求和环境变量TUXDIR相同。
#MAXWSCLIENTS表示可连接client的最大个数。
*GROUPS
#GROUP1为组名,LMID表示该组运行的主机,GRPNO为组号,OPENINFO为该组通过XA打开RM(通常指数据库)的初始串。
#GROUP1为组名,LMID表示该组运行的主机,GRPNO为组号,OPENINFO为该组通过XA打开RM(通常指数据库)的初始串。
GROUP1 LMID=unicom2GRPNO=1 OPENINFO=NONE
GROUP2 LMID=unicom3GRPNO=2 OPENINFO=NONE
GROUP2 LMID=unicom3GRPNO=2 OPENINFO=NONE
*SERVERS
#这里描述应用服务器。SRVGRP的该SERVER所属组名,SRVID为服务器ID号,MIN表示该服务器CLOPT提供运行的相关参数,要求是”-A -- ….”,可以在应用服务器的srvinit函数中获得这些参数。
DEFAULT:
CLOPT="-A"
BillServer SRVGRP=GROUP1 SRVID=1 MIN=2 MAX=4
RQADDR=QNAME REPLYQ=Y
CLOPT="-A -o ./out.log –r -e ./err.log --
-p [L][low_water][,[terminate_time]][:[high_water][,create_time]]
如果MAX>1,并且使用了MSSQ(RQADDR, RQPERM)的Server可以配置-p来控制进程的增加和减少。控制算法如下:如果请求队列中的请求个数大于high_water 后超过create_time 秒,就增加该服务的一个新进程;如果请求队列中的请求个数小于low_water 后超过terminate_time 秒, 就停止该服务的一个进程。low_water 缺省是平均每个服务进程有一个请求消息或者workload 50;high_water 缺省是平均每个服务进程有两个请求消息或者workload 100。create_time 缺省最小是50秒, and terminate_time 缺省最小是60秒。
注意:
使用TUXEDO的服务进程池时,用户自己在程序中如果用alarm()等系统调用来停止进程是不起作用的,但也不会报错。
[L] 标记意味着增减服务进程基于负载而不是请求队列的长度。仅用于SHM模式下并且LDBAL=Y,否则会报错 (LIBTUX_CAT:1542) ,服务进程也不会增减。
WSLSRVGRP=GROUP2 SRVID=1
CLOPT="-A -- -n //130.36.0.103:8889 -m 3 -M 10 -x 10 -T 10"
#WSL用于和client端进行连接。-n 表示出接入点为IP:PORT方式,-m –M 表示最小和最大启动多少个WSH和前端通讯,-x则表示一个WSH和几个client端连接。-T 10表示如果client端和server连接后10分钟内没有交易请求则关闭连接。
RQADDR=QNAME REPLYQ=Y
CLOPT="-A -o ./out.log –r -e ./err.log --
-p [L][low_water][,[terminate_time]][:[high_water][,create_time]]
如果MAX>1,并且使用了MSSQ(RQADDR, RQPERM)的Server可以配置-p来控制进程的增加和减少。控制算法如下:如果请求队列中的请求个数大于high_water 后超过create_time 秒,就增加该服务的一个新进程;如果请求队列中的请求个数小于low_water 后超过terminate_time 秒, 就停止该服务的一个进程。low_water 缺省是平均每个服务进程有一个请求消息或者workload 50;high_water 缺省是平均每个服务进程有两个请求消息或者workload 100。create_time 缺省最小是50秒, and terminate_time 缺省最小是60秒。
注意:
使用TUXEDO的服务进程池时,用户自己在程序中如果用alarm()等系统调用来停止进程是不起作用的,但也不会报错。
[L] 标记意味着增减服务进程基于负载而不是请求队列的长度。仅用于SHM模式下并且LDBAL=Y,否则会报错 (LIBTUX_CAT:1542) ,服务进程也不会增减。
WSLSRVGRP=GROUP2 SRVID=1
CLOPT="-A -- -n //130.36.0.103:8889 -m 3 -M 10 -x 10 -T 10"
#WSL用于和client端进行连接。-n 表示出接入点为IP:PORT方式,-m –M 表示最小和最大启动多少个WSH和前端通讯,-x则表示一个WSH和几个client端连接。-T 10表示如果client端和server连接后10分钟内没有交易请求则关闭连接。
*SERVICES
#不要求将所有的service在这里描述,当某个service有特别参数时才在SERVICE节中说明。
TOUPPER
LOAD=60 // 负载,当LDBAL=Y时有用
PRIO=80// 服务在请求队列中的优先级
TRANSTIME=120 // 交易时间
SVCTIMEOUT=600// 服务超时时间
#不要求将所有的service在这里描述,当某个service有特别参数时才在SERVICE节中说明。
TOUPPER
LOAD=60 // 负载,当LDBAL=Y时有用
PRIO=80// 服务在请求队列中的优先级
TRANSTIME=120 // 交易时间
SVCTIMEOUT=600// 服务超时时间
*NETWORK
#NETWORK节对多机之间如何进行网络连接进行描述。
#cluster方式下要求先启动tlisten。事实上,对于非master机启动应用服务器是由tlisten完成的。
#tlisten的启动方式为
#unicom1: tlisten –l //130.36.1.101:8891
#unicom2: tlisten –l //130.36.0.102:8891
#NADDR指定网络连接的接入点。
#NLSADDR则指定tlisten的接入点。
#BRIDGE则指TCP连接所用的设备文件。
#NETWORK节对多机之间如何进行网络连接进行描述。
#cluster方式下要求先启动tlisten。事实上,对于非master机启动应用服务器是由tlisten完成的。
#tlisten的启动方式为
#unicom1: tlisten –l //130.36.1.101:8891
#unicom2: tlisten –l //130.36.0.102:8891
#NADDR指定网络连接的接入点。
#NLSADDR则指定tlisten的接入点。
#BRIDGE则指TCP连接所用的设备文件。
unicom2
NADDR="//130.36.0.102:8899"
NLSADDR="//130.36.0.102:8891"
BRIDGE="/dev/streams/xtiso/tcp"
unicom1
NADDR="//130.36.0.101:8899"
NLSADDR="//130.36.0.101:8891"
BRIDGE="/dev/streams/xtiso/tcp"
NADDR="//130.36.0.102:8899"
NLSADDR="//130.36.0.102:8891"
BRIDGE="/dev/streams/xtiso/tcp"
unicom1
NADDR="//130.36.0.101:8899"
NLSADDR="//130.36.0.101:8891"
BRIDGE="/dev/streams/xtiso/tcp"
分类总结
TypeParameters requiring tuning
IdentificationTUXCONFIG, UID, GID, IPCKEY, DOMAINID
ThresholdsMAXACCESSERS, MAXSERVERS, MAXSERVICES, MAXGTT, MAXCONV, MAXBUFSTYPE, MAXWSCLIENTS
Time-outsSCANUNIT, SANITYSCAN, DBBLWAIT, BBLQUERY, BLOCKTIME
AvailabilityMASTER, MIGRATE, RESTART, GRACE, MAXGEN, RCMD
MachineTYPE, CMPLIMIT, NETLOAD, SPINCOUNT, TLOGDEVICE, PERM
NetworkNADDR, NLSADDR
ServersCLOPT, ENVFILE
ServicesLOAD, PRIO, BUFTYPE, SVCTIMEOUT
WorkstationsWSNADDR, WSRPLYMAX
IdentificationTUXCONFIG, UID, GID, IPCKEY, DOMAINID
ThresholdsMAXACCESSERS, MAXSERVERS, MAXSERVICES, MAXGTT, MAXCONV, MAXBUFSTYPE, MAXWSCLIENTS
Time-outsSCANUNIT, SANITYSCAN, DBBLWAIT, BBLQUERY, BLOCKTIME
AvailabilityMASTER, MIGRATE, RESTART, GRACE, MAXGEN, RCMD
MachineTYPE, CMPLIMIT, NETLOAD, SPINCOUNT, TLOGDEVICE, PERM
NetworkNADDR, NLSADDR
ServersCLOPT, ENVFILE
ServicesLOAD, PRIO, BUFTYPE, SVCTIMEOUT
WorkstationsWSNADDR, WSRPLYMAX
三、数据库XA设置
3.1 ORACLE XA
1.在附件中提供了rm文件,另外建议运行oracle的demo文件获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中.
如: #Oracle 8i for NT
Oracle_XA;xaosw;%ORACLE_HOME%RDBMSXAORAXA8.LIB %ORACLE_HOME%PRECOMPLIBMSVCORASQL8.LIB %ORACLE_HOME%PRECOMPLIBMSVCORASQX8.LIB %ORACLE_HOME%OCILIBMSVCOCI.LIB %ORACLE_HOME%OCILIBMSVCOCIW32.LIB
#Oracle 8i for Unix
Oracle_XA:xaosw:-L$/lib -lclntsh
3.1 ORACLE XA
1.在附件中提供了rm文件,另外建议运行oracle的demo文件获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中.
如: #Oracle 8i for NT
Oracle_XA;xaosw;%ORACLE_HOME%RDBMSXAORAXA8.LIB %ORACLE_HOME%PRECOMPLIBMSVCORASQL8.LIB %ORACLE_HOME%PRECOMPLIBMSVCORASQX8.LIB %ORACLE_HOME%OCILIBMSVCOCI.LIB %ORACLE_HOME%OCILIBMSVCOCIW32.LIB
#Oracle 8i for Unix
Oracle_XA:xaosw:-L$/lib -lclntsh
2.ubb 文件中 *GROUP节加上
TMSNAME=TMS_ORA
TMSCOUNT=3 OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTM=120+LogDir=.+SqlNet=abcde"
具体在Oracle联机文档Application Development->oracle8 Application Development's Guild->Oracle XA->Defining the xa_open String中提供了解释
TMSNAME=TMS_ORA
TMSCOUNT=3 OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTM=120+LogDir=.+SqlNet=abcde"
具体在Oracle联机文档Application Development->oracle8 Application Development's Guild->Oracle XA->Defining the xa_open String中提供了解释
3.在oracle用sys用户登录sqlplus,
a)运行$/rdbms/Admin/xaview.sql,
b)grant select on v$xatrans$ to public;
c)grant select on dba_pending_transactions to scott;
d)commit;
a)运行$/rdbms/Admin/xaview.sql,
b)grant select on v$xatrans$ to public;
c)grant select on dba_pending_transactions to scott;
d)commit;
4.运行 buildtms -o $(TUXDIR)/bin/TMS_ORA -r Oracle_XA
5. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen(), tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可拷贝$TUXDIR/apps/bankapp/appinit.c
5. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen(), tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可拷贝$TUXDIR/apps/bankapp/appinit.c
6.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=500
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=500
7.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
8.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
3.2 SYBASE XA
1.在RM文件,运行sybase获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中:#Sybase_11 for NT
SYBASE_XA_SERVER;sybase_xa_switch;C:SYBASE_SERVERliblibxasrvlib.lib
1.在RM文件,运行sybase获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中:#Sybase_11 for NT
SYBASE_XA_SERVER;sybase_xa_switch;C:SYBASE_SERVERliblibxasrvlib.lib
2.ubbconfig 文件中的 *GROUP节
TMS_NAME=TMS_SYB TMSCOUNT=3 OPENINFO=" SYBASE_XA_SERVER: -Uuserid1 -Ppassword1 -Nconnection2 -Lxa_log -Tall "
具体察看Sybase文当中xa_open String中提供了解释
TMS_NAME=TMS_SYB TMSCOUNT=3 OPENINFO=" SYBASE_XA_SERVER: -Uuserid1 -Ppassword1 -Nconnection2 -Lxa_log -Tall "
具体察看Sybase文当中xa_open String中提供了解释
3.运行 buildtms -o $(TUXDIR)/bin/TMS_SYB -r SYBASE_XA_SERVER
4. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=500
6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
4. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=500
6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
3.3 INFORMIX XA
1.运行esql -lib获得要连接的所有lib库的名称.然后将这些名称全部加到RM文件中INFORMIX-OnLine:infx_xa_switch:$/lib/esql/libinfxxa.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixsql.a /usr/informix/lib/libixasf.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixgls.a -lnsl_s -lm -lV3 -lcl -lsec /usr/informix/lib/esql/libixglx.a
2.ubbconfig 文件中
*GROUP节 TMS_NAME=TMS_INFO TMSCOUNT=3 OPENINFO="INFORMIX-OnLine:test_tux"
具体察看Sybase文当中xa_open String中提供了解释
3.运行 buildtms -o $(TUXDIR)/bin/TMS_INFO -r INFORMIX-OnLine
4. 在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c
5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE
例:TLOGDEVICE="/home/usr1/TLOGDEV"
TLOGSIZE=500
6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.
7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort.
四、Tuxedo多机方式配置要点
tuxedo多机方式配置有两个方面
4.1启动tlisten
tlisten在tuxedo启动时扮演控制者的角色,在非master机上由tlisten启动bbl和应用服务器,tlisten的启动方法为
tlisten -l //hostip:ipport
1.注意这里的ipport必须和ubb文件中NETWORK域的NLSADDR一致,最好都用IP地址,以避免双方对同一机器名解释出不同的IP地址。
2. tlisten必须在所有的机器上启动,启动后才能运行tmboot.建议操作系统启动时就运行tlisten.
3.注意各个节点的tlisten都有PASSWORD,存在%APPDIR%.admtlisten.pw文件下,如果那里没有,就读TUXEDO的%TUXDIR%udataobjtlisten.pw文件中的内容。各节点的tlisten password要保证绝对一样(包括回车!)。否则会报错:‘Security Violation’。
4.2 ubb文件配置
对于多机模式一般就是指单一domain管理的多台机器,所有机器上仅需要一个ubb文件,以下是ubb文件的模板
*RESOURCES
IPCKEY80952
MAXACCESSERS40
MAXSERVERS35
MAXSERVICES75
MASTERSITE1,SITE2
OPTIONSLAN,MIGRATE // MIGRATE表示MASTER可以动态迁移
MODELMP// 多机模式
*MACHINES
"PATRICK"LMID="site1"
APPDIR="D:/Bea/tuxedo/samples/atmi/simpapp"
TUXCONFIG="d:/Bea/tuxedo/samples/atmi/simpapp/tuxconfig"
TUXDIR=" d:/Bea /tuxedo"
UID=0
GID=0
TYPE="NT"
MAXWSCLIENTS=5
MAXACCESSERS=40
tuxedo多机方式配置有两个方面
4.1启动tlisten
tlisten在tuxedo启动时扮演控制者的角色,在非master机上由tlisten启动bbl和应用服务器,tlisten的启动方法为
tlisten -l //hostip:ipport
1.注意这里的ipport必须和ubb文件中NETWORK域的NLSADDR一致,最好都用IP地址,以避免双方对同一机器名解释出不同的IP地址。
2. tlisten必须在所有的机器上启动,启动后才能运行tmboot.建议操作系统启动时就运行tlisten.
3.注意各个节点的tlisten都有PASSWORD,存在%APPDIR%.admtlisten.pw文件下,如果那里没有,就读TUXEDO的%TUXDIR%udataobjtlisten.pw文件中的内容。各节点的tlisten password要保证绝对一样(包括回车!)。否则会报错:‘Security Violation’。
4.2 ubb文件配置
对于多机模式一般就是指单一domain管理的多台机器,所有机器上仅需要一个ubb文件,以下是ubb文件的模板
*RESOURCES
IPCKEY80952
MAXACCESSERS40
MAXSERVERS35
MAXSERVICES75
MASTERSITE1,SITE2
OPTIONSLAN,MIGRATE // MIGRATE表示MASTER可以动态迁移
MODELMP// 多机模式
*MACHINES
"PATRICK"LMID="site1"
APPDIR="D:/Bea/tuxedo/samples/atmi/simpapp"
TUXCONFIG="d:/Bea/tuxedo/samples/atmi/simpapp/tuxconfig"
TUXDIR=" d:/Bea /tuxedo"
UID=0
GID=0
TYPE="NT"
MAXWSCLIENTS=5
MAXACCESSERS=40
"test60"LMID="site2"
APPDIR="/bea/tuxedo/samples/atmi/simpapp"
TUXCONFIG="/bea/tuxedo/samples/atmi/simpapp/tuxconfig"
TUXDIR="/bea/tuxedo"
UID=1002
GID=101
TYPE="Sun"
MAXWSCLIENTS=15
MAXACCESSERS=100
APPDIR="/bea/tuxedo/samples/atmi/simpapp"
TUXCONFIG="/bea/tuxedo/samples/atmi/simpapp/tuxconfig"
TUXDIR="/bea/tuxedo"
UID=1002
GID=101
TYPE="Sun"
MAXWSCLIENTS=15
MAXACCESSERS=100
*GROUPS
GROUP1 LMID=site1GRPNO=1OPENINFO=NONE
GROUP2 LMID=site2GRPNO=2OPENINFO=NONE
GROUP1 LMID=site1GRPNO=1OPENINFO=NONE
GROUP2 LMID=site2GRPNO=2OPENINFO=NONE
*SERVERS
DEFAULT:DEFAULT: RESTART=Y MAXGEN=5 REPLYQ=Y CLOPT="-A"
DEFAULT:DEFAULT: RESTART=Y MAXGEN=5 REPLYQ=Y CLOPT="-A"
WSLSRVGRP=GROUP1 SRVID=20 CLOPT="-A -- -n //10.128.5.201:9009"
WSLSRVGRP=GROUP2 SRVID=10 CLOPT="-A -- -n //10.128.5.200:9009"
simpservSRVGRP=GROUP1 SRVID=3
simpservSRVGRP=GROUP2 SRVID=4
WSLSRVGRP=GROUP2 SRVID=10 CLOPT="-A -- -n //10.128.5.200:9009"
simpservSRVGRP=GROUP1 SRVID=3
simpservSRVGRP=GROUP2 SRVID=4
*SERVICES
*NETWORK
site1NADDR="//10.128.5.201:6044"
NLSADDR="//10.128.5.201:6045"
site1NADDR="//10.128.5.201:6044"
NLSADDR="//10.128.5.201:6045"
site2NADDR="//10.128.5.200:6044"
NLSADDR="//10.128.5.200:6045"
# BRIDGE="/dev/tcp"
NLSADDR="//10.128.5.200:6045"
# BRIDGE="/dev/tcp"
4.3管理
只能在master机上运行tmadmin进行管理。要获得统计信息在tmadmin中应运行default –m命令。
$tmadmin
>default –m SITE1
>psr
>bbi
只能在master机上运行tmadmin进行管理。要获得统计信息在tmadmin中应运行default –m命令。
$tmadmin
>default –m SITE1
>psr
>bbi
当MASTER主机意外当机时,TUXEDO仍可以正常运行,可以在backup的节点上手工做MASTER的动态迁移,在当前的backup节点上 DBBL充当MASTER。
$tmadmin
>m
$tmadmin
>m
Windows NT/2000下要注意的问题:
1.由于NT机器上MAXACCESSORS受IPC的限制通常较小,因此建议在MACHINES部分单独设置MAXACCESSORS.
2.在MACHINES部分要单独设置UID=0和GID=0
3.和其他类型的CPU机器互连时,在MACHINES部分一定要指定不同的TYPE.否则将提示tlisten版本不匹配。
TUXEDO在SERVER和CLIENT之间进行数据交换缺省进行数据翻译,但一个domain的server之间缺省不进行数据翻译!
5.有时LANG环境变量无法改变为C, 可以在 %TUXDIR%locale创建文件夹 mkdir %LANG%.
6.RM文件使用中发现有效的RM后一定要有回车,否则将报RM不存在.
1.由于NT机器上MAXACCESSORS受IPC的限制通常较小,因此建议在MACHINES部分单独设置MAXACCESSORS.
2.在MACHINES部分要单独设置UID=0和GID=0
3.和其他类型的CPU机器互连时,在MACHINES部分一定要指定不同的TYPE.否则将提示tlisten版本不匹配。
TUXEDO在SERVER和CLIENT之间进行数据交换缺省进行数据翻译,但一个domain的server之间缺省不进行数据翻译!
5.有时LANG环境变量无法改变为C, 可以在 %TUXDIR%locale创建文件夹 mkdir %LANG%.
6.RM文件使用中发现有效的RM后一定要有回车,否则将报RM不存在.
五、用JOLT连接Tuxedo和Weblogic
5.1在Tuxedo上安装、配置JOLT Server
1 – 安装JOLT Server
2 -- set your environment
set TUXDIR=d:beatuxedo
set JOLTDIR=%TUXDIR%udataobjjolt
set APPDIR=%TUXDIR%samplesatmisimpapp
set PATH=%TUXDIR%bin;%JOLTDIR%bin;%APPDIR%;%PATH%
set NLSPATH=%TUXDIR%localeC
set TUXCONFIG=%APPDIR%tuxconfig
3 – added in UBBconfig file
JSLSRVGRP=GROUP1 SRVID=6 CLOPT="-A -- -n //10.128.5.112:9001"JREPSVRSRVGRP=GROUP1 SRVID=7 CLOPT="-A -- -W -P d:Beatuxedoudataobjjoltrepositoryjrepository"JREPSVRSRVGRP=GROUP1 SRVID=8 CLOPT="-A -- -P d:Beatuxedoudataobjjoltrepositoryjrepository"
JSLSRVGRP=GROUP1 SRVID=6 CLOPT="-A -- -n //10.128.5.112:9001"JREPSVRSRVGRP=GROUP1 SRVID=7 CLOPT="-A -- -W -P d:Beatuxedoudataobjjoltrepositoryjrepository"JREPSVRSRVGRP=GROUP1 SRVID=8 CLOPT="-A -- -P d:Beatuxedoudataobjjoltrepositoryjrepository"
5.2 配置Weblogic Server 6.x
1,Download the Jolt client package for WLS from developer.bea.com, unzip it and copy the jar file to %WL_HOME%lib. Then add the jar files into your Weblogic domain environment file:
classpath=%classpath%;%WL_HOME%libjolt.jar;%WL_HOME%libjoltweblogic.jar
1,Download the Jolt client package for WLS from developer.bea.com, unzip it and copy the jar file to %WL_HOME%lib. Then add the jar files into your Weblogic domain environment file:
classpath=%classpath%;%WL_HOME%libjolt.jar;%WL_HOME%libjoltweblogic.jar
2,Config Jolt pool manager startup class in Weblogic
a,start Weblogic and access the console
b,create Startup class and Shutdown class
in console:Deployments->Startup & Shutdown,right click
select create a new StartUp class...:
name:demojoltpoolStartup
classname:bea.jolt.pool.servlet.weblogic.PoolManagerStartUp
a,start Weblogic and access the console
b,create Startup class and Shutdown class
in console:Deployments->Startup & Shutdown,right click
select create a new StartUp class...:
name:demojoltpoolStartup
classname:bea.jolt.pool.servlet.weblogic.PoolManagerStartUp
3,Create a jolt pool
in console:Services->Jolt,right click
Select the panel:Configuration
in TAB General
name:demojoltpool
Minimum Pool Size:1
Maximum Pool Size:3
Click the button "Create"
in TAB address
Primary Address://hostname:port
Failover Address://hostname:port
Click the button "Apply"
Select Targets:
in Listbox Available:
select your server add into the listbox Chosen
Click the button "Apply"
in console:Services->Jolt,right click
Select the panel:Configuration
in TAB General
name:demojoltpool
Minimum Pool Size:1
Maximum Pool Size:3
Click the button "Create"
in TAB address
Primary Address://hostname:port
Failover Address://hostname:port
Click the button "Apply"
Select Targets:
in Listbox Available:
select your server add into the listbox Chosen
Click the button "Apply"
4. Restart your Weblogic
5.3 Example setup
1.Run %WL_HOME%configexamplesetExampleEnv.cmd,
2.compile the SimpAppServlet by:
javac -d %EX_WEBAPP_CLASSES% SimpAppServlet.java
3.Edit WL_HOME%configexamplesapplicationsexamplesWebAppWEB-INFweb.xml
add the servlet description:
<servlet> <servlet-name>JoltServlet</servlet-name> <servlet-class>examples.jolt.servlet.simpapp.SimpAppServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>JoltServlet</servlet-name> <url-pattern>/joltservlet</url-pattern> </servlet-mapping>
1.Run %WL_HOME%configexamplesetExampleEnv.cmd,
2.compile the SimpAppServlet by:
javac -d %EX_WEBAPP_CLASSES% SimpAppServlet.java
3.Edit WL_HOME%configexamplesapplicationsexamplesWebAppWEB-INFweb.xml
add the servlet description:
<servlet> <servlet-name>JoltServlet</servlet-name> <servlet-class>examples.jolt.servlet.simpapp.SimpAppServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>JoltServlet</servlet-name> <url-pattern>/joltservlet</url-pattern> </servlet-mapping>
4.Edit a html and put it to %WL_HOME%configexamplesapplicationsexamplesWebApp
内容包含调用JoltServlet
Type some text here and click the Post button:<form name="simpapp" action="joltservlet" method="post"><input type="hidden" name="SVCNAME" value="TOUPPER"><input type="text" name="STRING"></td><input type="submit" value="Post!"></form>
内容包含调用JoltServlet
Type some text here and click the Post button:<form name="simpapp" action="joltservlet" method="post"><input type="hidden" name="SVCNAME" value="TOUPPER"><input type="text" name="STRING"></td><input type="submit" value="Post!"></form>
5.Goto %WL_HOME%configexample, start the examples domain,
6.Access [url]http://localhost:7001/examplesWebApp/jolt.html[/url]
6.Access [url]http://localhost:7001/examplesWebApp/jolt.html[/url]
五、用JOLT连接Tuxedo和Weblogic
5.1在Tuxedo上安装、配置JOLT Server
1 – 安装JOLT Server
2 -- set your environment
set TUXDIR=d:beatuxedo
set JOLTDIR=%TUXDIR%udataobjjolt
set APPDIR=%TUXDIR%samplesatmisimpapp
set PATH=%TUXDIR%bin;%JOLTDIR%bin;%APPDIR%;%PATH%
set NLSPATH=%TUXDIR%localeC
set TUXCONFIG=%APPDIR%tuxconfig
5.1在Tuxedo上安装、配置JOLT Server
1 – 安装JOLT Server
2 -- set your environment
set TUXDIR=d:beatuxedo
set JOLTDIR=%TUXDIR%udataobjjolt
set APPDIR=%TUXDIR%samplesatmisimpapp
set PATH=%TUXDIR%bin;%JOLTDIR%bin;%APPDIR%;%PATH%
set NLSPATH=%TUXDIR%localeC
set TUXCONFIG=%APPDIR%tuxconfig
3 – added in UBBconfig file
JSLSRVGRP=GROUP1 SRVID=6 CLOPT="-A -- -n //10.128.5.112:9001"JREPSVRSRVGRP=GROUP1 SRVID=7 CLOPT="-A -- -W -P d:Beatuxedoudataobjjoltrepositoryjrepository"JREPSVRSRVGRP=GROUP1 SRVID=8 CLOPT="-A -- -P d:Beatuxedoudataobjjoltrepositoryjrepository"
JSLSRVGRP=GROUP1 SRVID=6 CLOPT="-A -- -n //10.128.5.112:9001"JREPSVRSRVGRP=GROUP1 SRVID=7 CLOPT="-A -- -W -P d:Beatuxedoudataobjjoltrepositoryjrepository"JREPSVRSRVGRP=GROUP1 SRVID=8 CLOPT="-A -- -P d:Beatuxedoudataobjjoltrepositoryjrepository"
5.2 配置Weblogic Server 6.x
1,Download the Jolt client package for WLS from developer.bea.com, unzip it and copy the jar file to %WL_HOME%lib. Then add the jar files into your Weblogic domain environment file:
classpath=%classpath%;%WL_HOME%libjolt.jar;%WL_HOME%libjoltweblogic.jar
1,Download the Jolt client package for WLS from developer.bea.com, unzip it and copy the jar file to %WL_HOME%lib. Then add the jar files into your Weblogic domain environment file:
classpath=%classpath%;%WL_HOME%libjolt.jar;%WL_HOME%libjoltweblogic.jar
2,Config Jolt pool manager startup class in Weblogic
a,start Weblogic and access the console
b,create Startup class and Shutdown class
in console:Deployments->Startup & Shutdown,right click
select create a new StartUp class...:
name:demojoltpoolStartup
classname:bea.jolt.pool.servlet.weblogic.PoolManagerStartUp
a,start Weblogic and access the console
b,create Startup class and Shutdown class
in console:Deployments->Startup & Shutdown,right click
select create a new StartUp class...:
name:demojoltpoolStartup
classname:bea.jolt.pool.servlet.weblogic.PoolManagerStartUp
3,Create a jolt pool
in console:Services->Jolt,right click
Select the panel:Configuration
in TAB General
name:demojoltpool
Minimum Pool Size:1
Maximum Pool Size:3
Click the button "Create"
in TAB address
Primary Address://hostname:port
Failover Address://hostname:port
Click the button "Apply"
Select Targets:
in Listbox Available:
select your server add into the listbox Chosen
Click the button "Apply"
in console:Services->Jolt,right click
Select the panel:Configuration
in TAB General
name:demojoltpool
Minimum Pool Size:1
Maximum Pool Size:3
Click the button "Create"
in TAB address
Primary Address://hostname:port
Failover Address://hostname:port
Click the button "Apply"
Select Targets:
in Listbox Available:
select your server add into the listbox Chosen
Click the button "Apply"
4. Restart your Weblogic
5.3 Example setup
1.Run %WL_HOME%configexamplesetExampleEnv.cmd,
2.compile the SimpAppServlet by:
javac -d %EX_WEBAPP_CLASSES% SimpAppServlet.java
3.Edit WL_HOME%configexamplesapplicationsexamplesWebAppWEB-INFweb.xml
add the servlet description:
<servlet> <servlet-name>JoltServlet</servlet-name> <servlet-class>examples.jolt.servlet.simpapp.SimpAppServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>JoltServlet</servlet-name> <url-pattern>/joltservlet</url-pattern> </servlet-mapping>
1.Run %WL_HOME%configexamplesetExampleEnv.cmd,
2.compile the SimpAppServlet by:
javac -d %EX_WEBAPP_CLASSES% SimpAppServlet.java
3.Edit WL_HOME%configexamplesapplicationsexamplesWebAppWEB-INFweb.xml
add the servlet description:
<servlet> <servlet-name>JoltServlet</servlet-name> <servlet-class>examples.jolt.servlet.simpapp.SimpAppServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>JoltServlet</servlet-name> <url-pattern>/joltservlet</url-pattern> </servlet-mapping>
4.Edit a html and put it to %WL_HOME%configexamplesapplicationsexamplesWebApp
内容包含调用JoltServlet
Type some text here and click the Post button:<form name="simpapp" action="joltservlet" method="post"><input type="hidden" name="SVCNAME" value="TOUPPER"><input type="text" name="STRING"></td><input type="submit" value="Post!"></form>
内容包含调用JoltServlet
Type some text here and click the Post button:<form name="simpapp" action="joltservlet" method="post"><input type="hidden" name="SVCNAME" value="TOUPPER"><input type="text" name="STRING"></td><input type="submit" value="Post!"></form>
5.Goto %WL_HOME%configexample, start the examples domain,
6.Access [url]http://localhost:7001/examplesWebApp/jolt.html[/url]
6.Access [url]http://localhost:7001/examplesWebApp/jolt.html[/url]
六、TUXEDO动态配置
TUXEDO的动态配置可以通过tmadmin和tmconfig两个命令行工具实现不同级别的配置修改。tmadmin的作用主要是监控TUXEDO的运行,可以修改服务的参数;而tmconfig功能更强大,可以在线修改当前TUXEDO的系统UBB配置,即通过MIB修改用UBBCONFIG生成的二进制TUXCONFIG在内存的拷贝。
6.1 用tmadmin修改配置
进入tmadmin后用命令help可以列出所有命令。
6.2 用tmconfig更改TUXCONFIG(UBBCONFIG)
tmconfig工具实际上遍历TUXCONFIG的内容并通过MIB API修改其配置。要正确运行tmconfig,建议设置以下环境变量:
TUXDIR=/usr/tuxedo
TUXCONFIG=/usr/app/tuxconfig
EDITOR=vi
tmconfig工具实际上遍历TUXCONFIG的内容并通过MIB API修改其配置。要正确运行tmconfig,建议设置以下环境变量:
TUXDIR=/usr/tuxedo
TUXCONFIG=/usr/app/tuxconfig
EDITOR=vi
主要的界面如下:
$ 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]:
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]:
Operation: 1) FIRST 2) NEXT 3) RETRIEVE 4) ADD 5) UPDATE
6) CLEAR BUFFER 7) QUIT [1]: 4
Enter editor to add/modify fields [n]?
Perform operation [y]?
6) CLEAR BUFFER 7) QUIT [1]: 4
Enter editor to add/modify fields [n]?
Perform operation [y]?
1. 用tmconfig增加新主机
1.进入tmconfig后,选择2)MACHINES项
2.然后可以先选择3)RETRIEVE看看当前的配置,缺省是第一个MACHINE的配置
3.通过选择2)NEXT可以一直向后搜索MACHINE配置,直到空记录为止。
4.选择4)ADD
Enter editor to add/modify fields [n]? y
5.进入vi编辑状态,可以按照一定格式增加配置。格式为:
MIB域名[tab]值
6.增加MACHINE必须加入以下的域:
oTA_TUXCONFIG
oTA_TUXDIR
oTA_APPDIR
oTA_TLOGDEVICE
oTA_TLOGSIZE
oTA_PMID
oTA_LMID
oTA_TYPE
例:
TA_TUXCONFIG /usr/apps/bank/tuxconfig
TA_TUXDIR /usr/tuxroot
TA_APPDIR /usr/apps/bank
TA_TLOGDEVICE /usr/apps/bank/TLOG
TA_ULOGPFX /usr/apps/bank/ULOG
TA_ENVFILE /usr/apps/bank/ENVFILE
TA_TLOGSIZE 150
TA_PMID SERVER109
TA_LMID SITE1
TA_TYPE Sun
7.存盘退出vi,执行操作即可。
8.激活新增的MACHINE: 重新选择2)MACHINES –> 5)UPDATE
9.进入vi后查找TA_STATE,将其值从NEW改为ACTIVE
10.存盘退出vi并执行操作。
2.然后可以先选择3)RETRIEVE看看当前的配置,缺省是第一个MACHINE的配置
3.通过选择2)NEXT可以一直向后搜索MACHINE配置,直到空记录为止。
4.选择4)ADD
Enter editor to add/modify fields [n]? y
5.进入vi编辑状态,可以按照一定格式增加配置。格式为:
MIB域名[tab]值
6.增加MACHINE必须加入以下的域:
oTA_TUXCONFIG
oTA_TUXDIR
oTA_APPDIR
oTA_TLOGDEVICE
oTA_TLOGSIZE
oTA_PMID
oTA_LMID
oTA_TYPE
例:
TA_TUXCONFIG /usr/apps/bank/tuxconfig
TA_TUXDIR /usr/tuxroot
TA_APPDIR /usr/apps/bank
TA_TLOGDEVICE /usr/apps/bank/TLOG
TA_ULOGPFX /usr/apps/bank/ULOG
TA_ENVFILE /usr/apps/bank/ENVFILE
TA_TLOGSIZE 150
TA_PMID SERVER109
TA_LMID SITE1
TA_TYPE Sun
7.存盘退出vi,执行操作即可。
8.激活新增的MACHINE: 重新选择2)MACHINES –> 5)UPDATE
9.进入vi后查找TA_STATE,将其值从NEW改为ACTIVE
10.存盘退出vi并执行操作。
2. 用tmconfig增加新Server进程
1.进入tmconfig后,选择2)SERVER项
2.可以先选择3)RETRIEVE看看当前的配置,缺省是第一个SERVER的配置
3.通过选择2)NEXT可以一直向后搜索SERVER配置,直到空记录为止。
4.选择4)ADD
Enter editor to add/modify fields [n]? y
5.进入vi编辑状态,可以按照一定格式增加配置。格式为:MIB域名[tab]值
6.增加MACHINE必须加入以下的域:
oTA_SERVERNAME
oTA_SRVGRP
oTA_SRVID
例:
TA_SERVERNAME /usr/apps/bank/teller_server
TA_SRVGRP GROUP1
TA_SRVID 15
7.存盘退出vi,执行操作即可。
2.可以先选择3)RETRIEVE看看当前的配置,缺省是第一个SERVER的配置
3.通过选择2)NEXT可以一直向后搜索SERVER配置,直到空记录为止。
4.选择4)ADD
Enter editor to add/modify fields [n]? y
5.进入vi编辑状态,可以按照一定格式增加配置。格式为:MIB域名[tab]值
6.增加MACHINE必须加入以下的域:
oTA_SERVERNAME
oTA_SRVGRP
oTA_SRVID
例:
TA_SERVERNAME /usr/apps/bank/teller_server
TA_SRVGRP GROUP1
TA_SRVID 15
7.存盘退出vi,执行操作即可。
七、系统核心参数参考
Message Queues Parameters
Message Queues Parameters
·MSGMNI: Total Number of Queues (Use this formula: Add MAXACCESSERS + (No. Servers with Reply Queues) - (No. Servers in MSSQ Set) + (No. MSSQ Sets) + 7) to determine the appropriate value
·MSGMAP: Number of entries in control map used to manage message segments (Not defined in NT). Set to 2 * MSGMNI
·MSGMAX: Maximum message size in bytes. Set to the largest message size or 75% of the queue size (whichever is bigger)
·MSGMNB: This is the queue size itself (64K, 128K, etc.)
·MSGSSZ: Size of a segment in bytes (Not defined in NT). The value of MSGSSZ should be such that a multiple of MSGSSZ is equal to the size (including the BEA TUXEDO System header) of the most commonly sent message. Usually set to 16, 32, or 64.
·MSGTQL: Total Number of In-Flight messages in the system at once
·MSGSEG: Number of message segments in the system (Not defined in NT). You need to find out the queue space of your machine and then the following formula applies: MSGSEG * MSGSSZ = Machine Queue Space Size (note it will swap)
Semaphores Parameters
·MSGMAP: Number of entries in control map used to manage message segments (Not defined in NT). Set to 2 * MSGMNI
·MSGMAX: Maximum message size in bytes. Set to the largest message size or 75% of the queue size (whichever is bigger)
·MSGMNB: This is the queue size itself (64K, 128K, etc.)
·MSGSSZ: Size of a segment in bytes (Not defined in NT). The value of MSGSSZ should be such that a multiple of MSGSSZ is equal to the size (including the BEA TUXEDO System header) of the most commonly sent message. Usually set to 16, 32, or 64.
·MSGTQL: Total Number of In-Flight messages in the system at once
·MSGSEG: Number of message segments in the system (Not defined in NT). You need to find out the queue space of your machine and then the following formula applies: MSGSEG * MSGSSZ = Machine Queue Space Size (note it will swap)
Semaphores Parameters
·SEMMNS: Maximum number of semaphores in the system. The minimum requirement for SEMMNS is MAXACCESSERS - MAXWSCLIENTS + 13 (local clients and all servers)
·SEMMNI: Maximum number of active semaphore sets. For small apps,(100 to 500 servers),10 sets are usually sufficient. For large apps, (>500 servers) 32-64 sets are usually sufficient (do a tmloadcf -c to see which is the best)
·SEMMSL: Maximum number of semaphores per semaphore sets (Not defined in NT). Use the formula: SEMMNS = SEMMNI * SEMMSL
·SEMMAP: Size of the control map used to control semaphore sets (Not defined in NT). Set to SEMMNI
·SEMMNU: Number of undo structures in the system. Set to SEMMNS
·SEMUME: Maximum number of undo entries per undo structure (Not defined in NT). Set to SEMMNS
·SEMMNI: Maximum number of active semaphore sets. For small apps,(100 to 500 servers),10 sets are usually sufficient. For large apps, (>500 servers) 32-64 sets are usually sufficient (do a tmloadcf -c to see which is the best)
·SEMMSL: Maximum number of semaphores per semaphore sets (Not defined in NT). Use the formula: SEMMNS = SEMMNI * SEMMSL
·SEMMAP: Size of the control map used to control semaphore sets (Not defined in NT). Set to SEMMNI
·SEMMNU: Number of undo structures in the system. Set to SEMMNS
·SEMUME: Maximum number of undo entries per undo structure (Not defined in NT). Set to SEMMNS
Shared Memory Parameters
·SHMMAX: Maximum shared memory segment size in bytes. Bulletin Board Size (must be greater than 1,400,000). Largest BB today is approx. 5 MB (this parameter is normally set much higher for the database, so use their rules)
·SHMSEG: Maximum number of segments one process can attach to (for a busy application you need to set this from 32-64)
·SHMMNI: Maximum number of shared memory identifiers in the system. Normally the default of 100 is acceptable (unless more than 100 entities plan on allocating shared memory)
·SHMMIN: Minimum shared memory segment size in bytes. MUST be set to 1.
·SHMSEG: Maximum number of segments one process can attach to (for a busy application you need to set this from 32-64)
·SHMMNI: Maximum number of shared memory identifiers in the system. Normally the default of 100 is acceptable (unless more than 100 entities plan on allocating shared memory)
·SHMMIN: Minimum shared memory segment size in bytes. MUST be set to 1.
Other Tunables
·ULIMIT: Maximum file size. ULIMIT needs to be large enough so that you can install BEA TUXEDO and build servers. 4 megabytes recommended.
·MAXUP: Maximum number of processes per non-super user. The BEA TUXEDO system processes--servers and administrative processes—run with the UID specified in the application's UBBCONFIG file. MAXUP needs to be large enough to allow all of these processes to run.
·NOFILES: Maximum number of open files per process. A BEA TUXEDO server requires a minimum of four file descriptors.
·NPROC: Maximum number of processes (systemwide).
·NREGION: Number of region table entries to allocate. Most processes have three regions: text, data, and stack. Additional regions are needed for each shared memory segment and shared library (text and data) attached. However, the region table entry for the text of a ``shared text'' program is shared by all processes executing that program. Each shared memory segment attached to one or more processes uses another region table entry.
·NUMTIM: Maximum number of STREAMS modules that can be pushed by the Transport Layer Interface (TLI). A typical default value is 16; you should have it set to at least 256.
·NUMTRW: The number of TLI read/write structures to allocate in kernel data space. A typical default value is 16; you should have it set to at least 256.
·MAXUP: Maximum number of processes per non-super user. The BEA TUXEDO system processes--servers and administrative processes—run with the UID specified in the application's UBBCONFIG file. MAXUP needs to be large enough to allow all of these processes to run.
·NOFILES: Maximum number of open files per process. A BEA TUXEDO server requires a minimum of four file descriptors.
·NPROC: Maximum number of processes (systemwide).
·NREGION: Number of region table entries to allocate. Most processes have three regions: text, data, and stack. Additional regions are needed for each shared memory segment and shared library (text and data) attached. However, the region table entry for the text of a ``shared text'' program is shared by all processes executing that program. Each shared memory segment attached to one or more processes uses another region table entry.
·NUMTIM: Maximum number of STREAMS modules that can be pushed by the Transport Layer Interface (TLI). A typical default value is 16; you should have it set to at least 256.
·NUMTRW: The number of TLI read/write structures to allocate in kernel data space. A typical default value is 16; you should have it set to at least 256.
Tuxedo系统平台的调试参数及步骤
1.配置MAXSERVERS、MAXSERVICES两个参数,看是否满足ubbfile文件的配置的服务数和服务参数的个数。Tmadmin——bbs,看里面的参数个数。
2.数据库的可以连接数的大小是否满足ubbfile文件里面同一个数据库连接得servers的数目。参照xa_NULL*.trc文件的错误提示。
3.用命令tmloadcf –c ubbfile看tuxedo的进程所需要的共享内存配置。然后修改系统的共享内存的配置。除了AIX平台外,系统的共享内存参数——set shmsys:shminfo_shmmin要设置为1。
4.Tmunloadcf 看现在运行的TUXEDO环境。
5.Tmadmin——crdl -b -z 创建日志文件。
6.TUXEDO环境的设置顺序。Tuxconfig——tmadmin——TLOG;