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] 精确获取页面元素位置的方