BEA Tuxedo中间件应用初探
生活随笔
收集整理的這篇文章主要介紹了
BEA Tuxedo中间件应用初探
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
BEA Tuxedo中間件應用初探
轉載?2008年04月10日 19:18:00 隨著中間件在大型應用系統中的日益普及,目前各類中間件充斥著市場,它們在銀行、電信、金融等大規模關鍵事務領域中的整合各種異構平臺、保證交易完整性等方面表現出了超強的能力。BEA Tuxedo就是其中一款著名的交易中間件,本文以一個經典的例子(大寫字母轉換),主要介紹Tuxedo的工作原理及開發方法,以及Tuxedo應用程序的管理方法。?工作原理?
Tuxedo是BEA公司的交易中間件產品,1984年由貝爾實驗室開發成功,1992年易主Novell公司,1996年由BEA公司收購,經過十多年的不斷更新和完善,Tuxedo已經發展成為交易中間件領域事實上的標準。?
Tuxedo可以有效地整合企業異構C/S系統,實現大規模的關鍵業務處理和分布式事務管理,從而為企業提供一個可靠的、高性能的、易維護的三層分布式計算機環境。圖1展示了一個基本Tuxedo系統的組成和工作原理。?
圖一
① Client向System/T發出查詢請求,以找到Server消息隊列的地址;?
② Client根據找到的入口地址將請求發送到Server的消息隊列中;?
③ Server處理請求,并將結果返回給Client的消息隊列。?
System/T是Tuxedo系統的核心,它實現了Tuxedo的所有功能和特征,如C/S數據流管理、服務請求的負載均衡、全局事務管理以保證交易的完整性、同步/異步服務請求、兩階段提交以確保消息的發送等。System/T提供了一個類似公告欄的服務,用以發布C/S計算機環境中所有服務器、服務和客戶機的信息,供其它分布式計算的參與者使用。下面筆者將通過一個大寫字母轉換的簡單例子,講述Tuxedo應用程序工作的基本原理和開發方法。?
應用介紹?
Simpapp是Tuxedo系統自帶的一個例子,它由服務器和客戶端程序兩部分組成。服務器simpserv實現了一個TOUPPER服務,它從客戶程序接收一個字符串,將它轉換成大寫后,傳回客戶端。整個工作流程可以用圖2表示。?
圖二
客戶機首先收集要轉換成大寫的字符串,然后連接到System/T并將字符串放入緩沖區,接著調用服務器上的TOUPPER服務,最后從服務器響應緩沖區中取出數據并退出System/T。?
| 1.Simpapp的服務程序 |
下面是服務程序simpserv.c的源代碼:?
| #include <stdio.h> #include "atmi.h"? / Tuxedo?ATMI函數庫的頭文件 / TOUPPER(TPSVCINFO rqst){ int i; for(i=0;i<rqst->len-1;i++) rqst->data[i]=toupper(rqst->data[i]); / 將rqst->data緩沖區內容轉換成大寫 / tpreturn(TPSUCCESS,0,rqst->data,0L,0); / 將rqst->data作為響應緩沖區返回 / } |
可能你已經注意到了,該程序沒有提供main方法。事實上,Tuxedo不要求程序員編寫main方法,以便讓他們把精力集中在業務邏輯的編寫上,在編譯時,Tuxedo系統會為它自動創建。?
TPSVCINFO是Tuxedo記錄服務調用信息的一個結構體,data域是保存請求數據的緩沖區,len域記錄了data域的長度。?
| 2.Simpapp的客戶程序 |
客戶程序Simpcl.c是服務調用的發起者,它從命令行接收參數,通過tpinit()調用連接到System/T,通過tpalloc()調用分配一個字符串類型的緩沖區,通過tpcall()調用請求TOUPPER服務,最后通過tpterm()調用退出System/T,下面是它的源代碼:?
| #include <stdio.h> #include "atmi.h" int main(int argc, char argv[]){ char buf; long len; if(argc != 2) { (void) fprintf(stderr, "Usage: simpcl string/n"); exit(1); } if (tpinit((TPINIT ) NULL) == -1) { (void) fprintf(stderr, "Tpinit failed/n"); exit(1); } len = strlen(argv[1]); if((buf = (char ) tpalloc("STRING", NULL, len+1)) == NULL) { (void) fprintf(stderr,"Error allocating send buffer/n"); tpterm(); exit(1); } (void) strcpy(buf, argv[1]); if(tpcall("TOUPPER", buf, 0, &&buf, &&len, 0)==-1){ (void) fprintf(stderr, "Can't send request to service TOUPPER/n"); tpfree(buf); tpterm(); exit(3); } (void) fprintf(stdout, "Returned string is: %s/n", rcvbuf); tpfree(buf); tpterm(); return(0); } |
| 3.Simpapp的配置文件 |
除了客戶和服務程序以外,Tuxedo還需要一個配置文件來對應用進行描述。配置文件由多個段組成,每個段定義由一個星號開始。下面是NT平臺下simpapp的配置文件ubbsimple的內容,其中帶下劃線的部分需要根據機器的資源配置作適當修改。?
| RESOURCES IPCKEY 123456 MASTER NODE1 MODEL SHM MACHINES JQ LMID=NODE1 TUXDIR="G:/ProgramFiles/BEA Systems/Tuxedo" APPDIR="G:/simpapp" TUXCONFIG="G:/simpapp/tuxconfig" GROUPS GROUP1 LMID=NODE1 GRPNO=1 SERVERS simpserv SRVGRP=GROUP1 SRVID=1 CLOPT="-A" SERVICES TOUPPER |
TUXDIR指的是Tuxedo的安裝路徑,APPDIR指的是simpapp應用程序所在的目錄,TUXCONFIG指的是simpapp的二進制配置文件,一般為%APPDIR%/tuxconfig。?
| 4.Simpapp的編譯和運行 |
由于Buildclient和Buildserver沒有編譯能力,要編譯Tuxedo應用程序時,還必須安裝第三方的C語言編譯器,在NT平臺下推薦使用VC。步驟如下:?
⑴設置環境變量?
| SET PATH=%PATH%; G:/Program Files/BEA Systems/Tuxedo/Bin SET TUXDIR=G:/Program Files/BEA Systems/Tuxedo TUXCONFIG=G:/simpapp/tuxconfig |
⑵生成二進制配置文件?
| tmloadcf -y ubbsimple |
⑶編譯客戶程序?
| buildclient -o simpcl.exe -f simpcl.c |
⑷編譯服務程序?
| buildserver -o simpserv.exe -f simpserv.c -s TOUPPER |
⑸啟動服務程序?
| tmboot -y |
⑹運行客戶程序?
| simpcl "hello, JQ" |
⑺關閉應用程序?
| tmshutdown -y |
| 5.管理Simpapp |
通過tmadmin命令可以方便地管理服務程序。
總結
以上是生活随笔為你收集整理的BEA Tuxedo中间件应用初探的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 花了一天精选了20多篇好文,只为与你分享
- 下一篇: react学习(15)-getTime