ZB03Tuxedo操作手冊(cè)V0.1_第1頁(yè)
ZB03Tuxedo操作手冊(cè)V0.1_第2頁(yè)
ZB03Tuxedo操作手冊(cè)V0.1_第3頁(yè)
ZB03Tuxedo操作手冊(cè)V0.1_第4頁(yè)
ZB03Tuxedo操作手冊(cè)V0.1_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 Tuxedo操作手冊(cè)長(zhǎng)沙銀行Tuxedo操作手冊(cè)文檔編號(hào):(按照長(zhǎng)沙銀行文檔資料統(tǒng)一編碼規(guī)則編制文檔編號(hào),由信息技術(shù)部填寫(xiě))版本號(hào):(按照長(zhǎng)沙銀行關(guān)于版本號(hào)管理的有關(guān)規(guī)定填寫(xiě),由信息技術(shù)部填寫(xiě))修 訂 記 錄日期版本修訂內(nèi)容描述作者審核人2015-02-05V1.0新建文檔金杰目 錄第一章 概述11.1 目的1第二章 AWR的幾個(gè)概念12.1 Snapshots( 快照)12.1.1 手動(dòng)創(chuàng)建Snapshots12.1.2 手動(dòng)刪除Snapshots2第一章 概述1.1 TUXEDO是什么BEA TUXEDO是在企業(yè)、Internet 這樣的分布式運(yùn)算環(huán)境中開(kāi)發(fā)和管理三層結(jié)構(gòu)的客戶/服務(wù)器型

2、關(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)。BEA TUXEDO是企業(yè)、 Internet 分布式應(yīng)用中的基礎(chǔ)主干平臺(tái)。它提供了一個(gè)開(kāi)放的環(huán)境,支持各種各樣的客 戶、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、遺留系統(tǒng)和通訊方式。BEA TUXEDO使分布式關(guān)鍵任務(wù)應(yīng)用系統(tǒng)具有大型主機(jī)的性能,從而使這些應(yīng)用系統(tǒng)能夠應(yīng)付數(shù)以千計(jì)的用戶,大交易吞吐量,多并行數(shù)據(jù)庫(kù)存取和大量數(shù)據(jù),同時(shí)保持較短的反應(yīng)時(shí)間,較高數(shù)據(jù)完整性和安全性,并且確保全年天,每周天,每天小時(shí)的系統(tǒng)可用性。同時(shí),

3、BEA TUXEDO還能讓開(kāi)發(fā)人員和系統(tǒng)管理人員享用分布式運(yùn) 算環(huán)境提供的好處,如技術(shù)成本的低增長(zhǎng)率,靈活性提高,快速應(yīng)用開(kāi)發(fā)和安裝以及業(yè)務(wù)信息存 取得以改善。1.2 BEA TUXEDO的組件軟件模型關(guān)鍵業(yè)務(wù)應(yīng)用通常是面向事務(wù)的,要求具有準(zhǔn)確的數(shù)據(jù)完整性、較好的性能和管理需求。這些需求要求對(duì)應(yīng)用的開(kāi)發(fā)、調(diào)度和操作給出一個(gè)結(jié)構(gòu)化的方案。由像BEATUXEDO這樣的中間件支持的組件軟件模型為分布式環(huán)境處理關(guān)鍵性業(yè)務(wù)應(yīng)用提供了一 個(gè)結(jié)構(gòu)化的 解決方案。BEA TUXEDO和基于組件的應(yīng)用設(shè)計(jì)從異構(gòu)的計(jì)算資源中創(chuàng)建了一個(gè)虛擬主機(jī):在分布式應(yīng)用系統(tǒng)級(jí)提供可管理的相互關(guān)聯(lián)的資源。許多組織在進(jìn)行了一段時(shí)間

4、的分布式應(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)。接著,兩層的客戶/服務(wù)器數(shù)據(jù)庫(kù)應(yīng)用在部門(mén)級(jí)被采用,這類(lèi)應(yīng)用把交互式文件共享進(jìn)化到并發(fā)數(shù)據(jù)元素訪問(wèn),在數(shù)據(jù)級(jí)支持更細(xì)粒度的管理。雖然這些客戶/服務(wù)器應(yīng)用具體化了真正分布式應(yīng)用處理的概念,它們?nèi)粤粲袨槟骋?/p>

5、目標(biāo)定制的特性,規(guī)模和管理能力都有限。更重要的,這些應(yīng)用只停留在較細(xì)粒度的數(shù)據(jù)訪問(wèn)上,使得整個(gè)應(yīng)用系統(tǒng)宛如磐石,不能有效地利用網(wǎng)絡(luò)資源。面對(duì)更大規(guī)模的關(guān)鍵業(yè)務(wù)應(yīng)用,如要進(jìn)行有效的分布式處理,就要求從客戶/數(shù)據(jù)庫(kù)方案轉(zhuǎn)變到三層 客戶/應(yīng)用系統(tǒng)/數(shù)據(jù)服務(wù)器結(jié)構(gòu)。以后者為核心的組件軟件 模型是客戶/服務(wù)器計(jì)算的拓展,它支持應(yīng)用分區(qū),能有效地開(kāi)發(fā)和調(diào)度應(yīng)用業(yè)務(wù)邏輯,管理分布式應(yīng)用的可靠執(zhí)行。BEA TUXEDO采用三層結(jié)構(gòu)的組件軟件模型。圖1 表示BEA TUXEDO 的組件軟件模型的概要。該結(jié)構(gòu)分為三層: 圖1 BEA TUXEDO 的組件軟件模型概要1.3 TUXEDO 的特點(diǎn)1.3.1 減輕開(kāi)發(fā)

6、人員負(fù)擔(dān)BEA TUXEDO的三層結(jié)構(gòu)組件軟件模型將用戶界面的表示部分和業(yè)務(wù)邏輯部分按客戶 組件服務(wù)器組件分開(kāi),使開(kāi)發(fā)人員能夠按組件的思想專注入于業(yè)務(wù)邏輯的開(kāi)發(fā),用戶界面部分可用流行的前端開(kāi)發(fā)工具來(lái)快速完成。而客戶和服務(wù)器之間、服務(wù)器和服務(wù)器之間的通訊,異構(gòu)平臺(tái)之間的數(shù)據(jù)變換,以及服務(wù)器和數(shù)據(jù)庫(kù)之間的集成和事務(wù)控制都由BEA TUXEDO 來(lái)完成。當(dāng)數(shù)據(jù)庫(kù)或服務(wù)器端的業(yè)務(wù)邏輯改變時(shí),客戶端則不一定要改變;反 之當(dāng)客戶改變或增加新的客戶界面時(shí),服務(wù)器端則不一定要改變,大大增加了應(yīng)用系統(tǒng)的各部分的可復(fù)用性。BEA TUXEDO提供的簡(jiǎn)潔API 使用戶程序能夠物理地點(diǎn)透明地在客戶和服務(wù)器之間、 服務(wù)

7、器和服務(wù)器之間進(jìn)行各種方式的通訊,極大地減輕開(kāi)發(fā)人員的負(fù)擔(dān)。BEA TUXEDO提供的通訊方式有同步RPC調(diào)用,異步RPC調(diào)用,對(duì)話通信方式,廣播 通訊方式,異步存儲(chǔ)轉(zhuǎn)發(fā)隊(duì)列通訊,事件通訊方式等。1.3.2 使系統(tǒng)的安裝與升級(jí)更容易在BEA TUXEDO 的三層結(jié)構(gòu)組件軟件模型下開(kāi)發(fā)的應(yīng)用程序以服務(wù)器組件和客戶組件為安裝、升級(jí)的單位,當(dāng)一個(gè)組件需要更新時(shí),管理人員甚至能夠在運(yùn)行系統(tǒng)不停機(jī)的情況下完成系統(tǒng)的升級(jí),這在客戶端為數(shù)以千計(jì)的關(guān)鍵任務(wù)應(yīng)用中尤為重要。1.3.3 減輕系統(tǒng)管理人員負(fù)擔(dān)BEA TUXEDO系統(tǒng)提供從一個(gè)中心點(diǎn)對(duì)整個(gè)分布式系統(tǒng)進(jìn)行全局監(jiān)控及管理的能力, 管理員根據(jù)一個(gè)整體系統(tǒng)視

8、圖(而不僅是單個(gè)節(jié)點(diǎn)或單元)提供的信息,可以作出決定和采取動(dòng)作。BEA TUXEDO不但提供了一些管理命令,而且提供了一個(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)行該圖形界面管理工具。此外,BEA TUXEDO還提供了描述系統(tǒng)中各對(duì)象的管理信息數(shù)據(jù)庫(kù)(MIBS)和存取 管理這些管理信息數(shù)據(jù)庫(kù)的管理API,用戶可利用這些管理API,編寫(xiě)自己特有的管理工 具。 1.3.4 非常高的性能一方面,BEA TUXEDO能夠使多個(gè)客戶

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

10、A TUXEDO上完成的。1.3.5 更高的可用性BEA TUXEDO隨時(shí)知道它控制下的資源的情況,并利用這些信息為應(yīng)用提供最大可 用性。分布式系統(tǒng)使資源故障的影響復(fù)雜化。在一個(gè)分布式系統(tǒng)中,多個(gè)節(jié)點(diǎn)代表更多的潛在故障點(diǎn)的可能,但也可以代表在資源恢復(fù)開(kāi)始時(shí)在其他節(jié)點(diǎn)上重新分配工作的更大潛力。BEA TUXEDO在這種分布式系統(tǒng)故障恢復(fù)上具有優(yōu)勢(shì)。TUXEDO將重啟應(yīng)用進(jìn)程, 并且 能在硬件故障情況下在其它結(jié)點(diǎn)上重新運(yùn)行進(jìn)程。1.3.6 分布式環(huán)境中更高水平的數(shù)據(jù)完整性BEA TUXEDO設(shè)計(jì)了數(shù)據(jù)資源的絕對(duì)完整性。目前出現(xiàn)的客戶/服務(wù)器應(yīng)用中,重要 數(shù)據(jù)資源很可能是廣泛的,而且受異構(gòu)系統(tǒng)的控制

11、。應(yīng)用可以設(shè)計(jì)成用嚴(yán)格的保證數(shù)據(jù)一致性的兩階段提交,或者用更多的緩沖存儲(chǔ)和轉(zhuǎn)發(fā)技術(shù)來(lái)管理異構(gòu)的(或者同構(gòu)的)數(shù)據(jù)庫(kù)的更新。在各種情況下,BEA TUXEDO能夠確保異 構(gòu)的 (或者同構(gòu)的) 數(shù)據(jù)庫(kù)以 及 它資源管理器之間的完整性。1.3.7 系統(tǒng)的安全性BEA TUXEDO通過(guò)結(jié)構(gòu)化用戶界面支持應(yīng)用服務(wù)的驗(yàn)證、授權(quán)和存取控制,允許用 戶加入自己的驗(yàn)證服務(wù)模塊。BEA TUXEDO還提供信息加密服務(wù),允許對(duì)網(wǎng)絡(luò)上傳輸?shù)?信息按RSA 的RC4算法加密。目前美國(guó)本土內(nèi)可按128位,本土外可按40位加密。1.3.8 開(kāi)放系統(tǒng)中最開(kāi)放的中間件平臺(tái)BEA TUXEDO是一個(gè)非常開(kāi)放的平臺(tái),支持三十多種服

12、務(wù)器平臺(tái),包括大多數(shù)的 UNIX服務(wù)器 ,WindowsNT 服務(wù)器,IBM的S/370,S/390, 加上AS/400和 Tandem公司的 NonStop系統(tǒng)。它的客戶支持幾乎所有的工作站,包括 UNIX,MS-DOS,Windows3.1/95, Windows NT,OS/2,Macintosh等。 BEA TUXEDO支持X/Open組織 的分布式 事務(wù) 處 理 模型DTP,事務(wù)定界標(biāo)準(zhǔn)TX, 應(yīng)用程序事務(wù)處理接口標(biāo)準(zhǔn)XA TMI以及 和資源 管理 器 (像數(shù)據(jù)庫(kù)系統(tǒng))的接口標(biāo)準(zhǔn)XA,并且還支持事務(wù)處理器之間的互操作標(biāo)準(zhǔn)OSI-TP。 BEA TUXEDO的客戶端通過(guò)DLL 可以和V

13、isual C+、Visual Basic、 Power Builder、 SQL Windows、Delphi、Develop/2000 以及其他4GL和CASE 工具互連。此外,BEA TUXEDO還得到其他第三方開(kāi)發(fā)管理工具廠商的支持。 1.3.9 系統(tǒng)的伸縮性簡(jiǎn)單地說(shuō),軟件可伸縮性就是可以很容易地增加被支持的用戶數(shù)和應(yīng)用的全局吞吐量。 一個(gè)可伸縮的軟件系統(tǒng)是利用網(wǎng)絡(luò)分布系統(tǒng)優(yōu)勢(shì)的關(guān)鍵。BEA TUXEDO提供的就是 這樣一個(gè)系統(tǒng),它可以利用在一個(gè)網(wǎng)絡(luò)上所能找到的所有的異構(gòu)的資源以獲得最大的效益。 BEA TUXEDO提供這一點(diǎn),而且提供許多可伸縮性選項(xiàng)。 垂直方向的可伸縮性代表的 含義

14、與通常相同,即將系統(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))。BEA TUXEDO支持二維的可伸縮性。二維可伸縮性可在結(jié)構(gòu)上的任意位置添加異質(zhì) 資源,而不改變已存在的應(yīng)用的結(jié)構(gòu)。允許對(duì)一個(gè)復(fù)雜的混合結(jié)構(gòu)的支持,為聯(lián)機(jī)網(wǎng)絡(luò)系統(tǒng)提供了廣泛的規(guī)模選擇范圍。任何與數(shù)據(jù)表示有關(guān)的(如不同的處理器表示)可以由 BEA TUXEDO透明地解決。BEA TUXEDO 還可根據(jù)系統(tǒng)負(fù)荷的變化動(dòng)態(tài)地增加或減少應(yīng)用服務(wù)器的個(gè)數(shù)。1.3.

15、10 廣泛的開(kāi)發(fā)工具支持除了像C,C+和COBOL這樣的第三代語(yǔ)言編程環(huán)境,BEA TUXEDO系統(tǒng)享受最廣泛的第三方工具的支持,下面是開(kāi)發(fā)BEA TUXEDO應(yīng)用目前可用工具的一個(gè)列表。 表1 TUXEDO允許的開(kāi)發(fā)工具選擇公司開(kāi)發(fā)工具客戶端服務(wù)器端 Ally Ally 4GL* Informix IFORMIX 5.0 (XA) Informix TP Toolkit* ITI TP Tools* OracleORACLE 7.0 (XA)Develop /2000 GuptaSQL Windows Novell Visual Appbuilder Novell USL WKSH Unif

16、y Accell 4GL* Jyacc JAM/JPL* TI IEF CASE* Magna Magna X* PowersoftPowerBuilder* Delphi Delphi Microsoft Visual Basic Visual C+ 此外 BEA TUXEDO 的關(guān)聯(lián)產(chǎn)品BEA CONNECT 允許BEA TUXEDO 和IBM的CICS、IMS、 Unisys的System2000進(jìn)行互操作,BEA Jolt支持從Internet 瀏覽器上請(qǐng)求BEA TUXEDO 的服務(wù)。BEA Builder 和BEA Manager將BEA TUXEDO應(yīng)用的開(kāi)發(fā)與管理更為簡(jiǎn)化。1.

17、4 BEA TUXEDO 的組成與功能 BEA TUXEDO 應(yīng)用程序既可服務(wù)于帶有少量客戶和服務(wù)的單個(gè)服務(wù)器系統(tǒng),又可服務(wù)于由成千客戶、成百服務(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)境的BEA TUXEDO 元素包括配置信 息庫(kù)和實(shí)現(xiàn)運(yùn)行時(shí)應(yīng)用管理的核心子系統(tǒng)。1.4.1 配置信息庫(kù)BEA TUXEDO 應(yīng)用程序由配置文件指定,這些配置文件被轉(zhuǎn)換成若干緊耦合的運(yùn)行時(shí)共享信息庫(kù)。這些共享庫(kù)(在BEA TUXEDO中稱公告牌,Bulletin Board)

18、駐留在每個(gè)參與 應(yīng)用的服務(wù)器結(jié)點(diǎn)上。BEA TUXEDO子系統(tǒng)訪問(wèn)和操作這些庫(kù)。 應(yīng)用程序配置一個(gè)BEA TUXEDO應(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è)可編程訪問(wèn)的管理信息庫(kù)(MIB)中。MIB最少包括下列配置信息:l 系統(tǒng)范圍的資源,包括有關(guān)全局應(yīng)用屬性(如安全性級(jí)別)、是否進(jìn)行負(fù)載平衡、啟動(dòng)一個(gè)應(yīng)用系統(tǒng)所需的資源定義和故障恢復(fù)時(shí)所需的資源定義。l 參與應(yīng)用的每個(gè)服務(wù)器機(jī)器的定義和駐留在這些機(jī)器上的BEA TUXEDO文件的規(guī)格說(shuō)明。l 單個(gè)服務(wù)器可與

19、其他組成員共享的資源組,如事務(wù)管理;組也定義了服務(wù)器和所操作的資源管理器之間的映射。l 服務(wù)應(yīng)用程序所需的映射成進(jìn)程的服務(wù)器,在這些服務(wù)器進(jìn)程中實(shí)現(xiàn)了應(yīng)用業(yè)務(wù)邏輯。一個(gè)BEA TUXEDO配置允許一個(gè)管理服務(wù)器或者從分布在一臺(tái)/多臺(tái)機(jī)器的一個(gè)/多個(gè)組中配置多個(gè)服務(wù)器。l 應(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ù)集中在BEA TUXEDO軟件組 件模型的分 布式應(yīng)用 資源上: BEA TUXEDO應(yīng)用程序定義了提供所需服務(wù)

20、的服務(wù)器組件分組;可配置的服務(wù)器實(shí)例數(shù) 量能在多個(gè)機(jī)器上調(diào)整;而且,BEA TUXEDO能管理廣播的單個(gè)服務(wù)和它們的相對(duì)優(yōu)先級(jí)。 公告牌BEA TUXEDO 應(yīng)用配置文件被映射到一個(gè)運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu):公告牌(BB)。BB 作為 一個(gè)從配置文件中派生出來(lái)的共享信息庫(kù)。BB駐留在每個(gè)參與到由配置文件指定的應(yīng)用程序的BEA TUXEDO 的服務(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由BEA TUXEDO核心例程(對(duì)應(yīng)用開(kāi)發(fā)者透明)訪問(wèn),由核心例程讀/修改BB庫(kù)。這個(gè)信息庫(kù)提供BEA TUXEDO完成動(dòng)態(tài)

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

22、代理進(jìn)程,服務(wù)器通過(guò)注冊(cè)參加到該應(yīng)用中。作為客戶方通訊的一部分,事務(wù)管理器訪問(wèn)BB,然后選擇服務(wù)器,接著,服務(wù)器消息隊(duì)列的地址被返回,客戶方的請(qǐng)求被馬上傳送到合適的隊(duì)列等待服務(wù)為它進(jìn)行處理。 名字服務(wù)/位置透明性BB作為BEA TUXEDO應(yīng)用程序的名字服務(wù)器,復(fù)制到每個(gè)參與的結(jié)點(diǎn)上。為了便于快速訪問(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)容為 客戶請(qǐng)求選擇路由,為服務(wù)請(qǐng)求選擇優(yōu)先級(jí)。編程員把應(yīng)用程序編成對(duì)邏輯入口項(xiàng)(稱有名服務(wù))的函數(shù)調(diào)用。事務(wù)管理器把這些邏輯請(qǐng)求映射到服

23、務(wù)器結(jié)點(diǎn)/服務(wù)器進(jìn)程環(huán)境內(nèi)指定的服務(wù)實(shí)例。 數(shù)據(jù)依賴型路由數(shù)據(jù)依賴型路由是根據(jù)數(shù)據(jù)緩沖區(qū)中一個(gè)指定域的值,把一個(gè)服務(wù)請(qǐng)求映射到一個(gè)指定的服務(wù)器組的機(jī)制。因?yàn)锽EA TUXEDO服務(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ū)。用戶可用事務(wù)管理器進(jìn)行路由選擇,而不用把特定分區(qū)信息編碼成訪問(wèn)帳號(hào)的應(yīng)用代碼。事實(shí)上,事務(wù)管理器查看指定的數(shù)據(jù)值,參考存儲(chǔ)在BB中的路由信息,然后把請(qǐng)求發(fā)送到能在正確數(shù)據(jù)分區(qū)上操作的服務(wù)。如果用戶需要改變數(shù)據(jù)庫(kù)分區(qū)(把一個(gè)分區(qū)移到一個(gè)

24、新服務(wù)器上,或在已有分區(qū)實(shí)例上改變帳號(hào)分布),那么,他只需改變事務(wù)管理器的路由信息,應(yīng)用程序的代碼不受影響。圖5 數(shù)據(jù)依賴 型路 由:帳號(hào)操作的請(qǐng)求與數(shù)據(jù)分區(qū)是獨(dú)立的,事務(wù)管理器訪問(wèn)BB路由表信息,把請(qǐng)求映射到訪問(wèn)相應(yīng)分區(qū)的服務(wù)器組,然后返回該組指定服務(wù)的綁定。 負(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由不同

25、的服務(wù)器提供,每個(gè)服務(wù)器有一個(gè)基于當(dāng)前排隊(duì)請(qǐng)求的負(fù)載值。事務(wù)管理器決定哪一個(gè)服務(wù)器提供服務(wù),哪一個(gè)服務(wù)是負(fù)載最小。事務(wù)管理器將在一個(gè)給定結(jié)點(diǎn)內(nèi)或在提供服務(wù)的若干結(jié)點(diǎn)上,進(jìn)行負(fù)載平衡。 優(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)

26、先級(jí)決定的,而不是根據(jù)請(qǐng)求在隊(duì)列中的位置。為了防止低優(yōu)先級(jí)請(qǐng)求總是得不到服務(wù),每隔十個(gè)請(qǐng)求,就按FIFO次序進(jìn)行一次請(qǐng)求選擇。 穩(wěn)固的運(yùn)行環(huán)境事務(wù)管理器包括許多支持應(yīng)用可用性的特征,如進(jìn)程可用性檢查、超時(shí)檢查、自動(dòng)服務(wù)器重啟和恢復(fù)過(guò)程、用戶可定義的恢復(fù)過(guò)程。事務(wù)管理器不僅僅控制應(yīng)用程序的活動(dòng)流而且能確保其流暢有效的操作。 安全性事務(wù)管理器通過(guò)一個(gè)結(jié)構(gòu)化的安全性接口提供應(yīng)用服務(wù)的驗(yàn)證、授權(quán)和訪問(wèn)控制。該接口概括了Kerberos安全模型,允許Kerberos或類(lèi)似的最終用戶驗(yàn)證機(jī)制與應(yīng)用集成。用戶能用訪問(wèn)控制列表保護(hù)服務(wù)、隊(duì)列或事件免遭未授權(quán)的訪問(wèn)。 分

27、布式事務(wù)處理分布式事務(wù)處理(DTP)能力能保證跨幾個(gè)場(chǎng)地訪問(wèn)的數(shù)據(jù)和由不同數(shù)據(jù)庫(kù)產(chǎn)品管理的數(shù)據(jù)的完整性。事務(wù)管理器協(xié)調(diào)分布式事務(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/Open XA接口,進(jìn)行不同 資源管理器之間的通訊。該接口已被X/Open接納為分布式事務(wù)控制的標(biāo)準(zhǔn)接口。因?yàn)楦咝阅芎褪聞?wù)流量對(duì)OLTP系統(tǒng)產(chǎn)品是關(guān)鍵因素,所以事務(wù)管理器DTP軟件使用了最小化磁盤(pán)寫(xiě)的算法。在其他屬性中,

28、事務(wù)管理器DTP開(kāi)發(fā)了一些眾所周知的技術(shù)如協(xié)調(diào)者遷移、只讀和一階段提交優(yōu)化。事務(wù)管理器由幾個(gè)關(guān)鍵子系統(tǒng)支持,這些子系統(tǒng)擴(kuò)展了BEA TUXEDO客戶/服務(wù)器功 能和與異構(gòu)應(yīng)用系統(tǒng)的互操作性。下面的幾個(gè)段落將描述這些關(guān)鍵子系統(tǒng):管理BEA TUXEDO對(duì)分布式應(yīng)用管理的關(guān)鍵性問(wèn)題給出了一個(gè)結(jié)構(gòu)化的解決方案。BEA TUXEDO的管理接口包括一個(gè)綜合性的命令行/腳本接口,一個(gè)編程接口和一個(gè)管理信息庫(kù)(MIB),它們把BEA TUXEDO實(shí)現(xiàn)成一個(gè)更大管理環(huán)境中的受控應(yīng)用程序。一 個(gè)易用的基于GUI 的管理應(yīng)用程序可利用這些管理接口,在BEA TUXEDO環(huán)境上提供 了高層控制。BEA TUXEDO

29、資源,從 高層的域?qū)傩韵蛳仑灤?一個(gè)單服務(wù)器進(jìn)程的特 性,支 持圖形化表示和拖放功能。集中式的應(yīng)用定義事務(wù)管理器使得應(yīng)用管理員可在一個(gè)文件中定義組成BEA 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)重配置用戶可動(dòng)態(tài)啟動(dòng)或停止服務(wù);用戶可選擇可用的服務(wù)。用戶可在一個(gè)配置中增加新的機(jī)器、組、服務(wù)器和服務(wù)。另外,事務(wù)管理器可用不同的參數(shù)如超時(shí)故障等,使得一個(gè)無(wú)法

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

31、其它應(yīng)用程序一樣,BEA Tuxedo提供了一個(gè)其于C語(yǔ)言的編程接口,即應(yīng)用程序事務(wù)監(jiān)控接口ATMI,這套接口很容易使用,以便用于開(kāi)發(fā)客戶程序和服務(wù)程序。除了C語(yǔ)言接口外,BEA Tuxedo還提供了COBOL接口。2.1.1 創(chuàng)建服務(wù)程序 概述 盡管開(kāi)發(fā)者使用ATMI編程接口來(lái)創(chuàng)建BEA Tuxedo客戶程序和服務(wù)程序,但服務(wù)程序不全部由開(kāi)發(fā)者來(lái)編寫(xiě),開(kāi)發(fā)者只需寫(xiě)一些稱為服務(wù)的商業(yè)函數(shù),封裝業(yè)務(wù)邏輯,然后和BEA Tuxedo的一些二進(jìn)制程序聯(lián)編成一個(gè)可執(zhí)行的服務(wù)程序。BEA Tuxedo服務(wù)程序啟動(dòng)后,它總是保持運(yùn)行狀態(tài),只到接收到一個(gè)shutdown消息為止。一個(gè)典型的BE

32、A Tuxedo服務(wù)程序在shutdown或reboot之前都在執(zhí)行著數(shù)千個(gè)服務(wù)。 服務(wù)的運(yùn)行流程為了更好的了解服務(wù)端的所有任務(wù)以編寫(xiě)服務(wù)端應(yīng)用,有必要重新認(rèn)識(shí)服務(wù)端在C/S模式中扮演的角色。首先,服務(wù)是系統(tǒng)資源的聯(lián)系點(diǎn)。例如,一個(gè)數(shù)據(jù)庫(kù)服務(wù)聯(lián)系實(shí)際數(shù)據(jù)庫(kù)并對(duì)其進(jìn)行查詢和修改。為有效進(jìn)行,應(yīng)建立一個(gè)數(shù)據(jù)庫(kù)連接。 其次,服務(wù)必須發(fā)布系統(tǒng)內(nèi)可以訪問(wèn)的交易,保證客戶端可以知道把請(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ī)則和邏輯,可能還包括訪問(wèn)數(shù)據(jù)庫(kù)和返回結(jié)果數(shù)據(jù)緩沖。當(dāng)系

33、統(tǒng)管理員需要關(guān)閉系統(tǒng),可以通過(guò)系統(tǒng)管理工具將關(guān)閉系統(tǒng)的消息發(fā)給服務(wù)。服務(wù)完成所有交易,取消交易發(fā)布,關(guān)閉資源連接然后結(jié)束。 服務(wù)程序的任務(wù)(1) 在BEA Tuxedo服務(wù)程序啟動(dòng)時(shí),執(zhí)行tpsvrinit()函數(shù),可以在里面打開(kāi)一些如數(shù)據(jù)庫(kù)之類(lèi)的資源供以后使用;(2) 在BEA Tuxedo服務(wù)程序關(guān)閉時(shí),執(zhí)行tpsvrdown()函數(shù),可以在里面關(guān)閉tpsvrinit()中打開(kāi)的資料;(3) BEA Tuxedo服務(wù)程序以服務(wù)的形式來(lái)響應(yīng)客戶程序的請(qǐng)求,客戶程序不是通過(guò)名字來(lái)調(diào)用服務(wù)程序的,而是調(diào)用服務(wù),客戶程序不知道處理它請(qǐng)求的服務(wù)程序的位置;(4) 服務(wù)程序調(diào)用tpret

34、urn()函數(shù)來(lái)結(jié)束服務(wù)請(qǐng)求,并返回一個(gè)緩沖區(qū),必要時(shí),將它傳給客戶程序; 注:如果是在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)行,基本上不需要人工干預(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)返回給客戶端或前轉(zhuǎn)到另一交易。函數(shù)tpreturn()用來(lái)結(jié)束交易將回應(yīng)數(shù)據(jù)緩沖發(fā)給客

35、戶端。函數(shù)tpforward()將交易前轉(zhuǎn)給另一個(gè)交易,由其負(fù)責(zé)回應(yīng)原來(lái)的客戶端。下圖是tpreturn()的示意圖。tpreturn()設(shè)計(jì)來(lái)代替常規(guī)的return(),結(jié)束絕大多數(shù)函數(shù)。它將回應(yīng)數(shù)據(jù)緩沖返回請(qǐng)求的客戶端,控制權(quán)返回給服務(wù)程序的標(biāo)準(zhǔn)main()(由TUXEDO提供)。tpreturn()使用下列參數(shù):第一個(gè)值表示交易是否成功,有3種可能:² TPSUCCESS交易完全成功,如果是一個(gè)會(huì)話,TPEV_SVCSUCC被生成² TPFAIL交易失敗,tperrno將被設(shè)成TPESVCFAIL。如果是事務(wù)模式,事務(wù)被標(biāo)志成abort-only,如果是會(huì)話,TPEV

36、_SVCFAIL被生成。² TPEXIT與TPFAIL類(lèi)似,但服務(wù)會(huì)中斷,如果服務(wù)設(shè)成可以重啟動(dòng),則可以由TUXEDO系統(tǒng)將其重啟動(dòng)。第二個(gè)值是應(yīng)用定義返回碼,此處使交易可以發(fā)送一個(gè)整形代碼到客戶端,給出交易處理結(jié)果的詳細(xì)信息。該值與/T系統(tǒng)無(wú)關(guān),通過(guò)全程變量tpurcode送到客戶端程序。第三個(gè)值是回應(yīng)數(shù)據(jù)緩沖的的指針第四個(gè)值是回應(yīng)數(shù)據(jù)緩沖的長(zhǎng)度(僅緩沖類(lèi)型為CARRY時(shí)需要)第五個(gè)值是標(biāo)志位,通常不用 初始化和結(jié)束服務(wù)tpsvrinit()和tpsvrdone()分別用來(lái)啟動(dòng)和關(guān)閉服務(wù)。如果應(yīng)用不提供這兩個(gè)函數(shù),可以使用替代函數(shù)。tpsvrinit()用tpopen

37、()缺省打開(kāi)RM連接。tpsvrdone()用tpclose()關(guān)閉RM連接。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ú)返回值。 創(chuàng)建(編譯)服務(wù)當(dāng)C語(yǔ)言的交易程序編碼完后,需要連接正確的庫(kù)并編譯。使用buildserver可以使該過(guò)程容易一點(diǎn)。該命令引用了C語(yǔ)言編譯器并按正確的次序連接TUXEDO系統(tǒng)的庫(kù),連接TUXEDO生成的main()等。buildserver還用-s參數(shù)產(chǎn)生合適的交易

38、名/函數(shù)名映射表。要使用buildserver,必須先正確設(shè)定環(huán)境變量TUXDIR,PATH,LD_LIBRARY_PATH。命令語(yǔ)法如下:buildserver -v o executable -s service2,service3:func -f source/object -l object/library file例:buildserver s DEPOSIT o TLR f TLR.o f appinit.o參數(shù)解釋如下:-o生成的可執(zhí)行文件名-f需要在連接TUXEDO庫(kù)之前傳給編譯器的文件名。如有多于一個(gè)的文件名,名字應(yīng)用空格分隔并用引號(hào)引起。也可以使用多個(gè)-f參數(shù)。-l需要在連

39、接TUXEDO庫(kù)之前傳給編譯器的文件名。語(yǔ)法同上。-v編譯過(guò)程顯示。-b指定SHM或MP模式。如無(wú)此項(xiàng),兩種模式都包括;使用此項(xiàng)可以使生成的可執(zhí)行文件小一點(diǎn)-r連接此處指出的RM庫(kù)。該RM的名字必須含在$TUXDIR/udataobj/RM文件中。 調(diào)試和錯(cuò)誤處理對(duì)于服務(wù)程序的調(diào)試,確實(shí)是一件非常令人頭痛的事.在Unix環(huán)境下,目前還找不到很好的方法,一般經(jīng)常使用的方法是”print,Userlog”跟蹤法,但是這種方法太累了.因此,有人想出了在windows環(huán)境下跟蹤調(diào)試,發(fā)現(xiàn)沒(méi)有任何錯(cuò)誤后再放到UNIX環(huán)境進(jìn)行編譯,并正式使用.目前,我們公司采用的就是這種調(diào)試方法,在wind

40、ows環(huán)境下(C+ Builder)編寫(xiě)一個(gè)tuxedo模擬測(cè)試服務(wù)程序,使其能正確的識(shí)別客戶端調(diào)用的服務(wù),并正確的調(diào)用相應(yīng)的服務(wù). 程序范例(1) 源代碼文件名: simpserv.c#include <stdio.h>#include <ctype.h>#include <atmi.h>/* TUXEDO Header File */#include <userlog.h>/* TUXEDO Header File */* 當(dāng)服務(wù)器啟動(dòng)時(shí),在處理請(qǐng)求之前,tpsvrinit被執(zhí)行,這個(gè)不是必須的,對(duì)應(yīng)的函數(shù)是shutdown*/

41、#if defined(_STDC_) | defined(_cplusplus)tpsvrinit(int argc, char *argv)#elsetpsvrinit(argc, argv)int argc;char *argv;#endif/* 當(dāng)argc, argv沒(méi)有被使用時(shí),一些系統(tǒng)會(huì)發(fā)了警告 */argc = argc;argv = argv;/* userlog用于將TUXEDO消息寫(xiě)到日志文件中 */userlog("Welcome to the simple server");return(0);/* TOUPPER真正處理客戶請(qǐng)求,它接收的參數(shù)是一個(gè)

42、緩沖區(qū)指針 */#ifdef _cplusplusextern "C"#endifvoid#if defined(_STDC_) | defined(_cplusplus)TOUPPER(TPSVCINFO *rqst)#elseTOUPPER(rqst)TPSVCINFO *rqst;#endifint i;for(i = 0; i < rqst->len-1; i+)rqst->datai = toupper(rqst->datai);/* 返回轉(zhuǎn)換后的類(lèi)型緩沖區(qū) */tpreturn(TPSUCCESS, 0, rqst->data, 0

43、L, 0);(2) 程序說(shuō)明語(yǔ)句說(shuō)明whole file整個(gè)服務(wù)程序不提供main函數(shù),在build時(shí),由BEA Tuxedo系統(tǒng)提供。tpsvrinit()在服務(wù)器初始化即處理請(qǐng)求之前被調(diào)用。若沒(méi)有提供該函數(shù),BEA Tuxedo系統(tǒng)會(huì)提供一個(gè)缺省的,它向USERLOG中寫(xiě)一條消息,說(shuō)明服務(wù)器已經(jīng)被啟動(dòng)。userlog(3c)是系統(tǒng)提供的一個(gè)寫(xiě)日志的方法。TOUPPER()simpserv提供的唯一一個(gè)服務(wù),它接收一個(gè)TPSVCINFO結(jié)構(gòu),它包含了要被轉(zhuǎn)換成大寫(xiě)的字符串。for loopBEA Tuxedo系統(tǒng)的循環(huán),用于逐一轉(zhuǎn)換。tpreturn()(3) 程序編譯: $buildser

44、ver o simpserv f simpserv.c s TOUPPER(s TOUPPER指明了在服務(wù)器啟動(dòng)時(shí)需要提供的服務(wù))2.1.2 創(chuàng)建客戶程序 概述創(chuàng)建BEA Tuxedo的客戶程序與在C和C+編程語(yǔ)言中創(chuàng)建其它應(yīng)用程序一樣,BEA Tuxedo提供了一個(gè)其于C語(yǔ)言的編程接口,即應(yīng)用程序事務(wù)監(jiān)控接口ATMI,這套接口很容易使用,以便用于開(kāi)發(fā)客戶程序和服務(wù)程序。除了C語(yǔ)言接口外,BEA Tuxedo還提供了COBOL接口。 客戶端在C/S模式中的作用為了更好的了解客戶端的所有任務(wù)以編寫(xiě)客戶端應(yīng)用,有必要重新認(rèn)識(shí)客戶端在C/S模式中扮演的角色。 首先,客戶端

45、是用戶界面。意思是當(dāng)用戶在系統(tǒng)上用程序進(jìn)行一次操作的整個(gè)過(guò)程就是一個(gè)客戶端過(guò)程。前端過(guò)程是對(duì)客戶端的另一個(gè)描述??蛻舳说氖滓蝿?wù)就是獲得執(zhí)行操作應(yīng)該得到的數(shù)據(jù)。一旦客戶端得到了應(yīng)有的信息,應(yīng)該將數(shù)據(jù)按服務(wù)能夠識(shí)別并適合傳輸?shù)母袷酱虬?然后,向服務(wù)端發(fā)送請(qǐng)求并等待回應(yīng)。收到回應(yīng)數(shù)據(jù)后,將其按一定格式返回給終端用戶。 客戶端開(kāi)發(fā)過(guò)程客戶端程序的設(shè)計(jì)和實(shí)現(xiàn)可以被分成2部分考慮:用戶處理過(guò)程和TUXEDO功能部分。下文的客戶端程序只描述了TUXEDO功能部分。利用TUXEDO的ATMI API調(diào)用可以做到:基本的TUXEDO調(diào)試技巧(tperrno,tpstrerror,userlog

46、)TUXEDO進(jìn)程管理(tpinit,tpterm)基本數(shù)據(jù)緩沖管理(tpalloc,tprealloc,tpfree)基本通訊(tpcall,tpacall,tpgetrply)客戶程序一般執(zhí)行如下任務(wù):1) 用tpchkauth()決定加入一個(gè)應(yīng)用程序所需的安全級(jí)別??赡艹霈F(xiàn)的響應(yīng)包括:沒(méi)有安全級(jí)別,應(yīng)用程序口令,應(yīng)用程序授權(quán),訪問(wèn)控制列表,連接級(jí)加密,公鑰加密,審計(jì)。這些可以根據(jù)你的需求進(jìn)行選擇;在實(shí)際的應(yīng)用中很多的軟件開(kāi)發(fā)商通常對(duì)這一步都不做處理。2) 調(diào)用tpinit()來(lái)連接到一個(gè)BEA Tuxedo應(yīng)用程序,所需的安全信息作為tpinit()的參數(shù)傳給了應(yīng)用程序;3) 執(zhí)行服務(wù)請(qǐng)

47、求;4) 調(diào)用tpterm()來(lái)斷開(kāi)和BEA Tuxedo應(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ù)userlog()重定向輸出文件為ULOG.mmddyy。使用方法同printf()。該函數(shù)每次輸出都寫(xiě)硬盤(pán),這樣在系統(tǒng)失敗時(shí)也能保留調(diào)試信息。代碼范例ret = tpterm();if ( ret = -1 )printf(“Error in e

48、xiting applicationn”);usrlog(“ATMI error logged %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()而沒(méi)有調(diào)用tpterm(),則tuxedo系統(tǒng)會(huì)認(rèn)為該進(jìn)程一直處于活動(dòng)狀態(tài),這樣的話可能會(huì)因?yàn)榉?wù)進(jìn)程達(dá)到系統(tǒng)允許的上限而導(dǎo)致系統(tǒng)的崩潰.int tpinit(TPINIT *tpinf

49、o)客戶端通過(guò)調(diào)用tpinit()與應(yīng)用連接,進(jìn)行交互,有以下事件發(fā)生:調(diào)用安全接口檢查客戶端是否需要認(rèn)證連接BB,使進(jìn)一步的ATMI函數(shù)得到信息使BBL了解BB中已經(jīng)存在請(qǐng)求建立客戶端消息隊(duì)列使服務(wù)可以發(fā)回返回信息,系統(tǒng)可以送出廣播通知等.錯(cuò)誤時(shí)返回-1,可能由以下原因引起:² TPEINVAL參數(shù)錯(cuò)誤² TPENOENTBB無(wú)空間² TPEPERM無(wú)連接權(quán)限² TPEPROTO協(xié)議錯(cuò)誤 被服務(wù)調(diào)用int tpterm()客戶端調(diào)用tpterm()切斷與應(yīng)用的連接,結(jié)束了客戶端的TUXEDO進(jìn)程,該過(guò)程發(fā)生以下事件:BB入口刪除,使BBL知道客戶端已經(jīng)

50、離開(kāi)客戶端離開(kāi)BB,客戶端的信號(hào)量被移除客戶端消息隊(duì)列被移除錯(cuò)誤時(shí)返回-1,可能由以下原因引起:TPEPROTO協(xié)議錯(cuò)誤 被服務(wù)調(diào)用TPESYSTEM/T系統(tǒng)下錯(cuò)誤TPEOS操作系統(tǒng)錯(cuò) 根據(jù)tpinit()和tpterm()在客戶程序中不同位置的調(diào)用,可以把tuxedo的進(jìn)程連接分為長(zhǎng)連接和短連接兩種.長(zhǎng)連接是指在程序開(kāi)始的時(shí)候調(diào)用tpinit()建立服務(wù)連接,在程序中止的時(shí)候調(diào)用tpterm()中止服務(wù)連接.這樣做的好處是,當(dāng)用戶頻繁的進(jìn)行業(yè)務(wù)操作時(shí),不用頻繁的進(jìn)行進(jìn)程連接,大大的縮短了操作時(shí)間,提高了程序的執(zhí)行效率.但是,這也一個(gè)缺點(diǎn),那就是,只有用戶不從客戶程序中退出來(lái),不管做不做業(yè)務(wù),

51、都會(huì)在系統(tǒng)中占用一個(gè)進(jìn)程連接,從而會(huì)影響其他用戶的連接.短連接指的是用戶每做一次業(yè)務(wù),都需要調(diào)用tpinit(),業(yè)務(wù)完成后調(diào)用tpterm().這樣做的好處是,1000個(gè)終端用戶和10000個(gè)終端用戶同時(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)客戶程序5分鐘(這個(gè)值可以自定義)沒(méi)有向服務(wù)程序發(fā)送任何服務(wù)請(qǐng)求,則調(diào)用tpterm()斷開(kāi)服務(wù)連接.僅僅這樣還是不行的,我們還必須在客戶程序向服務(wù)程序發(fā)送業(yè)務(wù)請(qǐng)求之前,首先判斷進(jìn)程連接是

52、否斷開(kāi),如果斷開(kāi),則重新連接. 數(shù)據(jù)緩沖管理在Bea Tuxedo系統(tǒng)中的所有通信過(guò)程都是通過(guò)類(lèi)型緩沖區(qū)來(lái)完成的,Bea Tuxedo系統(tǒng)提供了大量的類(lèi)型緩沖區(qū)來(lái)供開(kāi)發(fā)者使用。所有類(lèi)型緩沖區(qū)都必須通過(guò)Bea Tuxedo的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記錄的多域組織。² FML無(wú)固定結(jié)構(gòu)的自定義

53、緩沖。tpalloc(),tprealloc()在出錯(cuò)時(shí)返回空值,可能由以下原因引起:² TPEOS操作系統(tǒng)² TPEINVAL非法或不正確的類(lèi)型² TPESYSTEMTUXEDO之下的錯(cuò)誤統(tǒng)一定義的類(lèi)型緩沖區(qū)可以使它們?cè)诳缭讲煌W(wǎng)絡(luò)、不同協(xié)議、不同CPU構(gòu)架以及不同操作系統(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 <stdio.h>#include "atmi.h"

54、;/* TUXEDO的頭文件 */#if defined(_STDC_) | defined(_cplusplus)main(int argc, char *argv)#elsemain(argc, argv)int argc;char *argv;#endifchar *sendbuf, *rcvbuf;long sendlen, rcvlen;int ret;if(argc != 2) (void) fprintf(stderr, "Usage: simpcl stringn");exit(1);/* 作為一個(gè)客戶過(guò)程連接到System/T */if (tpinit(T

55、PINIT *) NULL) = -1) (void) fprintf(stderr, "Tpinit failedn");exit(1);sendlen = strlen(argv1);/* 分配一個(gè)供請(qǐng)求響應(yīng)使用的STRING 緩沖區(qū) */if(sendbuf = (char *) tpalloc("STRING", NULL, sendlen+1) = NULL) (void) fprintf(stderr,"Error allocating send buffern");tpterm();exit(1);if(rcvbuf = (char *) tpalloc("STRING", NULL, sendlen+1) = NULL) (void) fprintf(stderr,"Error allocating receive buffern");tpfree(sendbuf);tpterm();exit(1);(void) strcpy

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論