TUXEDO服務(wù)端開發(fā)介紹_第1頁
TUXEDO服務(wù)端開發(fā)介紹_第2頁
TUXEDO服務(wù)端開發(fā)介紹_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、最新資料推薦TUXEDO服務(wù)端開發(fā)介紹中海集團資金結(jié)算管理系統(tǒng)采用了三層體系結(jié)構(gòu),具有良好的穩(wěn) 定性、安全性。系統(tǒng)數(shù)據(jù)集中管理,易于維護。柜面應(yīng)用程序采用 C/S結(jié)構(gòu),前臺界面采用Delphi開發(fā)工具,界面具有易于操作,方便 快速錄入等特點。交易中間件采用tuxedo,保證了前后臺數(shù)據(jù)的交互、 隊列管理、事務(wù)處理。業(yè)務(wù)邏輯采用C語言開發(fā)。這里,我向大家介紹一下TUXEDO服務(wù)器端開發(fā):一、服務(wù)的運行流程為了更好的了解服務(wù)端的所有任務(wù)以編寫服務(wù)端應(yīng)用,有必要 重新認識服務(wù)端在C/S模式中扮演的角色。首先,服務(wù)是系統(tǒng)資源的聯(lián)系點。例如,一個數(shù)據(jù)庫服務(wù)聯(lián)系 實際數(shù)據(jù)庫并對其進行查詢和修改。為有效進行

2、,應(yīng)建立一個數(shù)據(jù)庫 連接。其次,服務(wù)必須發(fā)布系統(tǒng)內(nèi)可以訪問的交易,保證客戶端可以 知道把請求發(fā)往何處。以上兩步結(jié)束后,服務(wù)進入一個循環(huán)一一接收請求、處理請求 并返回結(jié)果。接收請求包扌舌進入消息隊列,得到交易請求。處理請求 包括檢查請求數(shù)據(jù)緩沖,運行商業(yè)規(guī)則和邏輯,可能還包括訪問數(shù)據(jù) 庫和返回結(jié)果數(shù)據(jù)緩沖。當系統(tǒng)管理員需要關(guān)閉系統(tǒng),可以通過系統(tǒng)管理工具將關(guān)閉系 統(tǒng)的消息發(fā)給服務(wù)。服務(wù)完成所有交易,取消交易發(fā)布,關(guān)閉資源連 接然后結(jié)束。址新資料推薦二、返回控制接下來,我們說說返回控制。在一般的C程序中,函數(shù)通過調(diào)用returnO將控制返回,函數(shù)調(diào) 用堆棧清空,控制返回調(diào)用點。TUXEDO系統(tǒng)的交易

3、函數(shù)必須結(jié)束于將回應(yīng)返回給客戶端或前轉(zhuǎn) 到另一交易。函數(shù)tpreturnf)用來結(jié)束交易將回應(yīng)數(shù)據(jù)緩沖發(fā)給客戶 端。函數(shù)tpforward()W交易前轉(zhuǎn)給另一個交易,由其負責(zé)回應(yīng)原來的 客戶端。tpreturn()設(shè)計來代替常規(guī)的return(),結(jié)束絕大多數(shù)函數(shù)。它將回址新資料推薦應(yīng)數(shù)據(jù)緩沖返回請求的客戶端,控制權(quán)返回給服務(wù)程序的標準main() (由TUXEDO提供)。tpreturn()使用下列參數(shù):第一個值表示交易是否成功,有3種可能:TPSUCCESS 交易完全成功,如果是一個會話,TPEV_SVCSUCC被 生成TPFAIL交易失敗,tperrno將被設(shè)成TPESVCFAILo如果

4、是事務(wù)模式,事務(wù)被標志成abort-only,如果是會話,TPEV_SVCFAIL被生成。TPEXIT 與TPFAIL類似,但服務(wù)會中斷,如果服務(wù)設(shè)成可以重啟 動,則可以由TUXED0系統(tǒng)將其重啟動。第二個值是應(yīng)用定義返回碼,此處使交易可以發(fā)送一個整形代碼 到客戶端,給出交易處理結(jié)果的詳細信息。該值與/T系統(tǒng)無關(guān),通過 全程變量tpurcode送到客戶端程序。第三個值是回應(yīng)數(shù)據(jù)緩沖的的指針第四個值是回應(yīng)數(shù)據(jù)緩沖的長度(僅緩沖類型為CARRY時需要)第五個值是標志位,通常不用下圖是tpreturn()的示意圖。最新資料推薦tpreturn(TPSUCCESS, 0, tdata, 0, 0);三

5、、初始化和結(jié)束服務(wù)tpsvrinit()和tpsvrdone()分別用來啟動和關(guān)閉服務(wù)。如果應(yīng)用不提 供這兩個函數(shù),可以使用替代函數(shù)o tpsvrinitf)用tpopen()缺省打開RM 連接。tpsvrdone()用 tpclose()關(guān)閉 RM 連接。tpsrvinit()象標準C語言的mein () 一樣使用參數(shù)argc,argvo服務(wù) 的命令行參數(shù)可以傳入該函數(shù),被getopt()解析。該部分的用法參見 應(yīng)用配置部分。本函數(shù)出錯時返回-1,成功返回0。tpsvrdone()無參數(shù),無返回值。四、創(chuàng)建服務(wù)當C語言的交易程序編碼完后,需要連接正確的庫并編譯。使用 buildserver可

6、以使該過程容易一點。該命令引用了 C語言編譯器并按 正確的次序連接TUXEDO系統(tǒng)的庫,連接TUXEDO生成的main ()等。 buildserver還用-s參數(shù)產(chǎn)生合適的交易名/函數(shù)名映射表。要使用 buildserver ,必須先正確設(shè)定環(huán)境變量TUXDIR , PATH , LD_LIBRARY_PATHo命令語法如下:最新資料推薦buildserver -v -o executable -s service2,service3:func -f source/object -1 object/library file參數(shù)解釋如下:-o生成的可執(zhí)行文件名-f需要在連接TUXED0庫之前傳

7、給編譯器的文件名。如有多于一 個的文件名,名字應(yīng)用空格分隔并用引號引起。也可以使用多個-f參 數(shù)。-I需要在連接TUXED0庫之前傳給編譯器的文件名。語法同上。-V編譯過程顯示。-b指定SHM或MP模式。如無此項,兩種模式都包括;使用此 項可以使生成的可執(zhí)行文件小一點-r連接此處指出的RM庫。該RM的名字必須含在 $TUXDIR/udataobj/RM 文件中。五、規(guī)劃服務(wù)的考慮在TUXED0應(yīng)用中,必要時服務(wù)可以仿客戶端方式工作。例如: 一個服務(wù)可能需要其他服務(wù)提供的交易,而建立一個副本并不太合 理;當然,有時這樣做會高效些。這種特性使程序員在多機配置應(yīng)用 邏輯可以改善編碼和執(zhí)行效率。一般是

8、出于以下考慮,使用此種方式:最好不要使用收到的數(shù)據(jù)緩沖向其他服務(wù)請求,因為該緩沖可能 被改變引起錯誤服務(wù)中的交易不應(yīng)調(diào)用本服務(wù)中的交易,因為容易產(chǎn)生死鎖(僅址新資料推薦當設(shè)置TPNOREPLY時可以)一個MSSQ集中的服務(wù)需要返回時,應(yīng)有自己的返回隊列;否則 會與木集中其他服務(wù)沖突。A. 數(shù)據(jù)緩沖管理數(shù)據(jù)緩沖管理大部分內(nèi)容與客戶端相同與請求數(shù)據(jù)緩沖不同,傳給交易的數(shù)據(jù)緩沖可能己經(jīng)被 tpalloc(),tprealloc(),tpfree()函數(shù)處理過。因為傳給交易的請求數(shù)據(jù)緩沖己經(jīng)被tpallocf)分配,所以可以 tprealloc()o所有在服務(wù)中分配的數(shù)據(jù)緩沖,在程序結(jié)束時必須全部釋放

9、;唯 一例外是用在tpreturnf)中的返回數(shù)據(jù)緩沖。如有剩余數(shù)據(jù)緩沖沒有釋放,會在每次交易調(diào)用時都生成一些, 最終耗盡服務(wù)器內(nèi)存。這可以很容易通過監(jiān)視進程大小發(fā)現(xiàn),它會隨 時間增長而加大。B. 仿客戶端的方式下圖展示的流程控制表示一個服務(wù)仿客戶端方式工作。服務(wù)接收 客戶端請求,進一步向另一個交易進行請求。后者處理后返回前者, 前者繼續(xù)進行處理,準備回應(yīng)數(shù)據(jù)緩沖,發(fā)回客戶端。此結(jié)構(gòu)不能超過2級!最新資料推薦C. 轉(zhuǎn)發(fā)的方式下圖展示的流程控制表示交易請求從客戶端來到一個服務(wù),轉(zhuǎn)發(fā)到另一個服務(wù),然后返回客戶端。服務(wù)處理1服務(wù)處理2址新資料推薦D. 多個交易一個商業(yè)應(yīng)用處理可能會需要來自不同數(shù)據(jù)源

10、的相似信息或 功能。例如下圖,TUXED0有多種方式實現(xiàn):各交易功能分隔在獨立的可執(zhí)行服務(wù)中因為功能分布在不同的可執(zhí)行服務(wù)中,編譯如下:buildserver -f read70.c -o read70 -s READ70buildserver -f read80.c -o read80 -s READ80buildserver -f read90.c -o read90 -s READ90將不同功能組織在一個可執(zhí)行服務(wù)中,分隔成不同交易服務(wù)程序包含3個交易函數(shù),編譯如下:buildserver-f read.c-o read -s READ70 -s READ80 -s READ90合并各功

11、能成一個交易,使用別名調(diào)用使用TUXEDO的別名功能,使交易以不同名字發(fā)布,如:buildserver-f read.c-o read -s READ70,READ80,READ90:READREAD是真正的交易函數(shù),但服務(wù)可以接受對READ70, READ80和READ90的請求3個交易函數(shù)3個交易名1個可執(zhí)行文件3個交易函數(shù)3個交易名MAD1個吋執(zhí)行文件1個交易曲數(shù)3個交易名址新資料推薦六、動態(tài)發(fā)布當交易運行時,交易可以用tmadmin在啟動時發(fā)布,也可以通過 調(diào)用ATMI動態(tài)發(fā)布。交易例程可以通過調(diào)用服務(wù)發(fā)布或取消發(fā)布。tpadvertise()可以被一個服務(wù)調(diào)用,發(fā)布一個交易 tpunadvertisef)可以被一個服務(wù)調(diào)用,取消發(fā)布一個交易 tpadvertise()該函數(shù)允許服務(wù)為自己動態(tài)發(fā)布一個交易,參數(shù)如下:被發(fā)布的交易名交易請求處理函數(shù)地址返回值4表示失敗。如果交易己經(jīng)被同一函

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論