<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

    Tuxedo的配置管理簡要說明

    Tuxedo的配置管理簡要說明


    Tuxedo的配置管理簡要說明1
    一、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

    一、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資源

    #用tmunloadcf > generated.ubb 可以得出目前配置得UBB文件所有得參數值(沒有設置的有缺省值)
    #用tmloadcf –c或tmboot –c可以計算出當前UBB配置的Tuxedo啟動最少要占用的系統IPC資源。


    二、UBB文件配置說明

    UBB配置文件分成*RESOURCES,*GROUP,*SERVER,*SERVICE,*NETWORK等若干節。DEFAULT表示該節中所有對象共有的缺省屬性。

    *RESOURCES
    #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 ?
    #允許負載均衡

    SCANUNIT10
    #SCANUNIT 是BBL在所有服務請求中定期掃描以尋找超時的交易和被阻塞德調用和德間隔時間(秒)。這個參數指定BBL掃描間隔時間的基本單位, 它會影響在tpbegin中指定的交易超時時間和用BLOCKTIME指定的請求阻塞超時時間的精確程度。SANITYSCAN, BBLQUERY, DBBLWAIT, BLOCKTIME等參數都是SCANUNIT的倍數,而不是實際秒數。而作為時間單位SCANUNIT必須是5的倍數,并且滿足0< SCANUNIT<60。

    SANITYSCAN12
    #SANITYSCAN的值指定在每個MACHINE上BBL自動檢測所有進程的時間間隔,以SCANUNIT為單元。缺省值滿足(SCANUNIT*SANITYSCAN)約為120秒。

    DBBLWAIT 2
    #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秒。

    BLOCKTIME6
    #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

    #unicom2, unicom1為網絡主機名用hostname獲得。
    #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=unicom2GRPNO=1 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分鐘內沒有交易請求則關閉連接。

    *SERVICES
    #不要求將所有的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連接所用的設備文件。

    unicom2 ? ?
    NADDR="http://130.36.0.102:8899"
    NLSADDR="http://130.36.0.102:8891"
    BRIDGE="/dev/streams/xtiso/tcp"
    unicom1
    NADDR="http://130.36.0.101:8899"
    NLSADDR="http://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

    三、數據庫XA設置
    3.1 ORACLE XA
    1.在附件中提供了rm文件,另外建議運行oracle的demo文件獲得要連接的所有lib庫的名稱.然后將這些名稱全部寫在RM文件中.
    如: #Oracle 8i for NT
    Oracle_XA;xaosw;%ORACLE_HOME%\RDBMS\XA\ORAXA8.LIB %ORACLE_HOME%\PRECOMP\LIB\MSVC\ORASQL8.LIB %ORACLE_HOME%\PRECOMP\LIB\MSVC\ORASQX8.LIB %ORACLE_HOME%\OCI\LIB\MSVC\OCI.LIB %ORACLE_HOME%\OCI\LIB\MSVC\OCIW32.LIB
    #Oracle 8i for Unix
    Oracle_XA:xaosw:-L${ORACLE_HOME}/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中提供了解釋

    3.在oracle用sys用戶登錄sqlplus,
    a)運行${ORACLE_HOME}/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

    6.需在ubb文件中MACHINE節指定TLOGDEVICE,TLOGSIZE
    例: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_SERVER\lib\libxasrvlib.lib

    2.ubbconfig 文件中的 *GROUP節
    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.


    3.3 INFORMIX XA
    1. 運行esql -lib獲得要連接的所有lib庫的名稱.然后將這些名稱全部加到RM文件中INFORMIX-OnLine:infx_xa_switch:$ {INFORMIXDIR}/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%\.adm\tlisten.pw文件下,如果那里沒有,就讀TUXEDO的% TUXDIR%\udataobj\tlisten.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

    *GROUPS
    GROUP1 LMID=site1GRPNO=1OPENINFO=NONE
    GROUP2 LMID=site2GRPNO=2OPENINFO=NONE

    *SERVERS
    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

    *SERVICES

    *NETWORK
    site1NADDR="http://10.128.5.201:6044"
    ? ? ? ?NLSADDR="http://10.128.5.201:6045"

    site2NADDR="http://10.128.5.200:6044"
    NLSADDR="http://10.128.5.200:6045"
    # ?BRIDGE="/dev/tcp"

    4.3管理
    只能在master機上運行tmadmin進行管理。要獲得統計信息在tmadmin中應運行default –m命令。
    $tmadmin
    >default –m SITE1
    >psr
    >bbi

    當MASTER主機意外當機時,TUXEDO仍可以正常運行,可以在backup的節點上手工做MASTER的動態遷移,在當前的backup節點上 DBBL充當MASTER。
    $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不存在.


    五、用JOLT連接Tuxedo和Weblogic
    5.1在Tuxedo上安裝、配置JOLT Server
    1 – 安裝JOLT Server
    2 -- set your environment
    ?set TUXDIR=d:\bea\tuxedo
    set JOLTDIR=%TUXDIR%\udataobj\jolt
    ?set APPDIR=%TUXDIR%\samples\atmi\simpapp
    ?set PATH=%TUXDIR%\bin;%JOLTDIR%\bin;%APPDIR%;%PATH%
    ?set NLSPATH=%TUXDIR%\locale\C
    ?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:\Bea\tuxedo\udataobj\jolt\repository\jrepository"JREPSVRSRVGRP=GROUP1 SRVID=8 CLOPT="-A -- -P d:\Bea\tuxedo\udataobj\jolt\repository\jrepository"

    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%\lib\jolt.jar;%WL_HOME%\lib\joltweblogic.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

    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"

    4. Restart your Weblogic

    5.3 Example setup
    1.Run %WL_HOME%\config\example\setExampleEnv.cmd,
    2.compile the SimpAppServlet by:
    javac -d %EX_WEBAPP_CLASSES% SimpAppServlet.java
    3.Edit WL_HOME%\config\examples\applications\examplesWebApp\WEB-INF\web.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%\config\examples\applications\examplesWebApp
    內容包含調用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%\config\example, start the examples domain,
    6.Access http://localhost:7001/examplesWebApp/jolt.html


    六、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
    ? 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]?


    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. 用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,執行操作即可。

    七、系統核心參數參考
    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

    ·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

    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.

    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.


    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;


    -- 作者: whiteclude
    -- 發布時間: 2002/07/27 05:53pm

    TUXEDO與ORACLE數據庫的互連

    (來源:http://www.ccw.com.cn)

    前言
    在 銀行、電信、金融等行業的大型計算機應用系統中,中間件的使用日益普及,中間件已與操作系統、數據庫并列為三大基礎軟件。BEA Tuxedo作為最優秀的中間件產品,在我國的很多行業中廣泛使用,本文通過一個簡單的例子介紹如何在TUXEDO中訪問ORACLE數據庫。
    在 兩層的C/S結構中,客戶端直接訪問數據庫,當采用TUXEDO中間件后,形成三層結構。這時,客戶端不直接訪問數據庫,而是改為調用中間件TUXEDO 服務端上的服務,由TUXEDO服務端訪問數據庫,并把結果返回給客戶端。TUXEDO服務端可以和ORACLE在同一臺服務器上,也可以在不同的機器 上,如果在不同的機器上,在TUXEDO的服務端所在的機器要安裝一個ORACLE的客戶端。
    TUXEDO服務端與ORACLE數據庫連接有兩種方式:
    1、不通過XA接口直接互連。適用于整個系統只有一個數據庫的情況。
    2、通過XA接口互連,對整個系統有一個數據庫或多個數據庫都適用,建議采用,本文介紹這種互連的配置方法。
    系統說明
    TUXEDO版本:7.1 安裝目錄 d:\tuxedo71
    ORACLE版本:8.1.5 安裝目錄 d:\ora81
    操作系統: win2000
    配置的步驟
    一、ORACLE的的配置
    1.用internal用戶(缺省的口令是oracle)進入SQLPLUS
    C:\>sqlplus internal/oracle
    2.運行ORACLE的安裝路徑下的/rdbms/admin/xaview.sql
    SQL> @d:\ora81\rdbms\admin\xaview.sql
    3.授權
    SQL>grant select on v$xatrans$ to public with grant option;
    SQL>grant select on v$pending_xatrans$ to public with grant option;
    4. 用system用戶(缺省的口令是manager)連接并授權
    SQL>connect system/manager
    SQL>grant select any table to public;
    二、TUXEDO的配置
    1.修改TUXEDO安裝路徑的udataobj目錄下的RM文件,把以Oracle_XA:xaosw:開頭的一行用#注釋掉,并加入一行:
    Oracle_XA;xaosw;d:\ora81\rdbms\xa\oraxa8.lib d:\ora81\precomp\lib\msvc\orasql8.lib
    如果是在UNIX環境下,則為:
    Oracle_XA:xaosw:-L${ORACLE_HOME}/lib -lclntsh
    2. 在TUXEDO用戶下創建TMS文件:TMS_ORA8i,TUXEDO通過TMS_ORA8i與ORACLE數據庫采用XA協議進行通訊
    buildtms -o d:\tuxedo71\bin\TMS_ORA8i -r Oracle_XA

    注意:如果TUXEDO 服務端與ORACLE數據庫不在同一臺服務器上,可能會提示找不到 庫文件oraxa8.lib和orasql8.lib,可到ORACLE數據庫的服務端相應目錄下把這兩個文件拷到當前機器ORACLE的客戶端下的對應目錄下。
    3. 配置 UBBCONFIG
    (1)在*MACHINES節中增加:
    TLOGDEVICE = "/home/oracle/temp/simpdb/TLOG"
    TLOGNAME=TLOG
    TLOGSIZE=200
    (2)改*GROUPS節的配置為:(scott/tiger為本數據庫所采用的用戶及口令,可根據需要更改)
    *GROUPS
    GROUP1 LMID=simple GRPNO=1
    OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=600+MaxCur=5+LogDir=."
    TMSNAME="TMS_ORA8i" TMSCOUNT=2
    修改后的配置文件ubb內容如下,用tmloadcf -y ubb重新生成tuxconfig
    IPCKEY 123456
    DOMAINID simpapp
    MASTER simple
    MAXACCESSERS 100
    MAXSERVERS 50
    MAXSERVICES 100
    MODEL SHM
    LDBAL N

    *MACHINES
    server LMID=simple
    APPDIR="d:\test"
    TUXCONFIG="d:\test\tuxconfig"
    TUXDIR="d:\tux71"
    TLOGDEVICE = "d:\test\TLOG"
    TLOGNAME=TLOG
    TLOGSIZE=100
    *GROUPS
    GROUP1 LMID=simple GRPNO=1
    OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=600+MaxCur=5+LogDir=."
    TMSNAME="TMS_ORA8i" TMSCOUNT=2
    *SERVERS
    DEFAULT:
    CLOPT="-A"
    test SRVGRP=GROUP1 SRVID=1
    *SERVICES

    4.重命名下列文件,因為下列文件名與ORACLE帶的文件名有沖突,所以要改名。
    (1)TUXEDO安裝路徑include目錄下的下面文件
    把sqlca.h 改名為 sqlca.h.bbb
    把sqlcode.h 改名為 sqlcode.h.bbb
    把sqlda.h 改名為 sqlda.h.bbb
    (2)重命名TUXEDO安裝路徑lib目錄下的下面文件
    把libsql.lib 改名為 libsql.lib.bbb
    5.用TMADMIN創建TLOG文件,TUXEDO用一個文件TLOG記錄對數據庫操作的日志。用于協調分布式數據庫的提交與回滾。
    D:\>tmadmin
    >crdl -b 500 -z d:\test\TLOG
    >crlog -m simple
    >q

    三、服務端的程序:test.pc
    功能:根據客戶端傳的EMPNO到表EMP中取ENAME的值,并把它返回給客戶端
    #include <stdio.h>
    #include <atmi.h>
    #include <userlog.h>

    EXEC SQL INCLUDE sqlca;

    EXEC SQL BEGIN DECLARE SECTION;
    long al_empno=0;
    char ac_ename[11]="";

    EXEC SQL VAR ac_ename IS STRING(11); ?
    EXEC SQL END DECLARE SECTION;


    TEST(TPSVCINFO *rqst)
    {

    /*接收客戶端來的數據*/
    al_empno = (FBFR32 *)rqst->data;

    EXEC SQL select ename into :ac_ename from EMP where empno=:al_empno;
    if(sqlca.sqlcode!=0)
    { ?
    userlog("select from EMP failure,sqlcode=%ld, sqlerr=%s\n",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
    strcpy(rqst->data,sqlca.sqlerrm.sqlerrmc);
    tpreturn( TPFAIL, 0, rqst->data, 0, 0 );
    }
    /*把取出的結果返回給客戶端*/
    strcpy(rqst->data,ac_ename);
    tpreturn( TPSUCCESS, 0, rqst->data, 0, 0 );
    }
    四、編寫客戶端程序: testcli.c
    功能:調用TUXEDO服務端的服務TEST,取EMPNO=1000所對應的ENAME的值,并顯示出來
    #include <stdio.h>
    #include "atmi.h" ?

    main(argc, argv)
    {
    long reqlen=1024;
    char *reqbuf;

    /* 與TUXEDO服務端建立連接 */
    if (tpinit((TPINIT *) NULL) == -1)
    {
    (void) fprintf(stderr, "Tpinit failed\n");
    exit(1);
    }
    /* 分配發送緩沖區*/
    reqbuf = (char *)tpalloc("STRING",NULL,reqlen);
    if ( reqbuf == (char *)NULL)
    {
    printf("tpalloc failed\n");
    tpterm();
    }
    strcpy(reqbuf,"1000");
    /*調用TUXEDO的服務TEST*/
    if (tpcall("TEST", (char *)reqbuf, 0L, (char **)&reqbuf, (long *)&reqlen, 0< 0 )
    {
    printf("tpcall failed,tperrno=%ld,tperrtext=%s\n",tperrno,tpstrerror(tperrno));
    tpfree(reqbuf);
    tpterm();
    exit(1);
    }
    printf("name=%s\n",reqbuf);
    tpfree(reqbuf);
    tpterm();
    return(0);
    }
    五、編譯服務端程序
    1.用ORACLE的PROC把test.pc 文件預編譯成test.c文件
    d:\test> proc test.pc include=%TUXDIR%/include
    2.用buildserver把test.c編譯成可執行文件,注意-r 后帶的Oracle_XA 與RM文件中的一致。
    d:\test> buildserver -o simpserv -f simpserver.c -r Oracle_XA -s TEST
    六、編譯客戶端程序
    d:\test> buildclient -o testcli -f testcli.c
    七、用 tmboot –y 啟動TUXEDO
    應 能看到所有的SERVER都啟動成功。這時,我們的服務端程序test 會自動與ORACLE數據庫建立連接,并一直保持這個連接,直到TUXEDO系統或ORACLE數據庫關閉。所以在我們的程序test.pc中看不到與數 據庫連接的語句,因為現在與數據庫的連接由TUXEDO自動管理。如果TMS_ORA8i啟動失敗會在當前目錄生成一個*.trc文件,記錄失敗的原因, 同時TUXEDO的ULOG文件中也會有一些錯誤信息。可參考這些錯誤信息進行錯誤分析。
    d:\test> tmboot -y
    exec TMS_ORA8i-A :
    process id=1072 ... Started.
    exec TMS_ORA8i-A :
    process id=528 ... Started.
    exec test -A :
    process id=876 ... Started.
    八、運行客戶端程序
    運行后應能看到服務端返回的結果。
    d:\test> testcli
    name=bill
    到此,整個配置過程就大功告成了。ORACLE的其他版本的配置及在其他操作系統上的配置基本與本文所述差不多,差別主要在RM文件中所連的庫文件可能會不樣。

    posted on 2006-09-04 23:23 Vincent.Chen 閱讀(2444) 評論(0)  編輯  收藏 所屬分類: BEA

    主站蜘蛛池模板: 亚洲免费在线观看| 国产区卡一卡二卡三乱码免费| 精品国产亚洲一区二区在线观看| 亚洲hairy多毛pics大全| 在线播放免费人成视频在线观看| 亚洲香蕉久久一区二区三区四区| 99国产精品永久免费视频| 亚洲国产精品yw在线观看| 18国产精品白浆在线观看免费 | 精品国产污污免费网站入口| www.亚洲色图.com| h视频在线观看免费| 亚洲一区二区三区在线观看精品中文 | 久久久久亚洲精品美女| 久久久免费精品re6| 亚洲制服丝袜精品久久| 成人免费看黄20分钟| 精品久久久久久亚洲中文字幕| 免费A级毛片无码A∨男男| www一区二区www免费| 国产成人精品日本亚洲| 国产成人免费在线| 精品亚洲456在线播放| 四虎永久免费影院| 国产一级淫片a免费播放口| 亚洲欧洲国产视频| 国产男女性潮高清免费网站| 亚洲一级片免费看| 亚洲成a人不卡在线观看| 青青青国产免费一夜七次郎| 一级毛片成人免费看a| 亚洲国产第一页www| 午夜免费福利影院| 久久久久久免费一区二区三区| 亚洲乱码一二三四五六区| 四虎永久在线精品视频免费观看| 中国一级特黄的片子免费| 亚洲色图激情文学| 久久亚洲国产中v天仙www| 99精品全国免费观看视频| 国产三级在线免费观看|