tuxedo培訓(xùn)教程_第1頁(yè)
tuxedo培訓(xùn)教程_第2頁(yè)
tuxedo培訓(xùn)教程_第3頁(yè)
tuxedo培訓(xùn)教程_第4頁(yè)
tuxedo培訓(xùn)教程_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、BEATUXEDO簡(jiǎn)易培訓(xùn)教程編寫(xiě)、整理:文棧良2003-1-21第一章認(rèn)識(shí)tuxedo1.1 TUXEDOM什么?BEATUXEDO在企業(yè)、Internet這樣的分布式運(yùn)算環(huán)境中開(kāi)發(fā)和管理三層結(jié)構(gòu)的客戶(hù)/服務(wù)器型關(guān)鍵任務(wù)應(yīng)用系統(tǒng)的強(qiáng)有力工具。它具備分布式事務(wù)處理和應(yīng)用通信功能,并提供完善的各種服務(wù)來(lái)建立、運(yùn)行和管理關(guān)鍵任務(wù)應(yīng)用系統(tǒng)。開(kāi)發(fā)人員能夠用它建立跨多個(gè)硬件平臺(tái)、數(shù)據(jù)庫(kù)和操作系統(tǒng)的可互操作的應(yīng)用系統(tǒng)。BEATUXED是企業(yè)、Internet分布式應(yīng)用中的基礎(chǔ)主干平臺(tái)。它提供了一個(gè)開(kāi)放的環(huán)境,支持各種各樣的客戶(hù)、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、遺留系統(tǒng)和通訊方式。BEATUXEDO使分布式關(guān)鍵任務(wù)應(yīng)用系統(tǒng)具

2、有大型主機(jī)的性能,從而使這些應(yīng)用系統(tǒng)能夠應(yīng)付數(shù)以千計(jì)的用戶(hù),大交易吞吐量,多并行數(shù)據(jù)庫(kù)存取和大量數(shù)據(jù),同時(shí)保持較短的反應(yīng)時(shí)間,較高數(shù)據(jù)完整性和安全性,并且確保全年365天,每周7天,每天24小時(shí)的系統(tǒng)可用性。同時(shí),BEATUXEDO還能讓開(kāi)發(fā)人員和系統(tǒng)管理人員享用分布式運(yùn)算環(huán)境提供的好處,如技術(shù)成本的低增長(zhǎng)率,靈活性提高,快速應(yīng)用開(kāi)發(fā)和安裝以及業(yè)務(wù)信息存取得以改善。1.2 BEATUXEDO的組件軟件模型關(guān)鍵業(yè)務(wù)應(yīng)用通常是面向事務(wù)的,要求具有準(zhǔn)確的數(shù)據(jù)完整性、較好的性能和管理需求。這些需求要求對(duì)應(yīng)用的開(kāi)發(fā)、調(diào)度和操作給出一個(gè)結(jié)構(gòu)化的方案。由像BEATUXEDO樣的中間件支持的組件軟件模型為分布

3、式環(huán)境處理關(guān)鍵性業(yè)務(wù)應(yīng)用提供了一個(gè)結(jié)構(gòu)化的解決方案。BEATUXED口基于組件的應(yīng)用設(shè)計(jì)從異構(gòu)的計(jì)算資源中創(chuàng)建了一個(gè)虛擬主機(jī):在分布式應(yīng)用系統(tǒng)級(jí)提供可管理的相互關(guān)聯(lián)的資源。許多組織在進(jìn)行了一段時(shí)間的分布式應(yīng)用工作后,現(xiàn)在已經(jīng)認(rèn)識(shí)到組件軟件模型是他們的必然選擇。分布式應(yīng)用的直接動(dòng)力是主機(jī)應(yīng)用和集中式中規(guī)模的應(yīng)用系統(tǒng)基礎(chǔ)上又逐漸配備有大量的臺(tái)式系統(tǒng)和服務(wù)器系統(tǒng),這些分布式系統(tǒng)在標(biāo)準(zhǔn)網(wǎng)絡(luò)傳送協(xié)議的支持下,呈松散耦合的態(tài)勢(shì),事實(shí)上它們構(gòu)成了網(wǎng)絡(luò)計(jì)算資源的基礎(chǔ)。在開(kāi)始的時(shí)候,分布式系統(tǒng)主要服務(wù)于把集中式系統(tǒng)的前臺(tái)應(yīng)用遷移到網(wǎng)絡(luò)環(huán)境主要用臺(tái)式處理器和文件服務(wù)器實(shí)現(xiàn)文檔處理和電子郵件通訊應(yīng)用系統(tǒng)。接著,兩層

4、的客戶(hù)/服務(wù)器數(shù)據(jù)庫(kù)應(yīng)用在部門(mén)級(jí)被采用,這類(lèi)應(yīng)用把交互式文件共享進(jìn)化到并發(fā)數(shù)據(jù)元素訪(fǎng)問(wèn),在數(shù)據(jù)級(jí)支持更細(xì)粒度的管理。雖然這些客戶(hù)/服務(wù)器應(yīng)用具體化了真正分布式應(yīng)用處理的概念,它們?nèi)粤粲袨槟骋荒繕?biāo)定制的特性,規(guī)模和管理能力都有限。更重要的,這些應(yīng)用只停留在較細(xì)粒度的數(shù)據(jù)訪(fǎng)問(wèn)上,使得整個(gè)應(yīng)用系統(tǒng)宛如磐石,不能有效地利用網(wǎng)絡(luò)資源。面對(duì)更大規(guī)模的關(guān)鍵業(yè)務(wù)應(yīng)用,如要進(jìn)行有效的分布式處理,就要求從客戶(hù)/數(shù)據(jù)庫(kù)方案轉(zhuǎn)變到三層客戶(hù)/應(yīng)用系統(tǒng)/數(shù)據(jù)服務(wù)器結(jié)構(gòu)。以后者為核心的組件軟件模型是客戶(hù)/服務(wù)器計(jì)算的拓展,它支持應(yīng)用分區(qū),能有效地開(kāi)發(fā)和調(diào)度應(yīng)用業(yè)務(wù)邏輯,管理分布式應(yīng)用的可靠執(zhí)行。BEATUXEDOI用三層結(jié)

5、構(gòu)的組彳牛軟件模型。圖1表示BEATUXEDO的組件軟件模型的概要。該結(jié)構(gòu)分為三層:圖1BEATUXEDO的組件軟件模型概要1.3 TUXEDO的特點(diǎn)BEATUXEDO)三層結(jié)構(gòu)組件軟件模型將用戶(hù)界面的表示部分和業(yè)務(wù)邏輯部分按客戶(hù)組件服務(wù)器組件分開(kāi),使開(kāi)發(fā)人員能夠按組件的思想專(zhuān)注入于業(yè)務(wù)邏輯的開(kāi)發(fā),用戶(hù)界面部分可用流行的前端開(kāi)發(fā)工具來(lái)快速完成。而客戶(hù)和服務(wù)器之間、服務(wù)器和服務(wù)器之間的通訊,異構(gòu)平臺(tái)之間的數(shù)據(jù)變換,以及服務(wù)器和數(shù)據(jù)庫(kù)之間的集成和事務(wù)控制都由BEATUXEDO來(lái)完成。當(dāng)數(shù)據(jù)庫(kù)或服務(wù)器端的業(yè)務(wù)邏輯改變時(shí),客戶(hù)端則不一定要改變;反之當(dāng)客戶(hù)改變或增加新的客戶(hù)界面時(shí),服務(wù)器端則不一定要改變

6、,大大增加了應(yīng)用系統(tǒng)的各部分的可復(fù)用性。BEATUXEDO!供的簡(jiǎn)潔API使用戶(hù)程序能夠物理地點(diǎn)透明地在客戶(hù)和服務(wù)器之間、服務(wù)器和服務(wù)器之間進(jìn)行各種方式的通訊,極大地減輕開(kāi)發(fā)人員的負(fù)擔(dān)。BEATUXEDO供的通訊方式有同步RPM用,異步RPM用,對(duì)話(huà)通信方式,廣播通訊方式,異步存儲(chǔ)轉(zhuǎn)發(fā)隊(duì)列通訊,事件通訊方式等。在BEATUXEDO的三層結(jié)構(gòu)組件軟件模型下開(kāi)發(fā)的應(yīng)用程序以服務(wù)器組件和客戶(hù)組件為安裝、升級(jí)的單位,當(dāng)一個(gè)組件需要更新時(shí),管理人員甚至能夠在運(yùn)行系統(tǒng)不停機(jī)的情況下完成系統(tǒng)的升級(jí),這在客戶(hù)端為數(shù)以千計(jì)的關(guān)鍵任務(wù)應(yīng)用中尤為重要。BEATUXED保統(tǒng)提供從一個(gè)中心點(diǎn)對(duì)整個(gè)分布式系統(tǒng)進(jìn)行全局監(jiān)控

7、及管理的能力,管理員根據(jù)一個(gè)整體系統(tǒng)視圖(而不僅是單個(gè)節(jié)點(diǎn)或單元)提供的信息,可以作出決定和采取動(dòng)作。BEATUXEDOS但提供了一些管理命令,而且提供了一個(gè)集成的圖形界面管理工具,集中地監(jiān)視和管理應(yīng)用系統(tǒng)的運(yùn)行,并且可動(dòng)態(tài)地修改系統(tǒng)配置。通過(guò)Java的applets,還可利用Internet的瀏覽器比如Netscape或Microsoft的Explorer來(lái)運(yùn)行該圖形界面管理工具。止匕外,BEATUXEDOI供了描述系統(tǒng)中各對(duì)象的管理信息數(shù)據(jù)庫(kù)(MIBS)和存取管理這些管理信息數(shù)據(jù)庫(kù)的管理API,用戶(hù)可利用這些管理API,編寫(xiě)自己特有的管理工具。一方面,BEATUXED能夠使多個(gè)客戶(hù)連接到一

8、個(gè)服務(wù)器進(jìn)程,由這個(gè)服務(wù)器進(jìn)程存取數(shù)據(jù)庫(kù),為客戶(hù)的請(qǐng)求服務(wù)。這樣,數(shù)據(jù)庫(kù)為處理連接所需的資源大大減少。另一方面,客戶(hù)和服務(wù)器之間,服務(wù)器和服務(wù)器之間的通訊中,網(wǎng)絡(luò)上流動(dòng)的只有相對(duì)較少的客戶(hù)或服務(wù)器的請(qǐng)求和服務(wù)器處理的結(jié)果,而不再是兩層結(jié)構(gòu)中客戶(hù)和DBMM間的大量SQL請(qǐng)求和應(yīng)答。止匕外,利用BEATUXEDO有的一些機(jī)制也能極大提高應(yīng)用系統(tǒng)的性能。比如利用異步RPC機(jī)制實(shí)現(xiàn)扇出并行,利用轉(zhuǎn)發(fā)機(jī)制實(shí)現(xiàn)流水線(xiàn)并行,利用多服務(wù)器單隊(duì)列實(shí)現(xiàn)多處理并行等。所有這些因素使BEATUXED的應(yīng)用系統(tǒng)具有極高的性能。世界上大部分硬件服務(wù)器的TPC性能指標(biāo)都是在BEATUXEDO:完成的。BEATUXEDO時(shí)知

9、道它控制下的資源的情況,并利用這些信息為應(yīng)用提供最大可用性。分布式系統(tǒng)使資源故障的影響復(fù)雜化。在一個(gè)分布式系統(tǒng)中,多個(gè)節(jié)點(diǎn)代表更多的潛在故障點(diǎn)的可能,但也可以代表在資源恢復(fù)開(kāi)始時(shí)在其他節(jié)點(diǎn)上重新分配工作的更大潛力。BEATUXEDO這種分布式系統(tǒng)故障恢復(fù)上具有優(yōu)勢(shì)。TUXEDO重啟應(yīng)用進(jìn)程,并且能在硬件故障情況下在其它結(jié)點(diǎn)上重新運(yùn)行進(jìn)程。BEATUXEDO計(jì)了數(shù)據(jù)資源的絕對(duì)完整性。目前出現(xiàn)的客戶(hù)/服務(wù)器應(yīng)用中,重要數(shù)據(jù)資源很可能是廣泛的,而且受異構(gòu)系統(tǒng)的控制。應(yīng)用可以設(shè)計(jì)成用嚴(yán)格的保證數(shù)據(jù)一致性的兩階段提交,或者用更多的緩沖存儲(chǔ)和轉(zhuǎn)發(fā)技術(shù)來(lái)管理異構(gòu)的(或者同構(gòu)的)數(shù)據(jù)庫(kù)的更新。在各種情況下,B

10、EATUXEDO夠確保異構(gòu)的(或者同構(gòu)的)數(shù)據(jù)庫(kù)以及它資源管理器之間的完整性。BEATUXEDO通過(guò)結(jié)構(gòu)化用戶(hù)界面支持應(yīng)用服務(wù)的驗(yàn)證、授權(quán)和存取控制,允許用戶(hù)加入自己的驗(yàn)證服務(wù)模塊。BEATUXEDO還提供信息加密服務(wù),允許對(duì)網(wǎng)絡(luò)上傳輸?shù)男畔碦SA的RC4算法加密。目前美國(guó)本土內(nèi)可按128位,本土外可按40位加密。BEATUXEDO一個(gè)非常開(kāi)放的平臺(tái),支持三十多種服務(wù)器平臺(tái),包括大多數(shù)的UNIX服務(wù)器,WindowsNT服務(wù)器,IBM的S/370,S/390,力口上AS/400和Tandem司的NonStop系統(tǒng)。它的客戶(hù)支持幾乎所有的工作站,包括UNIX,MS-DOS,Windows3.1

11、/95,WindowsNT,OS/2,Macintosh等。BEATUXEDO持X/OpenS織的分布式事務(wù)處理模型DTP事務(wù)定界標(biāo)準(zhǔn)TX,應(yīng)用程序事務(wù)處理接口標(biāo)準(zhǔn)XATMI以及和資源管理器(像數(shù)據(jù)庫(kù)系統(tǒng))的接口標(biāo)準(zhǔn)XA并且還支持事務(wù)處理器之間的互操作標(biāo)準(zhǔn)OSI-TP。BEATUXEDO客戶(hù)端通過(guò)DLL可以和VisualC+、VisualBasic、PowerBuilder、SQLWindowsDelphi、Develop/2000以及其他4GLF口CASE工具互連。止匕外,BEATUXEDO得到其他第三方開(kāi)發(fā)管理工具廠(chǎng)商的支持。簡(jiǎn)單地說(shuō),軟件可伸縮性就是可以很容易地增加被支持的用戶(hù)數(shù)和應(yīng)用的

12、全局吞吐量。一個(gè)可伸縮的軟件系統(tǒng)是利用網(wǎng)絡(luò)分布系統(tǒng)優(yōu)勢(shì)的關(guān)鍵。BEATUXE這樣一個(gè)系統(tǒng),它可以利用在一個(gè)網(wǎng)絡(luò)上所能找到的所有的異構(gòu)的資源以獲得最大的效益。BEATUXEDO供這一點(diǎn),而且提供許多可伸縮性選項(xiàng)。垂直方向的可伸縮性代表的含義與通常相同,即將系統(tǒng)轉(zhuǎn)變(升級(jí))為一個(gè)更大,更有力的相同或不同結(jié)構(gòu)的平臺(tái)。水平方向的可伸縮性多是在分布式系統(tǒng)結(jié)構(gòu)中,它以增加適當(dāng)規(guī)模的附加系統(tǒng)來(lái)增強(qiáng)網(wǎng)絡(luò)應(yīng)用。所增加的附加系統(tǒng)與原有系統(tǒng)可能是同構(gòu)的,也可是異構(gòu)的(那就是不同的處理機(jī)或操作系統(tǒng))。BEATUXEDO持二維的可伸縮性。二維可伸縮性可在結(jié)構(gòu)上的任意位置添加異質(zhì)資源,而不改變已存在的應(yīng)用的結(jié)構(gòu)。允許對(duì)一

13、個(gè)復(fù)雜的混合結(jié)構(gòu)的支持,為聯(lián)機(jī)網(wǎng)絡(luò)系統(tǒng)提供了廣泛的規(guī)模選擇范圍。任何與數(shù)據(jù)表示有關(guān)的(如不同的處理器表示)可以由BEATUXED透明地解決。BEATUXEDOS可根據(jù)系統(tǒng)負(fù)荷的變化動(dòng)態(tài)地增加或減少應(yīng)用服務(wù)器的個(gè)數(shù)。除了像CC+nCOBO這樣的第三代語(yǔ)言編程環(huán)境,BEATUXEDO系統(tǒng)享受最廣泛的第三方工具的支持,下面是開(kāi)發(fā)BEATUXEDO:用目前可用工具的一個(gè)列表。表1TUXEDOA許的開(kāi)發(fā)工具選擇公司開(kāi)發(fā)工具客戶(hù)端服務(wù)器端Ally.*Ally4GLInformixIFORMIX5.0(XA)Informix*TPToolkitITI.*TPToolsOracleORACLE7.0(XA)D

14、evelop/2000GuptaSQLWindowsNovellVisualAppbuilderNovellUSLWKSHUnify_*Accell4GLJyacc*JAM/JPLTI_*IEFCASEMagna一、*MagnaXPowersoftPowerBuilder*DelphiDelphiMicrosoftVisualBasicVisualC+止匕外BEATUXEDO勺關(guān)聯(lián)產(chǎn)品BEACONNECT許BEATUXEDO!舊M的CICSIMS、Unisys的System2000進(jìn)行互操作,BEAJolt支持從Internet瀏覽器上請(qǐng)求BEATUXEDO勺服務(wù)。BEABuilder和BEA

15、Manager將BEATUXEDO用的開(kāi)發(fā)與管理更為簡(jiǎn)化。1.4BEATUXEDO的組成與功能BEATUXEDO用程序既可服務(wù)于帶有少量客戶(hù)和服務(wù)的單個(gè)服務(wù)器系統(tǒng),又可服務(wù)于由成千客戶(hù)、成百服務(wù)器和眾多服務(wù)器組件和服務(wù)構(gòu)成的大規(guī)模的分布式環(huán)境。一個(gè)這樣的應(yīng)用程序是以業(yè)務(wù)邏輯服務(wù)、由這些邏輯服務(wù)組織成的高層服務(wù)器組件和在服務(wù)器結(jié)點(diǎn)環(huán)境中的組件分布為特征的。支持這種虛擬主機(jī)環(huán)境的BEATUXEDO元素包括配置信息庫(kù)和實(shí)現(xiàn)運(yùn)行時(shí)應(yīng)用管理的核心子系統(tǒng)1配置信息庫(kù)BEATUXEDO應(yīng)用程序由配置文件指定,這些配置文件被轉(zhuǎn)換成若干緊耦合的運(yùn)行時(shí)共享信息庫(kù)。這些共享庫(kù)(在BEATUXEDO中稱(chēng)公告牌,Bul

16、letinBoard)駐留在每個(gè)參與應(yīng)用的服務(wù)器結(jié)點(diǎn)上。BEATUXEDO子系統(tǒng)訪(fǎng)問(wèn)和操作這些庫(kù)。( 1) 應(yīng)用程序配置一個(gè)BEATUXEDO應(yīng)用程序包括在一個(gè)高度分布的環(huán)境中運(yùn)行該應(yīng)用所需的資源。開(kāi)發(fā)人員編寫(xiě)服務(wù)的代碼,應(yīng)用管理員通過(guò)構(gòu)造定義操作參數(shù)和資源分配的配置文件創(chuàng)建應(yīng)用程序。配置信息駐留在一個(gè)可編程訪(fǎng)問(wèn)的管理信息庫(kù)(MIB)中。MIB最少包括下列配置信息:系統(tǒng)范圍的資源,包括有關(guān)全局應(yīng)用屬性(如安全性級(jí)別)、是否進(jìn)行負(fù)載平衡、啟動(dòng)一個(gè)應(yīng)用系統(tǒng)所需的資源定義和故障恢復(fù)時(shí)所需的資源定義。參與應(yīng)用的每個(gè)服務(wù)器機(jī)器的定義和駐留在這些機(jī)器上的BEATUXEDO文件的規(guī)格說(shuō)明。單個(gè)服務(wù)器可與其他

17、組成員共享的資源組,如事務(wù)管理;組也定義了服務(wù)器和所操作的資源管理器之間的映射。服務(wù)應(yīng)用程序所需的映射成進(jìn)程的服務(wù)器,在這些服務(wù)器進(jìn)程中實(shí)現(xiàn)了應(yīng)用業(yè)務(wù)邏輯。一個(gè)BEATUXEDO配置允許一個(gè)管理服務(wù)器或者從分布在一臺(tái)/多臺(tái)機(jī)器的一個(gè)/多個(gè)組中配置多個(gè)服務(wù)於器。應(yīng)用服務(wù)器進(jìn)程定義的服務(wù);服務(wù)級(jí)的屬性包括負(fù)載因子、服務(wù)處理時(shí)間的相對(duì)量、該服務(wù)相對(duì)于服務(wù)器中提供的其他服務(wù)的優(yōu)先級(jí)。頭三個(gè)配置屬性定義了應(yīng)用的處理元素(如處理結(jié)點(diǎn))、全局屬性和某一主資源的特殊指定。組、服務(wù)器和服務(wù)集中在BEATUXEDO軟件組件模型的分布式應(yīng)用資源上:BEATUXEDO應(yīng)用程序定義了提供所需服務(wù)的服務(wù)器組件分組;可配置

18、的服務(wù)器實(shí)例數(shù)量能在多個(gè)機(jī)器上調(diào)整;而且,BEATUXEDO能管理廣播的單個(gè)服務(wù)和它們的相對(duì)優(yōu)先級(jí)。( 2) 公告牌BEATUXEDO應(yīng)用配置文件被映射到一個(gè)運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu):公告牌(BB)。BB作為一個(gè)從配置文件中派生出來(lái)的共享信息庫(kù)。BB駐留在每個(gè)參與到由配置文件指定的應(yīng)用程序的BEATUXEDO的服務(wù)器結(jié)點(diǎn)上。BB作為分布式應(yīng)用的名字服務(wù)數(shù)據(jù)庫(kù)。它作為應(yīng)用統(tǒng)計(jì)數(shù)據(jù)的運(yùn)行時(shí)倉(cāng)庫(kù),提供分布式環(huán)境下的應(yīng)用對(duì)象的位置信息。BB由BEATUXEDO核心例程(對(duì)應(yīng)用開(kāi)發(fā)者透明)訪(fǎng)問(wèn),由核心例程讀/修改BB庫(kù)。這個(gè)信息庫(kù)提供BEATUXEDO完成動(dòng)態(tài)客戶(hù)/服務(wù)器映射所需的信息,同時(shí)也提供完成諸如負(fù)載平衡

19、、安全性和事務(wù)協(xié)調(diào)等功能的信息。2事務(wù)管理器事務(wù)管理器是BEATUXED琳系結(jié)構(gòu)的中心,它是每個(gè)BEATUXEDO服務(wù)器的核心,提供重要的分布式應(yīng)用服務(wù)、命名、消息路由、負(fù)載平衡、配置管理、事務(wù)管理和安全性。它也包含BB結(jié)構(gòu),使用維(bulletinBoard)ServerInfoServiceInFoClienttnfo護(hù)和訪(fǎng)問(wèn)BB信息的服務(wù)。換句話(huà)說(shuō),BB內(nèi)包含有可靠執(zhí)行和管理大規(guī)模的基于組件的應(yīng)用程序所需的所有信息,它將對(duì)事務(wù)管理器進(jìn)程起作用。事務(wù)管理器的基本操作見(jiàn)下圖的圖示。事實(shí)上,事務(wù)管理器是負(fù)責(zé)客戶(hù)/服務(wù)器綁定和支持BEATUXEDO!擬主機(jī)屬性等特色的子系統(tǒng)。圖4來(lái)自網(wǎng)上的客戶(hù)請(qǐng)

20、的客戶(hù)代理進(jìn)程,服務(wù)器通過(guò)注冊(cè)參加到該應(yīng)用中。作為客戶(hù)方通訊的一部分,事務(wù)管理器訪(fǎng)問(wèn)BB,然后選擇服務(wù)器,接著,服務(wù)器消息隊(duì)列的地址被返回,客戶(hù)方的請(qǐng)求被馬上傳送到合適的隊(duì)列等待服務(wù)為它進(jìn)行處理。1)名字服務(wù)/位置透明性BB作為BEATUXED用程序的名字服務(wù)器,復(fù)制到每個(gè)參與的結(jié)點(diǎn)上。為了便于快速訪(fǎng)問(wèn),名字服務(wù)器作為在共享內(nèi)存中的一個(gè)結(jié)構(gòu)存在。事務(wù)管理器使用BB名字信息、配置信息和環(huán)境統(tǒng)計(jì)信息自動(dòng)把服務(wù)請(qǐng)求平衡到可用的服務(wù)器上,并且根據(jù)數(shù)據(jù)內(nèi)容為客戶(hù)請(qǐng)求選擇路由,為服務(wù)請(qǐng)求選擇優(yōu)先級(jí)。編程員把應(yīng)用程序編成對(duì)邏輯入口項(xiàng)(稱(chēng)有名服務(wù))的函數(shù)調(diào)用。事務(wù)管理器把這些邏輯請(qǐng)求映射到服務(wù)器結(jié)點(diǎn)/服務(wù)器進(jìn)

21、程環(huán)境內(nèi)指定的服務(wù)實(shí)例。2)數(shù)據(jù)依賴(lài)型路由數(shù)據(jù)依賴(lài)型路由是根據(jù)數(shù)據(jù)緩沖區(qū)中一個(gè)指定域的值,把一個(gè)服務(wù)請(qǐng)求映射到一個(gè)指定的服務(wù)器組的機(jī)制。因?yàn)锽EATUXEDOI務(wù)器組映射成指定的資源管理器/數(shù)據(jù)庫(kù)實(shí)例,所以請(qǐng)求被導(dǎo)向到一個(gè)指定服務(wù)/資源管理器的組合。例如,一個(gè)銀行的數(shù)據(jù)庫(kù)可把存儲(chǔ)在不同數(shù)據(jù)庫(kù)實(shí)例中的不同范圍的帳號(hào)進(jìn)行水平分區(qū)。用戶(hù)可用事務(wù)管理器進(jìn)行路由選擇,而不用把特定分區(qū)信息編碼成訪(fǎng)問(wèn)帳號(hào)的應(yīng)用代碼。事實(shí)上,事務(wù)管理器查看指定的數(shù)據(jù)值,參考存儲(chǔ)在BB中的路由信息,然后把請(qǐng)求發(fā)送到能在正確數(shù)據(jù)分區(qū)上操作的服務(wù)。如果用戶(hù)需要改變數(shù)據(jù)庫(kù)分區(qū)(把一個(gè)分區(qū)移到一個(gè)新服務(wù)器上,或在已有分區(qū)實(shí)例上改變帳號(hào)

22、分布),那么,他只需改變事務(wù)管理器的路由信息,應(yīng)用程序的代碼不受影響。圖5數(shù)據(jù)依賴(lài)型路由:帳號(hào)操作的請(qǐng)求與數(shù)據(jù)分區(qū)是獨(dú)立的,事務(wù)管理器訪(fǎng)問(wèn)BB路由表信息,把請(qǐng)求映射到訪(fǎng)問(wèn)相應(yīng)分區(qū)的服務(wù)器組,然后返回該組指定服務(wù)的綁定。3)負(fù)載平衡為了確保應(yīng)用流量最大,事務(wù)管理器自動(dòng)地在系統(tǒng)中完成負(fù)載平衡和調(diào)度。通過(guò)使用每個(gè)服務(wù)的負(fù)載因子,事務(wù)管理器把請(qǐng)求發(fā)送給能最快處理該請(qǐng)求的服務(wù)器。事務(wù)管理器通過(guò)為當(dāng)前排隊(duì)的請(qǐng)求總計(jì)負(fù)載因子來(lái)決定給定服務(wù)器上的負(fù)載。下圖給出了事物管理器負(fù)載平衡能力如何幫助優(yōu)化應(yīng)用流量的一個(gè)例子。圖6負(fù)載平衡:服務(wù)A,B,C由不同的服務(wù)器提供,每個(gè)服務(wù)器有一個(gè)基于當(dāng)前排隊(duì)請(qǐng)求的負(fù)載值。事務(wù)管

23、理器決定哪一個(gè)服務(wù)器提供服務(wù),哪一個(gè)服務(wù)是負(fù)載最小。事務(wù)管理器將在一個(gè)給定結(jié)點(diǎn)內(nèi)或在提供服務(wù)的若干結(jié)點(diǎn)上,進(jìn)行負(fù)載平衡。4)優(yōu)先權(quán)請(qǐng)求優(yōu)先權(quán)是事務(wù)管理器提供的另一個(gè)核心能力。某一服務(wù)請(qǐng)求經(jīng)常需要比其他服務(wù)更高的優(yōu)先權(quán)。例如,航空公司取消訂座的優(yōu)先級(jí)要比訂座的優(yōu)先級(jí)高:對(duì)大多數(shù)航空公司來(lái)說(shuō),要盡可能地再次買(mǎi)出被取消的座位。優(yōu)先權(quán)在服務(wù)隊(duì)列級(jí)有用,參見(jiàn)下圖的圖示。圖7優(yōu)先權(quán):右例中,服務(wù)器1提供服務(wù)A,B,C。A,B服務(wù)的優(yōu)先級(jí)是50,C的優(yōu)先級(jí)是70。在上一個(gè)請(qǐng)求完成時(shí),服務(wù)器在隊(duì)列中選擇下一個(gè)請(qǐng)求。下一個(gè)請(qǐng)求是由優(yōu)先級(jí)決定的,而不是根據(jù)請(qǐng)求在隊(duì)列中的位置。為了防止低優(yōu)先級(jí)請(qǐng)求總是得不到服務(wù),每

24、隔十個(gè)請(qǐng)求,就按FIFO次序進(jìn)行一次請(qǐng)求選擇。5)穩(wěn)固的運(yùn)行環(huán)境事務(wù)管理器包括許多支持應(yīng)用可用性的特征,如進(jìn)程可用性檢查、超時(shí)檢查、自動(dòng)服務(wù)器重啟和恢復(fù)過(guò)程、用戶(hù)可定義的恢復(fù)過(guò)程。事務(wù)管理器不僅僅控制應(yīng)用程序的活動(dòng)流而且能確保其流暢有效的操作。6)安全性事務(wù)管理器通過(guò)一個(gè)結(jié)構(gòu)化的安全性接口提供應(yīng)用服務(wù)的驗(yàn)證、授權(quán)和訪(fǎng)問(wèn)控制。該接口概括了Kerberos安全模型,允許Kerberos或類(lèi)似的最終用戶(hù)驗(yàn)證機(jī)制與應(yīng)用集成。用戶(hù)能用訪(fǎng)問(wèn)控制列表保護(hù)服務(wù)、隊(duì)列或事件免遭未授權(quán)的訪(fǎng)問(wèn)。7)分布式事務(wù)處理分布式事務(wù)處理(DTB能力能保證跨幾個(gè)場(chǎng)地訪(fǎng)問(wèn)的數(shù)據(jù)和由不同數(shù)據(jù)庫(kù)產(chǎn)品管理的數(shù)據(jù)的完整性。事務(wù)管理器協(xié)調(diào)

25、分布式事務(wù)使之完成網(wǎng)絡(luò)環(huán)境下針對(duì)異構(gòu)數(shù)據(jù)庫(kù)的多場(chǎng)地修改。事務(wù)管理器用全局事務(wù)跟蹤事務(wù)參與者,管理兩階段提交協(xié)議。這樣就可確保每個(gè)場(chǎng)地都能正確處理事務(wù)的提交和回退。事務(wù)管理器還在出現(xiàn)場(chǎng)地故障、網(wǎng)絡(luò)故障或全局資源死鎖時(shí)協(xié)調(diào)全局事務(wù)的恢復(fù)。事務(wù)管理器使用開(kāi)放小組的X/OpenXA接口,進(jìn)行不同資源管理器之間的通訊。該接口已被X/Open接納為分布式事務(wù)控制的標(biāo)準(zhǔn)接口。因?yàn)楦咝阅芎褪聞?wù)流量對(duì)OLT陳統(tǒng)產(chǎn)品是關(guān)鍵因素,所以事務(wù)管理器DTP軟件使用了最小化磁盤(pán)寫(xiě)的算法。在其他屬性中,事務(wù)管理器DTPFF發(fā)了一些眾所周知的技術(shù)如協(xié)調(diào)者遷移、只讀和一階段提交優(yōu)化。事務(wù)管理器由幾個(gè)關(guān)鍵子系統(tǒng)支持,這些子系統(tǒng)擴(kuò)展

26、了BEATUXEDO客戶(hù)/服務(wù)器功能和與異構(gòu)應(yīng)用系統(tǒng)的互操作性。下面的幾個(gè)段落將描述這些關(guān)鍵子系統(tǒng):管理BEATUXEDOf分布式應(yīng)用管理的關(guān)鍵性問(wèn)題給出了一個(gè)結(jié)構(gòu)化的解決方案。BEATUXEDO勺管理接口包括一個(gè)綜合性的命令行/腳本接口,一個(gè)編程接口和一個(gè)管理信息庫(kù)(MIB),它們把BEATUXEDO實(shí)現(xiàn)成一個(gè)更大管理環(huán)境中的受控應(yīng)用程序。一個(gè)易用的基于GUI的管理應(yīng)用程序可利用這些管理接口,在BEATUXED邸境上提供了高層控制。BEATUXED資源,從高層的域?qū)傩韵蛳仑灤┮粋€(gè)單服務(wù)器進(jìn)程的特性,支持圖形化表示和拖放功能。集中式的應(yīng)用定義事務(wù)管理器使得應(yīng)用管理員可在一個(gè)文件中定義組成BEA

27、TUXEDO應(yīng)用程序的硬件、軟件和網(wǎng)絡(luò)資源。應(yīng)用設(shè)計(jì)者能敘述在何處運(yùn)行服務(wù)器和服務(wù)以及在處理器出故障時(shí)服務(wù)應(yīng)該遷移到何處。他們可把各種不同的特性,包括調(diào)度信息、進(jìn)程恢復(fù)標(biāo)準(zhǔn)和超時(shí)時(shí)間段等,賦給應(yīng)用服務(wù)器。事務(wù)管理器為動(dòng)態(tài)啟動(dòng)、停止或管理一個(gè)分布式應(yīng)用程序提供中央配置管理和工具。動(dòng)態(tài)重配置用戶(hù)可動(dòng)態(tài)啟動(dòng)或停止服務(wù);用戶(hù)可選擇可用的服務(wù)。用戶(hù)可在一個(gè)配置中增加新的機(jī)器、組、服務(wù)器和服務(wù)。另外,事務(wù)管理器可用不同的參數(shù)如超時(shí)故障等,使得一個(gè)無(wú)法使用的處理器上的服務(wù)器和服務(wù)在不中斷運(yùn)行程序的條件下移向另一個(gè)處理器上。第二章開(kāi)發(fā)與應(yīng)用2.1 開(kāi)發(fā)BEATuxedo應(yīng)用程序在開(kāi)發(fā)BEATuxedo應(yīng)用程序

28、之前,你需要先搞清楚一系列和設(shè)計(jì)開(kāi)發(fā)相關(guān)的概念,如識(shí)別什么是客戶(hù)機(jī),有哪些方法可以從外界收集數(shù)據(jù)并提交服務(wù)器進(jìn)行業(yè)務(wù)處理;識(shí)別什么是服務(wù)器,哪些程序包容了可以處理客戶(hù)機(jī)輸入的商業(yè)邏輯;識(shí)別什么是類(lèi)型緩沖區(qū),客戶(hù)程序在向其這程序發(fā)送數(shù)據(jù)前如何分配內(nèi)存區(qū)域;什么是BEATuxedo的消息范例等。最后你還要弄明白客戶(hù)程序是通過(guò)調(diào)用ATMI庫(kù)來(lái)訪(fǎng)問(wèn)BEATuxedo系統(tǒng)的。創(chuàng)建BEATuxedo的客戶(hù)程序與在C和C+編程語(yǔ)言中創(chuàng)建其它應(yīng)用程序一樣,BEATuxedo提供了一個(gè)其于C語(yǔ)言的編程接口,即應(yīng)用程序事務(wù)監(jiān)控接口ATMI,這套接口很容易使用,以便用于開(kāi)發(fā)客戶(hù)程序和服務(wù)程序。除了C語(yǔ)言接口外,BE

29、ATuxedo還提供了COBOL接口。2.1.1創(chuàng)建服務(wù)程序盡管開(kāi)發(fā)者使用ATM編程接口來(lái)創(chuàng)建BEATuxed旃戶(hù)程序和服務(wù)程序,但服務(wù)程序不全部由開(kāi)發(fā)者來(lái)編寫(xiě),開(kāi)發(fā)者只需寫(xiě)一些稱(chēng)為服務(wù)的商業(yè)函數(shù),封裝業(yè)務(wù)邏輯,然后和BEATuxedo的一些二進(jìn)制程序聯(lián)編成一個(gè)可執(zhí)行的服務(wù)程序。BEATuxedo服務(wù)程序啟動(dòng)后,它總是保持運(yùn)行狀態(tài),只到接收到一個(gè)shutdown消息為止。一個(gè)典型的BEATuxedo服務(wù)程序在shutdown或reboot之前都在執(zhí)行著數(shù)千個(gè)服務(wù)。為了更好的了解服務(wù)端的所有任務(wù)以編寫(xiě)服務(wù)端應(yīng)用,有必要重新認(rèn)識(shí)服務(wù)端在C/S模式中扮演的角色。首先,服務(wù)是系統(tǒng)資源的聯(lián)系點(diǎn)。例如,一

30、個(gè)數(shù)據(jù)庫(kù)服務(wù)聯(lián)系實(shí)際數(shù)據(jù)庫(kù)并對(duì)其進(jìn)行查詢(xún)和修改。為有效進(jìn)行,應(yīng)建立一個(gè)數(shù)據(jù)庫(kù)連接。其次,服務(wù)必須發(fā)布系統(tǒng)內(nèi)可以訪(fǎng)問(wèn)的交易,保證客戶(hù)端可以知道把請(qǐng)求發(fā)往何處。以上兩步結(jié)束后,服務(wù)進(jìn)入一個(gè)循環(huán)接收請(qǐng)求、處理請(qǐng)求并返回結(jié)果。接收請(qǐng)求包括進(jìn)入消息隊(duì)列,得到交易請(qǐng)求。處理請(qǐng)求包括檢查請(qǐng)求數(shù)據(jù)緩沖,運(yùn)行商業(yè)規(guī)則和邏輯,可能還包括訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)和返回結(jié)果數(shù)據(jù)緩沖。當(dāng)系統(tǒng)管理員需要關(guān)閉系統(tǒng),可以通過(guò)系統(tǒng)管理工具將關(guān)閉系統(tǒng)的消息發(fā)給服務(wù)。服務(wù)完成所有交易,取消交易發(fā)布,關(guān)閉資源連接然后結(jié)束。(1) 在BEATuxedo服務(wù)程序啟動(dòng)時(shí),執(zhí)行tpsvrinit()函數(shù),可以在里面打開(kāi)一些如數(shù)據(jù)庫(kù)之類(lèi)的資源供以后使用;(

31、2) 在BEATuxedo服務(wù)程序關(guān)閉時(shí),執(zhí)行tpsvrdown()函數(shù),可以在里面關(guān)閉tpsvrinit()中打開(kāi)的資料;(3) BEATuxedo服務(wù)程序以服務(wù)的形式來(lái)響應(yīng)客戶(hù)程序的請(qǐng)求,客戶(hù)程序不是通過(guò)名字來(lái)調(diào)用服務(wù)程序的,而是調(diào)用服務(wù),客戶(hù)程序不知道處理它請(qǐng)求的服務(wù)程序的位置;(4) 服務(wù)程序調(diào)用tpreturn()函數(shù)來(lái)結(jié)束服務(wù)請(qǐng)求,并返回一個(gè)緩沖區(qū),必要時(shí),將它傳給客戶(hù)程序;注:如果是在tpsvrinit()中連接數(shù)據(jù)庫(kù),為了保證數(shù)據(jù)庫(kù)的正常連接,在執(zhí)行服務(wù)的時(shí)候,最好能夠判斷數(shù)據(jù)庫(kù)是否斷開(kāi)連接,如果斷開(kāi)連接,則重新連接數(shù)據(jù)庫(kù)。這樣可以從根本上保證系統(tǒng)能夠持續(xù)穩(wěn)定的長(zhǎng)期運(yùn)行,基本上

32、不需要人工干預(yù)。也就不再會(huì)出現(xiàn)“數(shù)據(jù)庫(kù)重啟了,中間件必須重啟”的情況。在一般的C程序中,函數(shù)通過(guò)調(diào)用return()將控制返回,函數(shù)調(diào)用堆棧清空,控制返回調(diào)用點(diǎn)。TUXEDO系統(tǒng)的交易函數(shù)必須結(jié)束于將回應(yīng)返回給客戶(hù)端或前轉(zhuǎn)到另一交易。函數(shù)tpreturn()用來(lái)結(jié)束交易將回應(yīng)數(shù)據(jù)緩沖發(fā)給客戶(hù)端。函數(shù)tpforward()將交易前轉(zhuǎn)給另一個(gè)交易,由其負(fù)責(zé)回應(yīng)原來(lái)的客戶(hù)端。下圖是tpreturn()的示意圖。tpreturn()設(shè)計(jì)來(lái)代替常規(guī)的return(),結(jié)束絕大多數(shù)函數(shù)。它將回應(yīng)數(shù)據(jù)緩沖返回請(qǐng)求的客戶(hù)端,控制權(quán)返回給服務(wù)程序的標(biāo)準(zhǔn)main()(由TUXEDO提供)。tpreturn()使用

33、下列參數(shù):第一個(gè)值表示交易是否成功,有3種可能:TPSUCCESS交易完全成功,如果是一個(gè)會(huì)話(huà),TPEV_SVCSUCC被生成TPFAIL交易失敗,tperrno將被設(shè)成TPESVCFAIL。如果是事務(wù)模式,事務(wù)被標(biāo)志成abort-only,如果是會(huì)話(huà),TPEV_SVCFAIL被生成。TPEXIT與TPFAIL類(lèi)似,但服務(wù)會(huì)中斷,如果服務(wù)設(shè)成可以重啟動(dòng),則可以由TUXEDO系統(tǒng)將其重啟動(dòng)。第二個(gè)值是應(yīng)用定義返回碼,此處使交易可以發(fā)送一個(gè)整形代碼到客戶(hù)端,給出交易處理結(jié)果的詳細(xì)信息。該值與/T系統(tǒng)無(wú)關(guān),通過(guò)全程變量tpurcode送到客戶(hù)端程序。第三個(gè)值是回應(yīng)數(shù)據(jù)緩沖的的指針第四個(gè)值是回應(yīng)數(shù)據(jù)緩

34、沖的長(zhǎng)度(僅緩沖類(lèi)型為CARRY時(shí)需要)第五個(gè)值是標(biāo)志位,通常不用tpsvrinit()和tpsvrdone()分別用來(lái)啟動(dòng)和關(guān)閉服務(wù)。如果應(yīng)用不提供這兩個(gè)函數(shù),可以使用替代函數(shù)。tpsvrinit()用tpopen()缺省打開(kāi)RMH1B接。tpsvrdone()用tpclose()關(guān)閉RMTH1接。tpsrvinit()象標(biāo)準(zhǔn)C語(yǔ)言的main()一樣使用參數(shù)argc,argv。服務(wù)的命令行參數(shù)可以傳入該函數(shù),被getopt()解析。該部分的用法參見(jiàn)應(yīng)用配置部分。本函數(shù)出錯(cuò)時(shí)返回-1,成功返回0。tpsvrdone()無(wú)參數(shù),無(wú)返回值。當(dāng)C語(yǔ)言的交易程序編碼完后,需要連接正確的庫(kù)并編譯。使用b

35、uildserver可以使該過(guò)程容易一點(diǎn)。該命令引用了C語(yǔ)言編譯器并按正確的次序連接TUXEDO(統(tǒng)的庫(kù),連接TUXEDOS的main()等。buildserver還用-s參數(shù)產(chǎn)生合適的交易名/函數(shù)名映射表。要使用buildserver,必須先正確設(shè)定環(huán)境變量TUXDIR,PATH,LD_LIBRARY_PATH令語(yǔ)法如下:buildserver-v-oexecutable-sservice2,service3:func-fsource/object-lobject/libraryfile例:buildserver-sDEPOSIT-oTLR-fTLR.o-fappinit.o參數(shù)解釋如下:-

36、 o生成的可執(zhí)行文件名- f需要在連接TUXEDO之前傳給編譯器的文件名。如有多于一個(gè)的文件名,名字應(yīng)用空格分隔并用引號(hào)引起。也可以使用多個(gè)-f參數(shù)。- l需要在連接TUXEDO之前傳給編譯器的文件名。語(yǔ)法同上。- v編譯過(guò)程顯示。- b指定SHMgMP莫式。如無(wú)此項(xiàng),兩種模式都包括;使用此項(xiàng)可以使生成的可執(zhí)行文件小一點(diǎn)-r連接此處指出的RM。該RM勺名字必須含在$TUXDIR/udataobj/RM文件中。對(duì)于服務(wù)程序的調(diào)試,確實(shí)是一件非常令人頭痛的事.在Unix環(huán)境下,目前還找不到很好的方法,一般經(jīng)常使用的方法是print,Userlog”跟蹤法,但是這種方法太累了.因此,有人想出了在wi

37、ndows#境下跟蹤調(diào)試,發(fā)現(xiàn)沒(méi)有任何錯(cuò)誤后再放到UNIX環(huán)境進(jìn)行編譯,并正式使用.目前,我們公司采用的就是這種調(diào)試方法,在window滸境下(C+Builder)編寫(xiě)一個(gè)tuxedo模擬測(cè)試服務(wù)程序,使其能正確的識(shí)別客戶(hù)端調(diào)用的服務(wù),并正確的調(diào)用相應(yīng)的服務(wù).(1) 源代碼文件名:simpserv.c#include#include#include/*TUXEDOHeaderFile*/#include/*TUXEDOHeaderFile*/*當(dāng)服務(wù)器啟動(dòng)時(shí),在處理請(qǐng)求之前,tpsvrinit被執(zhí)行,這個(gè)不是必須的,對(duì)應(yīng)的函數(shù)是shutdown*/#ifdefined(_STDC_)|defi

38、ned(_cplusplus)tpsvrinit(intargc,char*argv)#elsetpsvrinit(argc,argv)intargc;char*argv;#endif/*當(dāng)argc,argv沒(méi)有被使用時(shí),一些系統(tǒng)會(huì)發(fā)了警告*/argc=argc;argv=argv;/*userlog用于將TUXEDO消息寫(xiě)到日志文件中*/userlog(Welcometothesimpleserver);return(0);/*TOUPPER真正處理客戶(hù)請(qǐng)求,它接收的參數(shù)是一個(gè)緩沖區(qū)指針*/#ifdefcplusplusexternC#endifvoid#ifdefined(_STDC_)|

39、defined(_cplusplus)TOUPPER(TPSVClNFO*rqst#elseTOUPPER(rqst)TPSVCINFO*rqst;#endifinti;for(i=0;ilen-1;i+)rqst-datai=toupper(rqst-datai);/*返回轉(zhuǎn)換后的類(lèi)型緩沖區(qū)*/tpreturn(TPSUCCESS,0,rqst-data,0L,0);程序說(shuō)明語(yǔ)句說(shuō)明wholefile整個(gè)服務(wù)程呼不提供main函數(shù),在build時(shí),由BEATuxedo系統(tǒng)提供。tpsvrinit()在服務(wù)器初始化即處理請(qǐng)求之前被調(diào)用。若沒(méi)有提供該函數(shù),BEATuxedo系統(tǒng)會(huì)提供一個(gè)缺省的,

40、它向USERLOG中寫(xiě)一條消息,說(shuō)明服務(wù)器已經(jīng)被啟動(dòng)。userlog(3c)是系統(tǒng)提供的一個(gè)與日志的方法。TOUPPER()simpserv提供的唯一一個(gè)服務(wù),它接收一個(gè)TPSVCINFO結(jié)構(gòu),它包含了要被轉(zhuǎn)換成大寫(xiě)的字符串。forloopBEATuxedo系統(tǒng)的循環(huán),用于逐一轉(zhuǎn)換。tpreturn()(3)程序編譯:$buildserver-osimpserv-fsimpserv.c-sTOUPPER(-sTOUPPE騰明了在服務(wù)器啟動(dòng)時(shí)需要提供的服務(wù))2.1.2創(chuàng)建客戶(hù)程序創(chuàng)建BEATuxedo的客戶(hù)程序與在C和C+編程語(yǔ)言中創(chuàng)建其它應(yīng)用程序一樣,BEATuxedo提供了一個(gè)其于C語(yǔ)言的編

41、程接口,即應(yīng)用程序事務(wù)監(jiān)控接口ATMI,這套接口很容易使用,以便用于開(kāi)發(fā)客戶(hù)程序和服務(wù)程序。除了C語(yǔ)言接口外,BEATuxedo還提供了COBOL接口??蛻?hù)端在C/S模式中的作用為了更好的了解客戶(hù)端的所有任務(wù)以編寫(xiě)客戶(hù)端應(yīng)用,有必要重新認(rèn)識(shí)客戶(hù)端在C/S模式中扮演的角色。首先,客戶(hù)端是用戶(hù)界面。意思是當(dāng)用戶(hù)在系統(tǒng)上用程序進(jìn)行一次操作的整個(gè)過(guò)程就是一個(gè)客戶(hù)端過(guò)程。前端過(guò)程是對(duì)客戶(hù)端的另一個(gè)描述??蛻?hù)端的首要任務(wù)就是獲得執(zhí)行操作應(yīng)該得到的數(shù)據(jù)。一旦客戶(hù)端得到了應(yīng)有的信息,應(yīng)該將數(shù)據(jù)按服務(wù)能夠識(shí)別并適合傳輸?shù)母袷酱虬H缓?,向服?wù)端發(fā)送請(qǐng)求并等待回應(yīng)。收到回應(yīng)數(shù)據(jù)后,將其按一定格式返回給終端用戶(hù)客戶(hù)

42、端開(kāi)發(fā)過(guò)程客戶(hù)端程序的設(shè)計(jì)和實(shí)現(xiàn)可以被分成2部分考慮:用戶(hù)處理過(guò)程和TUXEDO能部分。下文的客戶(hù)端程序只描述了TUXEDO能部分。禾I用TUXEDOATMIAPI調(diào)用可以做至U:基本的TUXEDO試技巧(tperrno,tpstrerror,userlog)TUXEDO程管理(tpinit,tpterm)基本數(shù)據(jù)緩沖管理(tpalloc,tprealloc,tpfree)基本通訊(tpcall,tpacall,tpgetrply)客戶(hù)程序一般執(zhí)行如下任務(wù):(1)用tpchkauth()決定加入一個(gè)應(yīng)用程序所需的安全級(jí)別??赡艹霈F(xiàn)的響應(yīng)包括:沒(méi)有安全級(jí)別,應(yīng)用程序口令,應(yīng)用程序授權(quán),訪(fǎng)問(wèn)控制列

43、表,連接級(jí)加密,公鑰加密,審計(jì)。這些可以根據(jù)你的需求進(jìn)行選擇;在實(shí)際的應(yīng)用中很多的軟件開(kāi)發(fā)商通常對(duì)這一步都不做處理。(2)調(diào)用tpinit()來(lái)連接到一個(gè)BEATuxedo應(yīng)用程序,所需的安全信息作為tpinit()的參數(shù)傳給了應(yīng)用程序;(3)執(zhí)行服務(wù)請(qǐng)求;(4)調(diào)用tpterm()來(lái)斷開(kāi)和BEATuxedo應(yīng)用程序的連接調(diào)試和錯(cuò)誤處理當(dāng)調(diào)用ATMI出錯(cuò)時(shí),返回值為-1,全程變量tperrno被設(shè)值,該變量提供系統(tǒng)定義的出錯(cuò)原因。函數(shù)tpstrerror()以此變量為參數(shù),返回錯(cuò)誤的字符說(shuō)明信息。完整的錯(cuò)誤號(hào)和文本錯(cuò)誤信息存在于文件$TUXDIR/include/atmi.h。函數(shù)userlo

44、g()重定向輸出文件為ULOG.mmddyy用方法同printf()。該函數(shù)每次輸出都寫(xiě)硬盤(pán),這樣在系統(tǒng)失敗時(shí)也能保留調(diào)試信息。代碼范例ret=tpterm();if(ret=-1)printf(“Errorinexitingapplicatnio”n);usrlog(“ATMIerrorlogged%d%s”,tperrno,tpstrerror(tperrno);進(jìn)程管理tuxedo接到一個(gè)tpinit的請(qǐng)求后,就啟動(dòng)一個(gè)服務(wù)進(jìn)程,接收到tpterm()后,就會(huì)中止該服務(wù)進(jìn)程.在實(shí)際應(yīng)用中,tpinit()和tpterm()必須成對(duì)出現(xiàn),而且要相互對(duì)應(yīng).如果只在程序中調(diào)用了tpinit()

45、而沒(méi)有調(diào)用tpterm(),則tuxedo系統(tǒng)會(huì)認(rèn)為該進(jìn)程一直處于活動(dòng)狀態(tài),這樣的話(huà)可能會(huì)因?yàn)榉?wù)進(jìn)程達(dá)到系統(tǒng)允許的上限而導(dǎo)致系統(tǒng)的崩潰.inttpinit(TPINIT*tpinfo)客戶(hù)端通過(guò)調(diào)用tpinit()與應(yīng)用連接,進(jìn)行交互,有以下事件發(fā)生:調(diào)用安全接口檢查客戶(hù)端是否需要認(rèn)證連接BB,使進(jìn)一步的ATMI函數(shù)得到信息使BBL了解BB中已經(jīng)存在請(qǐng)求建立客戶(hù)端消息隊(duì)列使服務(wù)可以發(fā)回返回信息,系統(tǒng)可以送出廣播通知等.錯(cuò)誤時(shí)返回-1,可能由以下原因引起:TPEINVAL參數(shù)錯(cuò)誤TPENOENTBB無(wú)空間TPEPERM無(wú)連接權(quán)限TPEPROTO協(xié)議錯(cuò)誤-被服務(wù)調(diào)用inttpterm()客戶(hù)端調(diào)

46、用tpterm()切斷與應(yīng)用的連接,結(jié)束了客戶(hù)端的TUXEDO進(jìn)程,該過(guò)程發(fā)生以下事件:BB入口刪除,使BBL知道客戶(hù)端已經(jīng)離開(kāi)客戶(hù)端離開(kāi)BB,客戶(hù)端的信號(hào)量被移除客戶(hù)端消息隊(duì)列被移除錯(cuò)誤時(shí)返回-1,可能由以下原因引起:TPEPROTO協(xié)議錯(cuò)誤-被服務(wù)調(diào)用TPESYSTEM/T系統(tǒng)下錯(cuò)誤TPEOS操作系統(tǒng)錯(cuò)根據(jù)tpinit()和tpterm()在客戶(hù)程序中不同位置的調(diào)用,可以把tuxedo的進(jìn)程連接分為長(zhǎng)連接和短連接兩種.長(zhǎng)連接是指在程序開(kāi)始的時(shí)候調(diào)用tpinit()建立服務(wù)連接,在程序中止的時(shí)候調(diào)用tpterm()中止服務(wù)連接.這樣做的好處是,當(dāng)用戶(hù)頻繁的進(jìn)行業(yè)務(wù)操作時(shí),不用頻繁的進(jìn)行進(jìn)程連

47、接,大大的縮短了操作時(shí)間,提高了程序的執(zhí)行效率.但是,這也一個(gè)缺點(diǎn),那就是,只有用戶(hù)不從客戶(hù)程序中退出來(lái),不管做不做業(yè)務(wù),都會(huì)在系統(tǒng)中占用一個(gè)進(jìn)程連接,從而會(huì)影響其他用戶(hù)的連接.短連接指的是用戶(hù)每做一次業(yè)務(wù),都需要調(diào)用tpinit(),業(yè)務(wù)完成后調(diào)用tpterm().這樣做的好處是,1000個(gè)終端用戶(hù)和10000個(gè)終端用戶(hù)同時(shí)操作,對(duì)系統(tǒng)來(lái)說(shuō),基本上是一個(gè)概念.但是這樣做會(huì)浪費(fèi)大量的時(shí)間在進(jìn)程連接上,從而影響了業(yè)務(wù)的處理效率.為了協(xié)調(diào)長(zhǎng)連接和短連接之間的矛盾,我曾經(jīng)給出了一個(gè)很好的解決方案,那就是在長(zhǎng)連接的基礎(chǔ)上進(jìn)行優(yōu)化處理,當(dāng)客戶(hù)程序5分鐘(這個(gè)值可以自定義)沒(méi)有向服務(wù)程序發(fā)送任何服務(wù)請(qǐng)求,

48、則調(diào)用tpterm()斷開(kāi)服務(wù)連接.僅僅這樣還是不行的,我們還必須在客戶(hù)程序向服務(wù)程序發(fā)送業(yè)務(wù)請(qǐng)求之前,首先判斷進(jìn)程連接是否斷開(kāi),如果斷開(kāi),則重新連接.數(shù)據(jù)緩沖管理在BeaTuxedo系統(tǒng)中的所有通信過(guò)程都是通過(guò)類(lèi)型緩沖區(qū)來(lái)完成的,BeaTuxedo系統(tǒng)提供了大量的類(lèi)型緩沖區(qū)來(lái)供開(kāi)發(fā)者使用。所有類(lèi)型緩沖區(qū)都必須通過(guò)BeaTuxedo的tpalloc(),tprealloc(),tpfree()這些ATMI來(lái)分配回收,它們都有特定的頭部。以下是TUXEDO基本的數(shù)據(jù)緩沖類(lèi)型:STRING以空值結(jié)尾的單域字符數(shù)據(jù)。CARRAY有長(zhǎng)度定義的單域二進(jìn)制數(shù)據(jù),不進(jìn)行編、解碼。VIEW類(lèi)C結(jié)構(gòu)或COBOL

49、記錄的多域組織。FML無(wú)固定結(jié)構(gòu)的自定義緩沖。tpalloc(),tprealloc()在出錯(cuò)時(shí)返回空值,可能由以下原因引起:TPEOS操作系統(tǒng)TPEINVAL非法或不正確的類(lèi)型TPESYSTEMTUXEDO之下的錯(cuò)誤統(tǒng)一定義的類(lèi)型緩沖區(qū)可以使它們?cè)诳缭讲煌W(wǎng)絡(luò)、不同協(xié)議、不同CPU勾架以及不同操作系統(tǒng)之間得到統(tǒng)一的處理,這就使得開(kāi)發(fā)者在分布式計(jì)算環(huán)境中有效地避開(kāi)了異構(gòu)網(wǎng)絡(luò)和異構(gòu)計(jì)算機(jī)系統(tǒng)帶來(lái)的差異,把精力集中在商業(yè)邏輯的開(kāi)發(fā)上。(1)源代碼文件名:simpcl.c#include#includeatmi.h/*TUXEDO的頭文件*/#ifdefined(_STDC_)|defined(_c

50、plusplus)main(intargc,char*argv口)#elsemain(argc,argv)intargc;char*argv口;#endifchar*sendbuf,*rcvbuf;longsendlen,rcvlen;intret;if(argc!=2)(void)fprintf(stderr,Usage:simpclstringn);exit(1);/*作為一個(gè)客戶(hù)過(guò)程連接到System/T*/if(tpinit(TPINIT*)NULL)=-1)(void)fprintf(stderr,Tpinitfailedn);exit(1);sendlen=strlen(argv1

51、);/*分配一個(gè)供請(qǐng)求響應(yīng)使用的STRING緩沖區(qū)*/if(sendbuf=(char*)tpalloc(STRING,NULL,sendlen+1)=NULL)(void)fprintf(stderr,Errorallocatingsendbuffern);tpterm();exit(1);if(rcvbuf=(char*)tpalloc(STRING,NULL,sendlen+1)=NULL)(void)fprintf(stderr,Errorallocatingreceivebuffern);tpfree(sendbuf);tpterm();exit(1);(void)strcpy(se

52、ndbuf,argv1);/*RequesttheserviceTOUPPER,waitingforareply*/ret=tpcall(TOUPPER”,(char*)sendbuf,0,(char*)&rcvbuf,&rcvlen,(long)0);if(ret=-1)(void)fprintf(stderr,CantsendrequesttoserviceTOUPPERn);(void)fprintf(stderr,Tperrno=%dn,tperrno);tpfree(sendbuf);tpfree(rcvbuf);tpterm();exit(1);(void)fprintf(stdo

53、ut,Returnedstringis:%sn,rcvbuf);/*FreeBuffers&DetachfromSystem/T*/tpfree(sendbuf);tpfree(rcvbuf);tpterm();return(0);程序說(shuō)明:語(yǔ)句說(shuō)明atmi.h調(diào)用ATMI函數(shù)必須的頭文件tpinit()客戶(hù)程序調(diào)用它來(lái)加入應(yīng)用程序tpalloc()用于分配類(lèi)型緩沖區(qū)的ATMI函數(shù),STRING是五種BEATuxedo緩沖區(qū)數(shù)據(jù)典型之一,sendlen+1表不緩沖區(qū)類(lèi)型,因?yàn)橐钥兆址Y(jié)尾,所以長(zhǎng)度加1tpcall()把消息緩沖區(qū)送到TOUPPERI務(wù),它提供了響應(yīng)緩沖區(qū)的地址,它直等待著返回消

54、息tpterm()用于退出應(yīng)用程序的ATMI函數(shù),tpfree()釋放分配的緩沖區(qū),是和tpalloc()相對(duì)應(yīng)的函數(shù)(3)程序編譯:$buildclient-osimpcl-fsimpcl.c-o指明輸出目標(biāo)文件名,-f指出源文件名2.1.3在應(yīng)用程序中使用消息范例BEATuxed源統(tǒng)提供多種通信模式.同步Request/Response模式;.異步Request/Response模式;.嵌套調(diào)用;.調(diào)用轉(zhuǎn)發(fā);.會(huì)話(huà)通信;主動(dòng)消息通告;基于事件的通信;基于隊(duì)列的通信;使用事務(wù)。同步通訊要進(jìn)行同步調(diào)用,BeaTuxedo客戶(hù)程序使用ATMI函數(shù)tpcall()把一個(gè)請(qǐng)求送到服務(wù)程序,它不是通過(guò)名字來(lái)調(diào)用服務(wù)程序的,而是通過(guò)特定的服務(wù)來(lái)完成??蛻?hù)程序要等到服務(wù)程序作出響應(yīng)后才處理后面的工作,也就是說(shuō),它在收到服務(wù)程序的響應(yīng)之前一直處于阻塞狀態(tài)。函數(shù)tpcall()有6個(gè)參數(shù)。如下:交易名請(qǐng)求數(shù)據(jù)緩沖請(qǐng)求數(shù)據(jù)緩沖的長(zhǎng)度(僅緩沖類(lèi)型為CARRY時(shí)需要)返回?cái)?shù)據(jù)緩沖的地址。緩沖大小可以根據(jù)收到數(shù)據(jù)而改變。返回?cái)?shù)據(jù)緩沖大小的地址標(biāo)志量標(biāo)志量可以是以下值:TPN

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論