專利名稱:客戶/服務(wù)器計算中的服務(wù)器處理設(shè)備、方法和程序產(chǎn)品的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及客戶/服務(wù)器(也稱為“分布式”)計算領(lǐng)域,其中一個計算設(shè)備(“客戶”)請求另一計算設(shè)備(“服務(wù)器”)完成一部分客戶工作??蛻艉头?wù)器兩者也可都位于同一物理計算設(shè)備上。
過去數(shù)年來客戶/服務(wù)器計算在信息技術(shù)領(lǐng)域中愈來愈重要。這種分布式計算允許一個機(jī)器將其一部分工作分派給另一個可能更適合于完成該工作的機(jī)器。例如,服務(wù)器可能是一個功能強(qiáng)的運行著管理大量數(shù)據(jù)的數(shù)據(jù)庫程序的計算機(jī),而客戶只是一個桌上個人計算機(jī)(PC),它向數(shù)據(jù)庫請求信息以便用于其本地程序。
使用眾所周知的稱為面向?qū)ο缶幊?OOP)的計算機(jī)編程技術(shù)后,更增強(qiáng)了客戶/服務(wù)器計算的優(yōu)勢,OOP允許客戶和服務(wù)器位于不同(異構(gòu))“平臺”上。平臺是機(jī)器用于完成其工作的特定硬件/軟件/操作系統(tǒng)/通信協(xié)議的組合。OOP允許客戶應(yīng)用程序和服務(wù)器應(yīng)用程序各在它們自己的平臺上運行而不必操心客戶應(yīng)用程序的工作請求如何送出并被服務(wù)器應(yīng)用程序所接收。類似地,服務(wù)器應(yīng)用程序不必操心OOP系統(tǒng)如何接收、翻譯和送回服務(wù)器應(yīng)用程序處理結(jié)果至原請求客戶應(yīng)用程序。
OOP技術(shù)如何與異構(gòu)客戶/服務(wù)器系統(tǒng)結(jié)合為整體的細(xì)節(jié)在美國專利號5,440,744和歐洲專利公開申請EP 0677,943 A2中得到解釋。此處包括這后兩項公開以用作參考。然而,下面將給出基本結(jié)構(gòu)的例子,便于前后關(guān)聯(lián)地理解本發(fā)明環(huán)境。
如
圖1中所示,客戶計算機(jī)10(例如它可以是在其中裝有IBM OS/2操作系統(tǒng)的個人計算機(jī))具有在其操作系統(tǒng)上運行的應(yīng)用程序40(“IBM”和“OS/2”是國際商業(yè)機(jī)器公司的注冊商標(biāo))。應(yīng)用程序40周期地要求在服務(wù)器計算機(jī)20上完成工作及/或自服務(wù)器20送回數(shù)據(jù)以備用應(yīng)程序40隨后使用。例如,服務(wù)器計算機(jī)20可以是在IBM的MVS操作系統(tǒng)上運行的強(qiáng)功能大型計算機(jī)(“MVS”也是IBM公司的注冊商標(biāo))。對于本發(fā)明的目的而言,不論要服務(wù)器執(zhí)行通信服務(wù)的請求是由第一個應(yīng)用程序40通過用戶交互所提出的,或是在程序運行期間應(yīng)用程序40與用戶交互無關(guān)地運行并自動地提出請求,都不重要。
當(dāng)客戶計算機(jī)10希望提出請求要服務(wù)器計算機(jī)20服務(wù)時,第一應(yīng)用程序40將服務(wù)請求通知第一邏輯裝置50。例如它可將遠(yuǎn)距過程名稱連同一系列輸入和輸出參數(shù)送至第一邏輯裝置而做到這點。然后第一邏輯裝置50處理下一任務(wù)參照存儲于存儲設(shè)備60中的可用通信服務(wù)的定義建立與第二計算機(jī)20的必要通信。所有可能的服務(wù)定義為對象類70的聚合框架,而這些類都從單個對象類派生而來。以此方式定義這些服務(wù),在性能和可重用性方面提供很多優(yōu)點。
為建立與服務(wù)器20的必要通信,第一邏輯裝置50確定需要使用框架中哪個對象類,然后在服務(wù)器上建立該對象的實例,向該對象發(fā)送一個消息以使該對象調(diào)用其方法中的一個。這導(dǎo)致通過連接裝置80與服務(wù)器計算機(jī)20建立連接,及隨后向第二邏輯裝置90發(fā)送請求。
第二邏輯裝置90接著將請求往前送至在服務(wù)器計算機(jī)20上運行的第二應(yīng)用程序100(今后稱為服務(wù)應(yīng)用程序),以便服務(wù)應(yīng)用程序100能完成該請求所要求的具體任務(wù),例如運行一個數(shù)據(jù)檢索過程。一旦完成此任務(wù),服務(wù)應(yīng)用程序可能需將結(jié)果送回至第一計算機(jī)10。在執(zhí)行請求的任務(wù)期間及當(dāng)需將結(jié)果送回至第一計算機(jī)10時,服務(wù)應(yīng)用程序100與第二邏輯裝置90交互作用。第二邏輯裝置90建立對象實例并調(diào)用這些對象的合適方法,當(dāng)由服務(wù)應(yīng)用程序100要求時,從存儲于存儲設(shè)備110中的對象類的聚合框架中建立對象實例。
使用上述技術(shù)時,客戶應(yīng)用程序40不會暴露給通信體系結(jié)構(gòu)。此外,服務(wù)應(yīng)用程序100是通過其標(biāo)準(zhǔn)環(huán)境機(jī)制被調(diào)用的,它不知道是被遠(yuǎn)程調(diào)用的。
對象管理組(OMG)是一個國際性聯(lián)合組織,從事于帶有分布式對象(如圖1中所示)的異構(gòu)平臺上客戶/服務(wù)器計算的各方面工作。OMG已刊印標(biāo)準(zhǔn),客戶計算機(jī)(例如10)可據(jù)以與服務(wù)器計算機(jī)(例如20)通信(以O(shè)OP形式)。作為這些標(biāo)準(zhǔn)的一部分,定義了一個對象請求代理程序(稱為CORBA-公共對象請求代理體系結(jié)構(gòu)),它在客戶和服務(wù)器機(jī)器之間提供面向?qū)ο蟮臉蛄?。ORB將客戶及服務(wù)器應(yīng)用程序與面向?qū)ο髮嵤┘?xì)節(jié)分離,完成第一和第二邏輯裝置50和90及連結(jié)裝置80的至少部分工作。
作為CORBA軟件結(jié)構(gòu)的一部分,OMG提出了與“事務(wù)”有關(guān)的標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)稱為OTS或?qū)ο笫聞?wù)服務(wù)。例如參閱CORBA對象事務(wù)服務(wù)規(guī)定1.0,OMG文件94.8.4。計算機(jī)實現(xiàn)的事務(wù)處理系統(tǒng)用于不少工業(yè)中的重要業(yè)務(wù)任務(wù)。一個事務(wù)規(guī)定單個工作單元,它或者應(yīng)該完全地完成,或者應(yīng)該不加操作地完全地清除。例如,在用戶自其中提取鈔票的銀行自動取款機(jī)的情況下,發(fā)放鈔票、減少機(jī)器中可用現(xiàn)鈔的結(jié)算值和減少用戶的銀行結(jié)算值這些操作必須或者全部執(zhí)行或者一項也不執(zhí)行。附屬操作中有一項失敗將導(dǎo)致記錄和實際事件之間不一致。
分布式事務(wù)處理涉及能影響不止一個物理或邏輯位置處的資源的事務(wù)。在上述例子中,一個事務(wù)影響到當(dāng)?shù)刈詣尤】顧C(jī)管理的資源以及銀行主計算機(jī)管理的銀行結(jié)算。這些事務(wù)涉及一個具體客戶計算機(jī)(例如10)在一系列由服務(wù)器處理的客戶請求上與一個具體服務(wù)器計算機(jī)(例如20)通信。OMG的OTS負(fù)責(zé)協(xié)調(diào)這些分布式事務(wù)。
通常,一個在客戶過程上運行的應(yīng)用程序啟動一個可能調(diào)用多個不同服務(wù)器的事務(wù),而這些服務(wù)器中每一個啟動一個服務(wù)器過程以便按照事務(wù)中包含的指令改變其本地數(shù)據(jù)庫。事務(wù)結(jié)束時或者提交該事務(wù)(因而所有服務(wù)器最后完成它們本地數(shù)據(jù)庫的改變),或者放棄該事務(wù)(因而所有服務(wù)器“滾回”或忽視它們本地數(shù)據(jù)庫的改變)。為在事務(wù)處理期間與服務(wù)器通信(例如指示它們將事務(wù)中它們的部分或者提交或者放棄),所涉及的過程中的一個必須為該事務(wù)維持狀態(tài)數(shù)據(jù)。這通常涉及用于建立一系列事務(wù)狀態(tài)對象的過程,這些對象中之一是協(xié)調(diào)對象,它相對于不同服務(wù)器而協(xié)調(diào)事務(wù)。
圖2顯示一種常規(guī)OTS實施方式,它是由國際商業(yè)機(jī)器公司開發(fā),并包括于1997年5月所宣布的部件代理系列(IBM公司的注冊商標(biāo))產(chǎn)品中。希望啟動一個事務(wù)(例如自銀行帳戶中提取現(xiàn)款)的客戶過程21需要尋找一個能建立和保持那些將維持事務(wù)狀態(tài)的事務(wù)對象的過程。由于現(xiàn)代趨勢是建立“瘦”的客戶(因而只具有最少的功能),因此客戶過程21通常沒有能力本地維持事務(wù)對象,必需尋找能滿足此目的的服務(wù)器過程。
根據(jù)現(xiàn)有技術(shù)的方法,OTS(或其它服務(wù),例如CORBA生命周期服務(wù))找到一個在其上建立事務(wù)狀態(tài)對象(包括協(xié)調(diào)對象223,控制對象221和結(jié)束對象222)的服務(wù)器過程。根據(jù)此現(xiàn)有技術(shù)總是挑選同一服務(wù)器過程(圖2中服務(wù)器A過程22)。找到服務(wù)器A過程22后,客戶過程21向服務(wù)器A過程22發(fā)送一個消息(帶圓圈數(shù)1的箭頭)以指令服務(wù)器A過程22建立事務(wù)狀態(tài)對象??刂茖ο?21(在OTS中為CosTransactions∷Control)提供對另兩個事務(wù)狀態(tài)對象的訪問。結(jié)束對象(在OTS中為CosTransactions∷Terminator)用于結(jié)束事務(wù)。協(xié)調(diào)對象223(在OTS中為CosTransactions∷Coordinator)在本地存儲器225中維持一個資源對象(例如銀行帳號對象224,231)(在OTS中為CosTransactions∷Resource)的表,這些資源對象在事務(wù)期間已將它們的相應(yīng)數(shù)據(jù)更新過。此表是需要的,以便協(xié)調(diào)對象223可在事務(wù)結(jié)束時一致性地調(diào)用它們從而或者實現(xiàn)它們的事務(wù)改變(將它們的本地數(shù)據(jù)作最后改變)或者滾回這些改變(將本地數(shù)據(jù)恢復(fù)至事務(wù)開始前的狀態(tài))。例如,當(dāng)由于資源中的一個不能恰當(dāng)?shù)毓ぷ鞫故聞?wù)不能恰當(dāng)?shù)亟Y(jié)束時,滾回是必需的。
接著服務(wù)器A過程22建立事務(wù)狀態(tài)對象(221,222,223)并向客戶21發(fā)送一個包含事務(wù)上下文的回答(帶圓圈數(shù)2的箭頭)。然后客戶21向服務(wù)器B過程23(該過程包括客戶過程21希望從中提取現(xiàn)款的銀行帳戶對象231)發(fā)送一個借方銀行帳戶命令(帶圓圈數(shù)3的箭頭)。此后一命令帶由服務(wù)器A過程22向客戶21提供的事務(wù)上下文。以此方式,過程23中的銀行帳戶對象231可向協(xié)調(diào)對象223登記本身(帶圓圈數(shù)4的箭頭)以使銀行帳戶對象231可被命令(帶圓圈數(shù)5的箭頭)來在事務(wù)結(jié)束時由協(xié)調(diào)對象223執(zhí)行改變或滾回。
在以上操作中,當(dāng)協(xié)調(diào)對象223與其它事務(wù)狀態(tài)對象221和222一起建立時,協(xié)調(diào)對象223必須記錄有關(guān)它自身和它在本地存儲器225所代表的事務(wù)的信息,以便在發(fā)生臨時地阻止服務(wù)器A過程22繼續(xù)事務(wù)處理的故障的情況下使事務(wù)可以恢復(fù)。
有許多事務(wù)在同一服務(wù)器過程(服務(wù)器A過程22)中啟動和結(jié)束,同時并不需要資源去更新其本地數(shù)據(jù)。對于這類事務(wù),實際上啟動事務(wù)的是一個服務(wù)器過程(而不是上面所討論的客戶過程)。例如,一個在自動取款機(jī)(ATM)中運行的客戶過程21代表只想獲取他的銀行帳戶結(jié)算的銀行帳戶主人(在圖2中由銀行帳戶對象224所代表)在執(zhí)行任務(wù)??蛻暨^程21向服務(wù)器過程22發(fā)送結(jié)算查詢命令,服務(wù)器過程22包含該客戶希望檢查其結(jié)算的銀行帳戶對象224。因此,服務(wù)器過程22通過建立三個事務(wù)狀態(tài)對象221,222和223來啟動事務(wù)。協(xié)調(diào)對象223訪問本地存儲器225以便記錄該事務(wù),使其成為可恢復(fù)。事務(wù)進(jìn)而訪問銀行帳戶對象224,讀取其結(jié)算并將它返回給客戶過程21。事務(wù)結(jié)束時使用結(jié)束對象222以撤消其它事務(wù)狀態(tài)對象221和223,然后結(jié)束對象222將它自己撤消。
在后面這類事務(wù)中,現(xiàn)有技術(shù)的實施是效率不高的。由于在整個事務(wù)處理期間不須調(diào)用更多服務(wù)器過程及沒有一個本地資源將本地數(shù)據(jù)更新,協(xié)調(diào)程序的將事務(wù)登記至存儲器225的功能就成為不必要了。此外,協(xié)調(diào)程序必須實例化這一不爭的事實占用一些處理功能,而后者本來可以更好地用于服務(wù)器過程22其它地方。
根據(jù)第一方面,本發(fā)明提供一種用于執(zhí)行事務(wù)處理的客戶/服務(wù)器計算系統(tǒng)中的服務(wù)器處理設(shè)備,該設(shè)備具有用于接收命令的裝置,該命令指示服務(wù)器處理設(shè)備執(zhí)行事務(wù)步驟;用于啟動事務(wù)的裝置;及用于判斷在執(zhí)行事務(wù)期間是否發(fā)生預(yù)定觸發(fā)事件的裝置,以及只當(dāng)發(fā)生觸發(fā)事件時,才相對于執(zhí)行事務(wù)中涉及的多個元件而建立一個用于協(xié)調(diào)事務(wù)的裝置。
觸發(fā)事件最好是接收一個將作為事務(wù)一部分的本地資源更新的請求。觸發(fā)事件還最好是接收一個調(diào)用作為事務(wù)一部分的附加服務(wù)器處理設(shè)備的請求。
在最佳實施例中,用于協(xié)調(diào)的裝置是一個協(xié)調(diào)對象,正如公共對象請求代理體系結(jié)構(gòu)的對象事務(wù)服務(wù)(CORBA的OTS)所定義的,以及在執(zhí)行事務(wù)中涉及的元件是本地資源或遠(yuǎn)距服務(wù)器過程。用于協(xié)調(diào)的裝置最好命令每個涉及事務(wù)的本地資源及/或遠(yuǎn)程服務(wù)器過程去執(zhí)行它們相應(yīng)的事務(wù)處理。
根據(jù)第二方面,本發(fā)明提供一種用于執(zhí)行以上在第一方面中描述的服務(wù)器功能的方法。
根據(jù)第三方面,本發(fā)明提供一種存儲于計算機(jī)可讀存儲媒體上的計算機(jī)程序產(chǎn)品,當(dāng)它在計算機(jī)中運行時,用于執(zhí)行第一方面的功能。
因此,使用本發(fā)明后,在發(fā)生一個要求使用協(xié)調(diào)對象的觸發(fā)事件之前,并不將協(xié)調(diào)對象實例化,因而可以高效使用服務(wù)器處理器周期。因此,如事務(wù)不產(chǎn)生這種觸發(fā)事件,則不將協(xié)調(diào)對象實例化,因而節(jié)省服務(wù)器的處理器周期。還有,如果不將協(xié)調(diào)對象實例化,則節(jié)省對本地存儲器的寫操作,不然當(dāng)首次將協(xié)調(diào)對象實例化以使協(xié)調(diào)對象為恢復(fù)目的而登記事務(wù)的存在時,將會發(fā)生寫操作。
下面參照附圖閱讀本發(fā)明優(yōu)選實施例的描述時,將能更好地理解本發(fā)明。
圖1是一個眾所周知的使用對象技術(shù)的異構(gòu)客戶/服務(wù)器體系結(jié)構(gòu),在它的環(huán)境中可應(yīng)用本發(fā)明優(yōu)選實施例;圖2是顯示常規(guī)OTS實施的框圖;圖3是顯示根據(jù)本發(fā)明優(yōu)選實施例的OTS實施的框圖;以及圖4是當(dāng)客戶發(fā)出根據(jù)圖3的OTS實施的啟動事務(wù)命令時,顯示服務(wù)器過程內(nèi)發(fā)生的步驟的流程圖。
現(xiàn)參照圖3(框圖)和圖4(功能流程圖)描述本發(fā)明優(yōu)選實施例。在將要使用的闡述例中,假定自動取款機(jī)(ATM)是客戶,將要執(zhí)行的事務(wù)是銀行帳號的結(jié)算查詢,一個每天進(jìn)行的世界范圍內(nèi)的經(jīng)常執(zhí)行的公共事務(wù)操作。
公共對象請求代理(CORBA)對象事務(wù)服務(wù)(OTS)提供稱為“Current”的接口對象,后者有一個由在過程中運行的應(yīng)用程序(源碼)用于啟動事務(wù)的“begin”方法。當(dāng)應(yīng)用程序在特定體系結(jié)構(gòu)上建立或運行并包含“begin”方法時,基礎(chǔ)OTS軟件將運行(如以上結(jié)合現(xiàn)有技術(shù)所描述的)以便通過在服務(wù)器過程中建立事務(wù)狀態(tài)對象而建立事務(wù)。
應(yīng)注意,在現(xiàn)有技術(shù)中,一旦向遠(yuǎn)程服務(wù)器過程22送出一個指令服務(wù)器執(zhí)行事務(wù)步驟(例如檢查銀行帳戶結(jié)算)的命令時,服務(wù)器過程22即調(diào)用“Current”接口上的“begin”方法,結(jié)果在該服務(wù)器過程22中將三個事務(wù)狀態(tài)對象(221,222和223)實例化。本發(fā)明只在此早期階段(見圖3)建立控制和結(jié)束對象(221和222),從而改變了此現(xiàn)有技術(shù)。如將要描述的,只當(dāng)發(fā)生預(yù)定觸發(fā)事件時才在稍后階段建立協(xié)調(diào)對象223。
在步41(圖4),服務(wù)器過程22自客戶過程21接收結(jié)算查詢命令(見圖3中帶圓圈數(shù)1的箭頭)。在步42,服務(wù)器過程22將控制和結(jié)束對象221和222實例化,從而建立事務(wù)狀態(tài)對象。應(yīng)清楚地注意到,此處并未建立協(xié)調(diào)對象223。
然后在服務(wù)器過程22中所運行的應(yīng)用程序的控制下,事務(wù)正常地進(jìn)行。在事務(wù)進(jìn)行期間,服務(wù)器過程進(jìn)至步43,其中它判斷是否下面兩個情況都發(fā)生了1)收到更新本地資源的請求否?本地資源(例如銀行帳戶對象224)是一個位于與控制和結(jié)束對象(221,222)相同的服務(wù)器過程(22)中的對象。當(dāng)事務(wù)進(jìn)行結(jié)果改變了本地資源的值,即發(fā)生這類資源更新。例如,如事務(wù)命令從由本地資源銀行帳戶對象224所代表的銀行帳戶中取款,這涉及銀行帳戶對象224減少(例如改變)可用資金結(jié)算值,而這是對結(jié)算值的更新。2)協(xié)調(diào)對象尚未被實例化否?如下面將看到的,步43可重復(fù)地執(zhí)行,因此有可能在以前運行中通過稍后步驟將協(xié)調(diào)對象實例化。此情況只確定是否尚未建立協(xié)調(diào)對象。
因此,在步43,如事務(wù)請求更新本地資源(如銀行帳戶對象224)以及如尚未將協(xié)調(diào)對象223實例化,則控制進(jìn)至步44以將協(xié)調(diào)對象223實例化。也即,出現(xiàn)了一個要求將協(xié)調(diào)對象223調(diào)用入事務(wù)的觸發(fā)事件(已請求將本地資源更新)。事務(wù)中在此點之前不需要協(xié)調(diào)對象223,因此在事務(wù)中需要對象223之前本發(fā)明并不建立對象223。
然而,如果這兩個情況中之一或兩者都未出現(xiàn),則控制進(jìn)至步45,其中服務(wù)器過程22確定是否已都出現(xiàn)兩個情況1)收到涉及附加服務(wù)器過程的請求否?作為指令該事務(wù)的應(yīng)用程序的一部分,保持事務(wù)對象的服務(wù)器過程22通常得到指令以調(diào)用另一個服務(wù)器過程(例如圖2中的服務(wù)器B過程23)。當(dāng)事務(wù)試圖訪問該附加服務(wù)器過程的資源(例如銀行帳號對象231)時這通常發(fā)生。例如,有時一個事務(wù)要求比較兩個不同銀行帳戶對象的結(jié)算。步45的此第一情況判斷服務(wù)器過程22是否已收到調(diào)用事務(wù)中另一服務(wù)器過程的請求。2)協(xié)調(diào)對象尚未實例化否?再有可能在以前運行中通過流程圖步驟將協(xié)調(diào)對象實例化(在步44)。此情況只判斷協(xié)調(diào)對象是否尚未被建立。
因此在步45,如事務(wù)請求調(diào)用附加服務(wù)器過程(例如服務(wù)器過程23)以及如協(xié)調(diào)對象223尚未實例化,則控制進(jìn)至步44以將協(xié)調(diào)對象223實例化。也即,出現(xiàn)了要求將協(xié)調(diào)對象223調(diào)用入事務(wù)的觸發(fā)事件(曾請求調(diào)用附加服務(wù)器過程)。在事務(wù)中此點之前,不需要協(xié)調(diào)對象223,因此在事務(wù)中需要此對象223之前本發(fā)明并不建立此對象223。
然而,如步45的兩個情況中之一或兩者都未出現(xiàn),則控制進(jìn)至步46,其中服務(wù)器過程22判斷事務(wù)是否已請求完成事務(wù)。如不是,則控制退回至步43以重復(fù)步43至46,并依據(jù)事務(wù)當(dāng)前狀態(tài)采取具體分支(是或否)。
如在步46事務(wù)準(zhǔn)備結(jié)束,則控制進(jìn)至步47,其中服務(wù)器過程22判斷協(xié)調(diào)對象223是否曾實例化(也即,是否曾執(zhí)行步44)。如不是(例如客戶ATM只要求檢查由對服務(wù)器過程22講是本地的銀行帳戶對象224所代表的銀行帳戶結(jié)算的情況),則控制進(jìn)至步49,其中結(jié)束對象222撤消控制對象221,然而撤消它自身。
然而,如在此事務(wù)處理期間曾將協(xié)調(diào)對象223實例化,則協(xié)調(diào)對象223使用它曾登記入存儲器225的信息來以眾所周知方式執(zhí)行事務(wù)的協(xié)調(diào)式關(guān)閉(步48)。也即,協(xié)調(diào)對象223調(diào)用每一個已更新過其數(shù)據(jù)的本地資源(例如224)和調(diào)用每一個在事務(wù)處理期間曾被調(diào)用(其結(jié)果是此遠(yuǎn)程過程23將該調(diào)用送至其本地資源231)的遠(yuǎn)程服務(wù)器過程(例如23),以便指令這些資源或者執(zhí)行或者滾回它們相應(yīng)的改變。然后結(jié)束對象222完全以現(xiàn)有技術(shù)中所知常規(guī)方式撤消控制對象221和協(xié)調(diào)對象223,然后再撤消它自身(步50)。
下面是為實施本發(fā)明需對IBM的部件代理產(chǎn)品做編程改變的概要(使用以上討論的現(xiàn)有技術(shù))。
1)當(dāng)啟動一個事務(wù)時,有對象CosTransactions∷Control可供應(yīng)用程序通常通過對象CosTransactions∷Current來使用。如啟動事務(wù)的請求是在服務(wù)器內(nèi)發(fā)出的,則只建立對象CosTransactions∷Control(221)和對象CosTransactions∷Terminator(222)。
2)當(dāng)將可恢復(fù)資源更新時,應(yīng)用程序必須為該事務(wù)向?qū)ο驝osTransactions∷Resource(如224)登記一個對象CosTransactions∷Coordinator(223)。為得到對象CosTransactions∷Coordinator(223),必須調(diào)用方法CosTransactions∷Control∷get_coordinator()。如尚未建立對象CosTransactions∷Coordinator(223),則它在調(diào)用方法CosTransactions∷Control∷get_coordinator()時被建立。
3)當(dāng)準(zhǔn)備將請求送至其它服務(wù)器時,調(diào)用OTS截聽程序。它們使用接口CosTransactions∷Current以訪問對象CosTransactions∷Control(221)。然后它們調(diào)用方法CosTransactions∷Control∷get_coordinator()去訪問對象CosTransactions∷Coordinator(223)以便獲取CosTransactions∷PropagationContext并將它與請求一起發(fā)送。還有,如不存在對象CosTransactions∷Coordinator(223),則在方法CosTransactions∷Control∷get_coordinator()中建立它。
4)當(dāng)調(diào)用對象CosTransactions∷Terminator(222)以結(jié)束事務(wù)時,它查看是否已建立對象CosTransactions∷Coordinator(223)。如已建立,則調(diào)用對象CosTransactions∷Coordinator(223)并以正常方式結(jié)束該事務(wù)(步48和50)。如不存在對象CosTransactions∷Coordinator(223),則它就簡單地撤消它自身和對象CosTransactions∷Control并返回(步49)。
通過突破常規(guī)技術(shù)中將所有事務(wù)同等對待的禁錮,本發(fā)明能大量節(jié)省服務(wù)器的處理器周期。在當(dāng)前啟動運行的事務(wù)的上下文中需要協(xié)調(diào)式事務(wù)關(guān)閉機(jī)制(優(yōu)選實施例中的對象Coordinator 223)之前,并不建立該機(jī)制。當(dāng)現(xiàn)行運行事務(wù)不需要登記時,這也可防止事務(wù)登記至存儲器中。
權(quán)利要求
1.用于執(zhí)行事務(wù)處理的客戶/服務(wù)器計算系統(tǒng)中的服務(wù)器處理設(shè)備,所述設(shè)備包括用于接收指令服務(wù)器處理設(shè)備執(zhí)行事務(wù)處理步驟的命令的裝置;用于啟動事務(wù)處理的裝置;以及用于判斷在執(zhí)行事務(wù)處理期間是否出現(xiàn)預(yù)定觸發(fā)事件的裝置,及只當(dāng)出現(xiàn)觸發(fā)事件時,才建立用于相對于在執(zhí)行事務(wù)處理中涉及的多個元素協(xié)調(diào)事務(wù)處理的裝置。
2.權(quán)利要求1的設(shè)備,其中所述觸發(fā)事件是接收一個將作為事務(wù)處理一部分的本地資源更新的請求。
3.權(quán)利要求1的設(shè)備,其中所述觸發(fā)事件是接收一個調(diào)用作為事務(wù)處理一部分的附加服務(wù)器處理設(shè)備的請求。
4.權(quán)利要求1的設(shè)備,其中所述用于協(xié)調(diào)的裝置是如公共對象請求代理體系結(jié)構(gòu)的對象事務(wù)服務(wù)(CORBA的OTS)所定義的協(xié)調(diào)對象。
5.權(quán)利要求1的設(shè)備,其中所述在執(zhí)行事務(wù)中所涉及的元素是本地資源或遠(yuǎn)程服務(wù)器過程。
6.權(quán)利要求5的設(shè)備,其中所述協(xié)調(diào)操作涉及命令每個在事務(wù)處理中涉及的本地資源和/或遠(yuǎn)程服務(wù)器過程執(zhí)行它們相應(yīng)的事務(wù)活動。
7.用于執(zhí)行事務(wù)的客戶/服務(wù)器計算系統(tǒng)中的服務(wù)器處理方法,在服務(wù)器上執(zhí)行的所述方法包括以下步驟接收指令服務(wù)器執(zhí)行事務(wù)處理步驟的命令;啟動事務(wù);以及判斷在執(zhí)行事務(wù)處理期間是否出現(xiàn)預(yù)定觸發(fā)事件,及只當(dāng)出現(xiàn)觸發(fā)事件時,才建立用于相對于在執(zhí)行事務(wù)處理中涉及的多個元素協(xié)調(diào)事務(wù)處理的裝置。
8.權(quán)利要求7的方法,其中所述觸發(fā)事件是接收一個將作為事務(wù)處理一部分的本地資源更新的請求。
9.權(quán)利要求7的方法,其中所述觸發(fā)事件是接收一個調(diào)用作為事務(wù)處理一部分的附加服務(wù)器處理設(shè)備的請求。
10.權(quán)利要求7的方法,其中所述用于協(xié)調(diào)的裝置是如公共對象請求代理體系結(jié)構(gòu)的對象事務(wù)服務(wù)(CORBA的OTS)所定義的協(xié)調(diào)對象。
11.權(quán)利要求7的方法,其中所述在執(zhí)行事務(wù)中所涉及的元素是本地資源或遠(yuǎn)程服務(wù)器過程。
12.權(quán)利要求11的方法,其中所述協(xié)調(diào)操作涉及命令每個在事務(wù)處理中涉及的本地資源和/或遠(yuǎn)程服務(wù)器過程執(zhí)行它們相應(yīng)的事務(wù)活動。
13.存儲于計算機(jī)可讀存儲媒體上的計算機(jī)程序產(chǎn)品,當(dāng)所述計算機(jī)程序產(chǎn)品在服務(wù)器計算機(jī)上運行時,所述產(chǎn)品執(zhí)行在執(zhí)行事務(wù)處理的客戶/服務(wù)器計算系統(tǒng)中使用的服務(wù)器處理方法,所述方法包括以下步驟接收指令服務(wù)器計算機(jī)執(zhí)行事務(wù)處理步驟的命令;啟動事務(wù);以及判斷在執(zhí)行事務(wù)處理期間是否出現(xiàn)預(yù)定觸發(fā)事件,及只當(dāng)出現(xiàn)觸發(fā)事件時,才建立用于相對于在執(zhí)行事務(wù)處理中涉及的多個元素協(xié)調(diào)事務(wù)處理的裝置。
全文摘要
一種用于在執(zhí)行事務(wù)處理的客戶/服務(wù)器計算系統(tǒng)中的服務(wù)器處理方法具有以下步驟:接收指令服務(wù)器執(zhí)行事務(wù)處理步驟的命令;啟動事務(wù);以及判斷在執(zhí)行事務(wù)處理期間是否出現(xiàn)預(yù)定觸發(fā)事件,及只當(dāng)出現(xiàn)觸發(fā)事件時,才建立用于相對于在執(zhí)行事務(wù)處理中涉及的多個元素協(xié)調(diào)事務(wù)處理的裝置。
文檔編號G06F9/30GK1236918SQ9910395
公開日1999年12月1日 申請日期1999年3月10日 優(yōu)先權(quán)日1998年3月18日
發(fā)明者阿曼達(dá)·埃里薩貝斯·切瑟爾, 馬丁·穆爾霍蘭德, 卡塞恩·薩哈·沃 申請人:國際商業(yè)機(jī)器公司