Tuxedo中间件开发和管理
 一、Introduction
 1、Middleware目前流行叫做Application Server;
 2、C語言編寫;
 3、Tuxedo走下坡路,因為BS架構流行;但CS仍有BS無法取代的使用場合;
 4、Tuxedo server provides services to Tuxedo clients;
 ?? ----server就是進程,用ps可以查看;
 ?? ----services可以理解為一個一個的函數;
 5、什么是短連接、長連接?
 6、Bulletin Board Liaison(BBL:Tuxedo administration process);
 7、客戶端:native client,remote client;
 8、unix命令:ipcs;
 9、The tuxedo API:ATMI;
 10、Tuxedo buffer types:
 11、通訊方式:Request/Reply(synchronous、asynchronous);conversations;unsolicited messages;publish and subscribe;store and forward;
 12、work distribution:
 13、configuration and administration:centralized
 14、domain:a tuxedo application;a bussiness progrem built upon the tuxedo system;
 15、Conmand Line Utilities;GUI Administration Console;
 二、Installing Tuxedo
 1、Tuxedo Administrator
 ----職責同DBA,但更簡單;
 2、安裝:官方安裝文檔;
 3、目錄結構;
 4、卸載:卸載shell或刪除全部目錄;
 三、Deploying a Basic Application
 1、部署tuxedo自帶例子,.../atmi/simpapp,小寫轉換大寫;
 2、部署步驟如下圖:
 ?????
 (1)配置應用的環境變量
 可以在tux.env中配置(臨時環境變量):
 tuxedo@campost:~/simpapp> cat tux.env
 TUXDIR=/opt/tuxedo/tuxedo11gR1; export TUXDIR
 JAVA_HOME=$TUXDIR/jre; export JAVA_HOME
 JVMLIBS=$JAVA_HOME/lib/amd64/server:$JAVA_HOME/jre/bin
 PATH=$TUXDIR/bin:$JAVA_HOME/bin:$PATH; export PATH
 COBCPY=:$TUXDIR/cobinclude; export COBCPY
 COBOPT="-C ANS85 -C ALIGN=8 -C NOIBMCOMP -C TRUNC=ANSI -C OSEXT=cbl"; export COBOPT
 SHLIB_PATH=$TUXDIR/lib:$JVMLIBS:$SHLIB_PATH; export SHLIB_PATH
 LIBPATH=$TUXDIR/lib:$JVMLIBS:$LIBPATH; export LIBPATH
 LD_LIBRARY_PATH=$TUXDIR/lib:$JVMLIBS:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
 WEBJAVADIR=$TUXDIR/udataobj/webgui/java; export WEBJAVADIR
 LANG=C; export LANG
 APPDIR=/home/tuxedo/simpapp; export APPDIR
 TUXCONFIG=/home/tuxedo/simpapp/tuxconfig; export TUXCONFIG
 里面的環境變量有些不是必須的,例如SHLIB_PATH用于HP-UX,LIBPATH用于IBM AIX,而LD_LIBRARY_PATH用于linux。
 配置完之后執行:
 tuxedo@campost:~/simpapp> . ./tux.env
 也可以在tuxedo用戶的.profile中添加以上環境變量,是它們在進入tuxedo時自動生效
 (2)配置ubbconfig,編譯程序
 先修改文本形式的ubbconfig:
 vi ubbsimpapp
 僅修改以下幾個地方即可:
 *RESOURCES
 IPCKEY????????? 123456
 *MACHINES
 DEFAULT:
 ??????????????? APPDIR="/home/tuxedo/simpapp"
 ??????????????? TUXCONFIG="/home/tuxedo/simpapp/tuxconfig"
 ??????????????? TUXDIR="/opt/tuxedo/tuxedo11gR1"
 campost???????? LMID=simple
 tuxedo需要二進制形式的ubbconfig,需要使用tmloadcf得到二進制的ubbconfig:
 tuxedo@campost:~/simpapp> tmloadcf -y ubbsimple
 可以使用tmunloadcf命令從二進制形式的ubbconfig得到文本形式的ubbconfig。
 編譯服務端程序:
 tuxedo@campost:~/simpapp> buildserver -o simpserv -f simpserv.c -s TOUPPER
 服務端程序及服務名不能任意命名,因為在配置文件中有配置。
 編譯客戶端程序:
 tuxedo@campost:~/simpapp> buildserver -o simpserv -f simpserv.c -s TOUPPER
 客戶端可執行程序可任意命名。
 (3)啟動tuxedo應用,運行程序
 tuxedo@campost:~/simpapp> tmboot -y
 Booting all admin and server processes in /home/tuxedo/simpapp/tuxconfig
 INFO: Oracle Tuxedo, Version 11.1.1.3.0, 64-bit, Patch Level (none)
 Booting admin processes ...
 exec BBL -A :
 ??????? process id=22679 ... Started.
 Booting server processes ...
 exec simpserv -A :
 ??????? process id=22680 ... Started.
 2 processes started.
 tuxedo@campost:~/simpapp> ./client "Hello, world"
 Returned string is: HELLO, WORLD
 四、Basic Tuxedo Configuration
 1、tuxedo配置文件ubbxxx,既要文本文件,又要二進制文件,也是因為慣例,按說不應該必須讓管理員手工tmloadcf生成二進制配置文件;
 2、配置文件結構如下圖:
 ?????3、resource三個參數必不可少:
 IPCKEY:IPC通信KEY,32,769—262,142,Tuxedo占用內存很少,該值盡量配大些;
 MASTER:主Tuxedo節點的邏輯機器名(Logical Machine Name),與OS機器名(Real Machine Name,uname -a)映射,但不是OS機器名;
 ??????? Machine中有OS機器名與邏輯機器(LMID)名的對應。
 MODEL:單機是SHM,多機網絡是MP;
 4、配置文件的聯機文檔為ads.pdf,其他參數調優時使用;
 五、Administration and Additional Configuration
 1、MIB:Management Information Base;
 2、操作tuxedo有三種方式:(1)APIs;(2)tmadmin;(3)圖形界面;
 ?? 對于學習來說,APIs用于開發,tmadmin用于管理,圖形界面不用學習;
 3、tmboot:
 ?????? 如:tmboot -s dispApp;
 4、tmshutdown:
 ??????? 如:tmshutdown -s dispApp;
 ????? tmshutdown -c;
 5、tmadmin:
 ??????
 production@campost:~> tmadmin
 tmadmin - Copyright (c) 1996-2010 Oracle.
 Portions * Copyright 1986-1997 RSA Data Security, Inc.
 All Rights Reserved.
 Distributed under license by Oracle.
 Tuxedo is a registered trademark.
 > help
 aborttrans (abort) [-yes] [-g groupname [-R rmid]] tranindex
 addmodule (amod) -g groupname -i srvid -n modulename -j jarfilename [-C localclasspath] [-A args]
 advertise (adv) {-q qaddress [-g groupname] [-i srvid] | -g groupname -i srvid} service[:func]
 bbclean (bbc) machine
 bbinternals (bbi)?
 bbparms (bbp)?
 bbsread (bbls) machine
 bbstats (bbs)?
 boot (b) [options]
 broadcast (bcst) [-m machine] [-u usrname] [-c cltname] [text]
 changeload (chl) [-m machine] {-q qaddress [-g groupname] [-i srvid]
 ??????? [-s service] | -g groupname -i srvid -s service | -I interface [-g groupname]} newload
 changemodule (cmod) -g groupname -i srvid -n modulename -j jarfilename [-C localclasspath] [-A args]
 changepriority (chp) [-m machine] {-q qaddress [-g groupname] [-i srvid]
 ??????? [-s service] | -g groupname -i srvid -s service | -I interface [-g groupname]} newpri
 changetrace (chtr) [-m machine] [-g groupname [-R rmid]] [-i srvid] newspec
 changetrantime (chtt) [-m machine] {-q qaddress [-g groupname] [-i srvid]
 ??????? [-s service] | -g groupname -i srvid -s service | -I interface [-g groupname]} newtlim
 committrans (commit) [-yes] -g groupname [-R rmid] tranindex
 config (conf)?
 crdl (crdl) -b blocks -z config -o configoffset [-O newdefoffset] [newdevice]
 crlog (crlg) -m machine
 default (d) [-c clientname] [-g groupname] [-i srvid] [-m machine]
 ??????? [-q qaddress] [-s service] [-u username]
 ??????? [-b blocks] [-o offset] [-z config] [-a {0|1|2}]
 ??????? [-I interface] [-B objectid] [-r routingname]
 ??????? [-p jdbcconnpool]
 dsdl (dsdl) [-yes] -z config [-o offset] dlindex
 dslog (dslg) [-yes] -m machine
 dump (du) fname
 dumpmem (dumem) fname?
 dumptlog (dl) -z config [-o offset] [-n name] [-g groupname [-R rmid]] filename
 echo (e) [{off | on}]
 help (h) [{command | all}]
 initdl (indl) [-yes] -z config [-o offset] dlindex
 inlog (inlog) [-yes] -m machine
 interfaceparms (ifp) -g groupname -I interface
 lidl (lidl) -z config [-o offset] [dlindex]
 livtoc (livtoc) -z config [-o offset]
 loadtlog (loadtlog) -m machine filename
 logstart (logstart) machine
 migrategroup (migg) [-cancel] group_name
 migratemach (migm) [-cancel] machine
 mode (mode) {-g groupname | -i srvid | -q qaddress} ... [command [arguments]]
 paginate (page) [{off | on}]
 passwd (passwd)?
 pclean (pcl) machine
 printactiveobject (pao) [-B objectid] [-m machine]
 printclient (pclt) [-m machine] [-u usrname] [-c cltname]
 printconn (pc) [-m machine]
 printdomain (pd) [{-g groupname | -i srvid | -q qaddress} ...]
 printfactory (pf)?
 printgroup (pg) [-m machine] [-g groupname]
 printinterface (pif) [-m machine] [-g groupname] [-I interface]
 printjdbcconnpool (pjcp) [-g groupname] [-i srvid] [-p jdbcconnpoolname]
 printmodule (pmod) [-g groupname] [-i srvid]
 printnet (pnw) [mach_list]
 printqueue (pq) [qaddress]
 printroute (pr) [-r routingname]
 printserver (psr) [-m machine] [-g groupname [-R rmid]] [-i srvid] [-q qaddress]
 printservice (psc) [-m machine] [-g groupname [-R rmid]] [-i srvid] [-q qaddress] [-s service] [-a {0|1|2}]
 printtrans (pt) [-g groupname [-R rmid]] [-m machine]
 quit (q)?
 reconnect (rco) non-partitioned_machine1 partitioned_machine2
 reconnectdomain (rd) {-g groupname | -i srvid | -q qaddress} ...
 removemodule (rmod) -g groupname -i srvid -n modulename
 resume (res) {-q qaddress | -g groupname | -i srvid | -s service | -I interface} ...
 serverparms (srp) -g groupname [-R rmid] -i srvid
 serviceparms (scp) -g groupname -i srvid -s service
 shmstats (sstats) [{ex | app}]
 shutdown (stop) [options]
 stats (stats) {-g groupname | -i srvid | -q qaddress} ... [-s service]
 stoptlisten (stoptl) [-m machine]
 suspend (susp) {-q qaddress | -g groupname | -i srvid | -s service |-I interface} ...
 unadvertise (unadv) {-q qaddress [-g groupname] [-i srvid] | -g groupname -i srvid} service
 verbose (v) [{off | on}]
 printrm (prm) [-m machine] [-g group]
 >?
 6、tuxedo tmadmin和oracle sqlplus輸入錯誤按回退鍵無法刪除,出現“^H”,用delete鍵才能刪除:
 設置回退鍵有效命令:stty erase ^H,但此時delete鍵又無效了;
 7、一些其他命令:
 ?????
 如:
 > pclt
 ??? LMID???????? User Name?????? Client Name??? Time??? Status? Bgn/Cmmt/Abrt
 --------------- --------------- --------------- -------- ------- -------------
 Africa????????? production????? WSH???????????? 46:01:11 IDLE??? 0/0/0
 Africa????????? production????? WSH???????????? 46:01:11 IDLE??? 0/0/0
 ......
 Africa????????? DATA_SYNC_LIST+ 052002????????? 24:22:02 IDLE/W? 0/0/0
 Africa????????? DATA_SYNC_LIST+ 052002????????? 24:22:02 IDLE/W? 0/0/0
 Africa????????? DATA_SYNC_LIST+ 052001????????? 24:22:01 IDLE/W? 0/0/0
 Africa????????? DATA_SYNC_LIST+ 053001????????? 24:22:02 IDLE/W? 0/0/0
 Africa????????? DATA_SYNC_LIST+ 053000????????? 23:20:11 IDLE/W? 0/0/0
 Africa????????? DATA_SYNC_LIST+ 023001????????? 24:22:02 IDLE/W? 0/0/0
 Africa????????? DATA_SYNC_LIST+ 022001????????? 23:20:12 IDLE/W? 0/0/0
 Africa????????? DATA_SYNC_LIST+ 023000????????? 24:22:02 IDLE/W? 0/0/0
 Africa????????? DATA_SYNC_LIST+ 022000????????? 24:22:01 IDLE/W? 0/0/0
 Africa????????? DATA_SYNC_LIST+ 052000????????? 23:20:12 IDLE/W? 0/0/0
 Africa????????? production????? tmadmin????????? 0:18:10 IDLE??? 0/0/0
 8、常用參數配置
 ??????
 如下為一個tuxedo應用的配置文件ubbproduction:
 production@campost:~/cpst/campost/config> vi ubb_production
 *RESOURCES
 IPCKEY????????? 237456
 DOMAINID??????? camp_production
 MASTER????????? Africa
 MAXACCESSERS??? 2000
 MAXSERVERS????? 200
 MAXSERVICES???? 600
 MODEL?????????? SHM
 LDBAL?????????? N
 BLOCKTIME?????? 80
 NOTIFY????????? SIGNAL
 USIGNAL???????? SIGUSR1
 *MACHINES
 DEFAULT:
 ??????? APPDIR="/home/production/cpst/campost/bin"
 ??????? TUXCONFIG="/home/production/cpst/campost/config/tuxconfig"
 ??????? ULOGPFX="/home/production/cpst/campost/logs/ULOG"
 ??????? TUXDIR="/home/production/tuxedo"
 ??????? MAXWSCLIENTS=600
 #identify "@(#) config/ubb $Revision: 1.1$"
 *RESOURCES
 IPCKEY????????? 237456
 DOMAINID??????? camp_production
 MASTER????????? Africa
 MAXACCESSERS??? 2000
 MAXSERVERS????? 200
 MAXSERVICES???? 600
 MODEL?????????? SHM
 LDBAL?????????? N
 BLOCKTIME?????? 80
 NOTIFY????????? SIGNAL
 USIGNAL???????? SIGUSR1
 *MACHINES
 DEFAULT:
 ??????? APPDIR="/home/production/cpst/campost/bin"
 ??????? TUXCONFIG="/home/production/cpst/campost/config/tuxconfig"
 ??????? ULOGPFX="/home/production/cpst/campost/logs/ULOG"
 ??????? TUXDIR="/home/production/tuxedo"
 ??????? MAXWSCLIENTS=600
 #"Africa.site"? LMID="Africa"
 "campost"?????? LMID="Africa"
 *GROUPS
 "GROUP1"??????? LMID="Africa"?? GRPNO=1 OPENINFO=NONE
 "GROUP2"??????? LMID="Africa"?? GRPNO=2 OPENINFO=NONE
 *SERVERS
 DEFAULT:
 ??????? CLOPT="-A"
 #應用服務組
 dispApp SRVGRP=GROUP1 SRVID=1 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
 acpApp? SRVGRP=GROUP1 SRVID=11 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
 dlvApp? SRVGRP=GROUP1 SRVID=21 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
 broadcastApp??? SRVGRP=GROUP1 SRVID=31 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
 downloadApp???? SRVGRP=GROUP1 SRVID=41 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
 transferApp???? SRVGRP=GROUP1 SRVID=51 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
 emailApp??????? SRVGRP=GROUP1 SRVID=61 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
 #domain管理的服務組
 DMADM?? SRVGRP=GROUP2 SRVID=1
 GWADM?? SRVGRP=GROUP2 SRVID=2
 GWTDOMAIN SRVGRP=GROUP2 SRVID=3 REPLYQ=Y
 #WSL??? SRVGRP=GROUP2 SRVID=4 CLOPT="-A -- -n //132.10.10.11:9600 -T 20 -N 300 -m 50 -M 100 -x 2 -c 1024 -p 40000 -P 41000"
 WSL???? SRVGRP=GROUP2 SRVID=4 CLOPT="-A -- -n //132.10.10.17:9600 -T 20 -N 300 -m 50 -M 100 -x 2 -c 1024 -p 40000 -P 41000"
 *SERVICES
 ServiceDisp
 ServiceAcp
 ServiceDlv
 ServiceDownload
 ServiceBroadcast
 ServiceTransfer
 ServiceEmail
 production@campost:~/cpst/campost/config>
 說明:
 CLOPT:“--”符左邊是服務參數,“-A”是服務全部啟動,“--”符右邊是要傳給客戶端的參數,“-t on”是支持多線程;
 MIN:最少啟動服務數;
 MAX:最多啟動服務數;較好的方法是把MIN和MAX設置相等,把所有服務全啟動,因為現在服務器內存已不是系統瓶頸了;
 -p:允許設置MIN和MAX;
 LDBAL:是否啟動load balance功能;如果啟動了load balance功能,services可以設置負載因子和優先級參數;
 9、ULOG:User LOG file
 默認放在APPDIR下,可以在resource中加參數ULOGPFX參數指定其他目錄;
 出現錯誤,分析ULOG時,一般先分析第一個錯誤,因為后面很多錯誤都可能是第一個錯誤導致的;
 10、tmtrace:分析atmi系統調用的詳細信息
 export tmtrace=on之后在ULOG中查看詳細信息,在開發時使用,因為要寫大量的日志;
 ??????
 11、tmshutdown多次不能關掉時:
 kill -9
 rpcm
總結
以上是生活随笔為你收集整理的Tuxedo中间件开发和管理的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: PLSQL安装步骤
- 下一篇: [html] 精确获取页面元素位置的方
