欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在軟件環(huán)境中用于保持資源完整性的裝置和方法

文檔序號:6398392閱讀:110來源:國知局
專利名稱:在軟件環(huán)境中用于保持資源完整性的裝置和方法
技術領域
一般地,本發(fā)明涉及一種改進的計算系統(tǒng)。更具體而言,本發(fā)明涉及當處理涉及多個軟件資源的事務時保持在計算系統(tǒng)中的數(shù)據的完整性的資源完整性引擎。
背景技術
除了非常不重要的應用之外,在今天的軟件環(huán)境中執(zhí)行的應用程序與多個軟件資源交互以便完成指定的任務是很普遍的。許多時候,這些軟件資源在執(zhí)行應用程序期間一般彼此獨立,但都需要作為原子單元,即不可分割的整體。具有一起作為原子單元的多個資源執(zhí)行單元被稱為一個事務。
例如,單一任務可能需要一個數(shù)據庫軟件資源來執(zhí)行在數(shù)據庫中的記錄更新,并且需要一個消息傳送軟件資源來向另一個軟件資源發(fā)送指示更新完成消息。所述事務將包括更新數(shù)據庫記錄和發(fā)送消息。必須執(zhí)行這兩個操作以便成功地完成所述事務。
某些軟件操作系統(tǒng)提供了用于在獨立的資源之間執(zhí)行協(xié)作的機制。這個機制經常被稱為事務管理器。這樣的機制建立一個單個的范圍(context,它作為單個的原子單元,用于在獨立的資源中分布的每個事務操作。在這種類型的事務管理器中用于管理事務的一種公知技術是使用一種兩階段委托處理(two phase commit process)。
所述兩階段委托處理包括“準備階段”和“委托階段”。在“準備階段”期間,事務管理器通知所有的參與者所意欲的事務,并且請求它們確認它們準備好委托或者回退(rollback)掛起的事務。在“委托階段”期間,請求事務的所有參與者委托事務,即完成事務中它們的部分。如果一個參與者在“準備階段”不能委托事務或未響應,則事務失敗并恢復任何改變。由還未被所有的參與者完成的一個事務做出的改變的回退意欲保持在系統(tǒng)中的數(shù)據的完整性。即,必須保持在所述事務中涉及的軟件資源的狀態(tài)的同步。
所述事務管理器對于應用程序透明地提供這個功能。雖然當所管理的軟件資源被計算系統(tǒng)軟件支持時這是極好的可接受手段,但不是所有不同的軟件資源類型都必然被每個事務管理器支持。而且,不是所有的軟件環(huán)境包括可以用于通過例如一個兩階段委托處理來管理事務的事務管理器。
因此,有益的是,具有一種裝置和方法,用于在沒有事務管理器或可能在計算系統(tǒng)中存在的事務管理器不支持某些軟件資源的時候保持在計算系統(tǒng)中的數(shù)據的完整性。

發(fā)明內容
本發(fā)明提供了一種裝置和方法,用于在沒有事務管理器的情況下保持在軟件環(huán)境中的資源完整性。利用本發(fā)明的裝置和方法,提供了一種資源完整性引擎來用于與應用程序和多個軟件資源應用程序接口(API)接口。所述資源完整性引擎從應用程序接收一個事務,所述應用程序識別在所述事務中涉及的多個軟件資源。所述資源完整性引擎未在事務中識別的軟件資源識別登記到操作系統(tǒng)的適當?shù)腁PI,并且經由API向軟件資源發(fā)送一個請求以請求它們以它們準備好接收事務的確認來響應。
在從軟件資源接收的一個確認時,所述資源完整性引擎向諸如數(shù)據庫、通信信道、隊列、消息傳送軟件等的軟件資源發(fā)送所述事務,使得它們執(zhí)行在所述事務中指示的必要功能,即委托,不委托。一個軟件資源可能因為許多不同的原因而不能委托,所述原因包括例如通信連接故障、變得失效的數(shù)據庫連接、資源管理器失敗、隊列滿、滿足超時條件、達到最大數(shù)量的可能連接、硬件故障,所述硬件故障諸如盤驅動器、系統(tǒng)存儲器用完等。
利用本發(fā)明,資源完整性引擎的識別引擎從與軟件資源相關聯(lián)的API向回接收消息,指示是否各個軟件資源被成功地委托或委托失敗。所述識別引擎使用邏輯來確定是否所有的軟件資源被成功地委托、是否沒有軟件資源被成功地委托、或是否存在事務的部分委托。
如果被識別為事務的一部分的所有軟件資源被成功地委托、即成功地執(zhí)行了與所述軟件資源相關聯(lián)的事務功能,則事務無差錯地被完成。但是,如果與所述事項相關聯(lián)的一個或多個軟件資源不能委托,則識別引擎確定是否和如何提交與不能委托的軟件資源相關聯(lián)的事務的剩余部分。這與公知的兩階段委托操作相反,所述公知的兩階段委托操作當即使一個資源不能委托時恢復改變。
在未成功地委托任何與事務相關聯(lián)的軟件資源的情況下,可以作為整體向軟件資源重新提交所述事務,因為前一個提交未導致任何軟件資源的狀態(tài)改變。但是,在沒有差錯恢復的情況下,重新提交失敗的事務的部分可能不能帶來成功地委托軟件資源。因此,識別引擎分析從API接收的響應消息以確定為什么在前一次事務提交中軟件資源不能委托。根據所確定的原因,識別引擎啟用或者適當?shù)牟铄e恢復或者其他適當?shù)倪B續(xù)邏輯,以便提高下述可能性重新提交事務將導致成功地提交所有的軟件資源。
在部分委托與事務相關聯(lián)的軟件資源的情況下,識別引擎使用這樣的邏輯,它用于在向未委托的軟件資源重新提交失敗的事務的部分的同時,保持已經委托的軟件資源的數(shù)據完整性。在這種情況下,識別引擎識別哪些軟件資源已經被委托并且哪些還沒有。僅僅未成功地被委托的那些軟件資源作為事務處理的部分被重新提交,以便避免復制可能引起在事務內的差錯狀態(tài)的數(shù)據。
用于重新提交的邏輯類似于上述針對沒有軟件資源被委托的情況。即,由軟件資源的API返回的消息被識別引擎分析以確定是否軟件資源成功地委托或是否存在由一個或多個軟件資源遇到的差錯。在一個實施例中,事務固有的信息被用于確定是否已經委托了一個資源。例如,一個事務可以具有唯一的標識號。如果在資源內發(fā)現(xiàn)這個唯一的標識符,則識別引擎可以推論資源被委托。以這種方式,軟件程序能夠保持每個軟件資源的狀態(tài)而不明確地跟蹤數(shù)據的完整性。注意,為了使得識別引擎查詢一個資源,所述資源實體必須能夠經由資源的API或其他登記機制檢索。
資源完整性引擎的識別引擎可以隨后向在數(shù)據結構中的非委托項目施加一個或多個恢復和重新提交規(guī)則。這些規(guī)則可以包括將差錯代碼與用于向相關聯(lián)的軟件資源重新提交事務的正確流程相關聯(lián)。所述規(guī)則可以查看所返回的差錯代碼和其中返回差錯代碼的范圍。例如,如果差錯代碼指示與輸出隊列的通信連接失敗,則通過所述規(guī)則識別的重新提交流程可以是等待預定的時期和隨后向輸出隊列重新提交事務。
成功地委托的軟件資源不將它們的改變恢復。本發(fā)明的一個特征是這樣的事實,即本發(fā)明不恢復“已經被委托的”資源。它“檢測”情況,并且在檢測到時立即重新提交未委托的資源。最后,如果重新提交最終失敗,則向差錯處理器發(fā)送整個事務以確定和糾正問題。因此,雖然本發(fā)明不進行恢復,但是提供明確的指示以指示事務未被完成?;驹硎窃诙鄶?shù)情況下,重新提交會成功。在重新提交未成功的很少的情況下,危險的資源被識別并且被發(fā)送到差錯處理機制。那個機制可以事實上檢測包括恢復的任何數(shù)量的事情。
因此,在本發(fā)明的情況下,提供一種機制來用于處理在沒有事務管理器的軟件環(huán)境中的事務。而且,本發(fā)明提供了一種機制,其中事務的部分可以被重新提交到不能委托的那些軟件資源的操作系統(tǒng),以便完成事務和避免恢復對被委托的軟件資源做出的改變。將在下面對于優(yōu)選實施例的詳細說明中說明本發(fā)明的這些和其他特征和優(yōu)點,或者在考慮到下面對于優(yōu)選實施例的詳細說明的情況下,本發(fā)明的這些和其他特征和優(yōu)點對于本領域的技術人員變得顯然。


在所附的權利要求中給出了被相信有本發(fā)明的特點的新穎特征。但是,通過結合附圖下面詳細說明圖解的實施例,本發(fā)明本身以及使用的優(yōu)選方式及其另外的目的和優(yōu)點將會被最佳地理解。
圖1是其中可以實現(xiàn)本發(fā)明的分布數(shù)據處理系統(tǒng)的示意圖;圖2是其中可以實現(xiàn)本發(fā)明的服務器計算器件的示意圖;圖3是按照可以實現(xiàn)本發(fā)明的客戶或獨立計算器件的示意圖;圖4是圖解本發(fā)明的主要操作部件的關系的示意方框圖;圖5是按照本發(fā)明的一個示范實施例的資源完整性引擎的示意方框圖;圖6是圖解本發(fā)明的示例操作的示意圖;以及圖7是簡述本發(fā)明的示意操作的流程圖。
具體實施例方式
本發(fā)明提供了一種用于管理在不包括事務管理器的軟件環(huán)境中管理事務的機制。而且,本發(fā)明提供了一種用于向與不能在事務的前一個提交中委托的事務相關聯(lián)的軟件資源重新提交事務的機制。本發(fā)明的機制可以在不脫離本發(fā)明的精神和范圍的情況下在獨立計算器件或分布數(shù)據處理環(huán)境中被實現(xiàn)。在一個優(yōu)選實施例中,本發(fā)明在分布數(shù)據處理系統(tǒng)的服務器計算器件中被實現(xiàn)。因此,以下提供圖1-3,以便給出用于討論本發(fā)明的特征和優(yōu)點的范圍。
現(xiàn)在參見附圖,圖1描述了其中可以實現(xiàn)本發(fā)明的數(shù)據處理系統(tǒng)的網絡的圖示。網絡數(shù)據處理系統(tǒng)100是可以實現(xiàn)本發(fā)明的計算機網絡。網絡數(shù)據處理系統(tǒng)100包括網絡102,它是用于提供在網絡數(shù)據處理系統(tǒng)100內在各種器件和連接在一起的計算機之間的通信鏈路。網絡102可以包括諸如有線、無線通信鏈路或光纖電纜的連接。
在所述的示例中,服務器104與存儲單元106一起連接到網絡102。另外,客戶端108、110和112連接到網絡102。這些客戶端108、110和112可以例如是個人計算機或網絡計算機。在所述的示例中,服務器104向客戶端108-112提供數(shù)據,諸如引導文件、操作系統(tǒng)圖像和應用程序??蛻舳?08、110和112是對于服務器104的客戶端。網絡數(shù)據處理系統(tǒng)100可以包括未示出的附加服務器、客戶端和其他器件。在所述的示例中,網絡數(shù)據處理系統(tǒng)100是包括網絡102的因特網,表示世界范圍內的網絡和網關集合,所述網絡和網關使用傳輸控制協(xié)議/因特網協(xié)議(TCP/IP)套件來彼此通信。在因特網的中心是在主節(jié)點或主計算機之間的高速數(shù)據通信線路的干線,所述主節(jié)點或主計算機包括成千上萬的商用、政府、教育和其他計算機系統(tǒng),它們?yōu)閿?shù)據和消息取路由。當然,網絡數(shù)據處理系統(tǒng)100也可以被實現(xiàn)為多個不同類型的網絡,諸如內聯(lián)網、局域網(LAN)或廣域網(WAN)。圖1意欲作為一個示例,而不是對于本發(fā)明的結構限定。
參見圖2,其中描述了按照本發(fā)明的一個優(yōu)選實施例的、可以被實現(xiàn)為諸如圖1中的服務器104的服務器的數(shù)據處理系統(tǒng)的方框圖。數(shù)據處理系統(tǒng)200可以是對稱的多處理器(SMP)系統(tǒng),包括連接到系統(tǒng)總線206的多個處理器202和204?;蛘撸梢允褂脝蝹€處理器系統(tǒng)。也連接到系統(tǒng)總線206的是存儲器控制器/高速緩沖存儲器208,它向本地存儲器209提供一個接口。輸入/輸出總線橋210連接到系統(tǒng)總線206,并且向輸入/輸出總線212提供一個接口。存儲器控制器/高速緩沖存儲器208和輸入/輸出總線橋210可以如圖所示來集成。
連接到輸入/輸出總線212的外圍部件互連(PCI)總線橋214提供到PCI局部總線216的接口。多個調制解調器可以連接到PCI局部總線216。典型的PCI總線實現(xiàn)方式支持四個PCI擴展槽或外加連接器。到圖1中的客戶端108-112的通信鏈路的提供可以經由外加板、通過連接到PCI局部總線216的調制解調器218和網絡適配器220。
附加的PCI總線橋222和224提供對于附加的PCI局部總線226和228的接口,從所述接口可以支持附加的調制解調器或網絡適配器。以這種方式,數(shù)據處理系統(tǒng)200使得可以連接到多個網絡計算機。存儲器映射圖形適配器230和硬盤232也可以如圖所示直接或間接地連接到輸入/輸出總線212。
本領域內的技術人員可以明白圖2中所述的硬件可以不同。例如,除了所述的硬盤之外或替代所述的硬盤,還可以使用諸如光盤驅動器等其他的外圍器件。所述的示例不意欲對本發(fā)明的結構限定。
圖2所述的數(shù)據處理系統(tǒng)可以是例如位于紐約Armonk的國際商用機器公司的產品IBM eServer pSeries系統(tǒng),它運行先進的交互執(zhí)行體(AIX)操作系統(tǒng)或LINUX操作系統(tǒng)。
現(xiàn)在參見圖3,其中描述了圖解實現(xiàn)本發(fā)明的數(shù)據處理系統(tǒng)的方框圖。數(shù)據處理系統(tǒng)300是客戶端計算機或獨立計算器件的示例。數(shù)據處理系統(tǒng)300使用外圍部件互連(PCI)局部總線結構。雖然所述的示例使用PCI總線,但是也可以使用其他的總線結構,諸如加速圖形端口(AGP)和工業(yè)標準架構(ISA)。處理器302和主存儲器304通過PCI橋308連接到PCI局部總線306。PCI橋308也可以包括用于處理器302的集成存儲器控制器和高速緩沖存儲器。到PCI數(shù)據局部總線306的附加連接可以通過直接的部件互連或通過外加板來作出。在所述的示例中,局域網(LAN)適配器310、SCSI主總線適配器312和擴展總線接口314通過直接的部件連接來連接到PCI局部總線306。相反,音頻適配器316、圖形適配器318和音頻/視頻適配器319通過插入到擴展槽中的外加板連接到PCI局部總線306。擴展總線接口314提供對于鍵盤和鼠標適配器320、調制解調器322和附加存儲器324的連接。小計算機系統(tǒng)接口(SCSI)主總線適配器312提供對于音頻驅動器326、磁帶驅動器328和CD-ROM驅動器330的連接。典型的PCI局部總線實現(xiàn)方式支持三個或四個PCI擴展槽或外加連接器。
一個操作系統(tǒng)運行在處理器302上,并且用于協(xié)調和控制在圖3中的數(shù)據處理系統(tǒng)300內的各個部件。操作系統(tǒng)可以是商業(yè)上可以獲得的操作系統(tǒng),諸如可以從微軟獲得的Windows XP。諸如Java的面向對象的編程系統(tǒng)可以與所述操作系統(tǒng)相結合地運行,并且提供從運行在數(shù)據處理系統(tǒng)300上的Java程序或應用程序對操作系統(tǒng)的調用。“Java”是Sun Microsystems公司的商標。用于操作系統(tǒng)、即面向對象的操作系統(tǒng)的指令以及應用或程序位于諸如硬盤驅動器326的存儲器件上,并且可以被裝入主存儲器304中來由處理器302執(zhí)行。
本領域中的技術人員將明白,圖3中的硬件可以依賴于實現(xiàn)方式而不同。除了圖3中所述的硬件之外或替代圖3中所述的硬件,還可以使用其他的內部硬件或外圍器件,諸如快閃只讀存儲器(ROM)、等效的非易失性存儲器或光盤驅動器等。而且,本發(fā)明的處理可以被應用于多處理器數(shù)據處理系統(tǒng)。
作為另一個示例,數(shù)據處理系統(tǒng)300可以是被配置為不依賴于一些類型的網絡通信接口而可啟動的獨立系統(tǒng)。作為另一個示例,數(shù)據處理系統(tǒng)可以是個人數(shù)字助理(PDA)器件,它被配置了ROM和/或快閃ROM,以便提供用于存儲操作系統(tǒng)結尾和/或用戶產生的數(shù)據的非易失性存儲器。
圖3中所述的示例和上述的示例不意味著結構限定。例如,除了采用PDA形式之外,數(shù)據處理系統(tǒng)300也可以是筆記本計算機或手持計算機。數(shù)據處理系統(tǒng)300也可以是信息站或萬維網設備。
如上所述,本發(fā)明提供了一種用于不使用事務管理器而保持在軟件環(huán)境中的資源完整性的裝置和方法。本發(fā)明提供了一種資源完整性引擎,它在部分委托的事務中向軟件資源重新提交事務的同時,保證了計算系統(tǒng)的數(shù)據的完整性。
現(xiàn)在參見圖4,資源完整性引擎420被提供來與應用程序410和多個軟件資源應用程序接口(API)430-450連接。所述多個軟件資源應用程序接口(API)430-450與多個軟件資源460-480相關聯(lián)。應用程序410、資源完整性引擎420、API430-450和軟件資源460-480可以駐留在相同或不同的計算器件上。例如,應用程序410可以駐留在客戶計算器件上,同時資源完整性引擎420、API430-450和軟件資源460-480駐留在服務器計算器件上。
應用程序410向識別在事務中包括的多個軟件資源460-480的資源完整性引擎420提交用于處理的事務。所述資源完整性引擎420識別作為事務的一部分的軟件資源460-480和它們各自的API430-450。資源完整性引擎420隨后經由所識別的軟件資源460-480的API430-450向所識別的軟件資源460-480提交事務。這些API430-450提供關于它們對應的軟件資源460-480是否成功地執(zhí)行事務中的它們的一部分的指示。
例如,事務可以采取下面的形式向輸入隊列(inbound queue)上放置數(shù)據庫更新消息,向所述更新消息施加業(yè)務規(guī)則以便更新數(shù)據庫,然后對輸出隊列(outbound queue)設置更新完成消息。從這個事務,很清楚使用兩個資源——消息傳遞中間件資源和數(shù)據庫軟件資源。用于這兩個資源的API被假定已經對操作系統(tǒng)登記,并且可以被資源完整性引擎420經由所述操作系統(tǒng)以公知的方式調用,以便由API返回的成功/差錯代碼可以被資源完整性引擎420查看。
資源完整性引擎420的主要功能是保持由軟件資源460-480管理的數(shù)據的完整性。為了保持完整性,需要資源完整性引擎420保持軟件資源460-480彼此同步。這意味著獨立的軟件資源460-480相對于正在被執(zhí)行的事務保持為當前。如果不委托至少一個軟件資源460-480,則存在一個條件,其中所述軟件資源460-480與參加所述事務的任何其他軟件資源460-480不同步。
為了處理事務以便事務相對于所述軟件資源作為原子單元,并且為了保持由軟件資源管理的數(shù)據的完整性以便軟件資源同步,本發(fā)明執(zhí)行下列五種功能(1)識別在事務中包括的獨立軟件資源;(2)驗證對于軟件資源的成功委托;(3)確定是否事務的所有的軟件資源被成功地委托;(4)識別未委托的軟件資源和它們未委托的原因;(5)根據所識別的軟件未被委托的原因來恢復差錯,并且重新向未委托的軟件資源提交所述事務。
如上所述,資源完整性引擎420接收用于識別在事務中包括的軟件資源的事務。從在事務中的這個信息,資源完整性引擎420可以通過相關聯(lián)的API430-450對其中使用本發(fā)明的計算器件的操作系統(tǒng)的登記來識別相關聯(lián)的API430-450。而且,API430-450提供一個接口,通過這個接口,資源完整性引擎420被通知相關聯(lián)的軟件資源460-480成功地或不成功地完成它的事務執(zhí)行線程,即是否軟件資源委托了事務。因此,與軟件資源460-480的API的交互提供資源完整性引擎420執(zhí)行上述功能(1)和(2)的能力,即識別獨立的軟件資源和驗證成功委托軟件資源的能力。
資源完整性引擎420在從應用程序410接收到事務時識別作為事務一部分的軟件資源460-480的適當?shù)腁PI430-450。資源完整性引擎420也初始化用于保持關于事務的范圍狀態(tài)信息的數(shù)據結構。資源完整性引擎420然后經由所識別的軟件資源460-480的各自的API430-450向所識別的軟件資源460-480發(fā)送事務。資源完整性引擎420然后等待來自API430-450的響應,即指示軟件資源的成功的委托或關于軟件資源的差錯狀態(tài)。成功委托或差錯狀態(tài)然后被記錄在與事務相關聯(lián)的數(shù)據結構中。
可以根據計算系統(tǒng)的具體實現(xiàn)方式來以多種不同的方式來執(zhí)行事務。例如,在一種具體的實現(xiàn)方式中,處理可以基于一組需要執(zhí)行的順序流的軟件指令,以便當成功地委托獨立的軟件資源時,處理轉到在事務中要共享的下一個獨立的軟件資源。在另一種示范實現(xiàn)方式中,可以利用事件通知邏輯。例如,當獨立的軟件資源委托時,委托資源的程序將通知資源完整性引擎已經成功地完成了所述行為。所提供的信息的一部分是資源的成功或失敗的狀態(tài)指示。
以上述的事件通知實現(xiàn)方式來描述本發(fā)明的優(yōu)選實施例。但是,應當明白,也可以使用順序處理流。在這樣的情況下,由資源完整性引擎420保持的范圍狀態(tài)數(shù)據結構可以包括關于軟件資源的順序化的信息以及它們是否返回成功的委托的信息。如果一個軟件資源返回差錯狀態(tài),則在所述順序中在返回差錯的軟件資源后面出現(xiàn)的任何軟件資源將沒有它們的當前狀態(tài)的輸入項,因為它們需要成功地委托返回差錯的軟件資源。
在任何一種情況下,資源完整性引擎420可以查看事務的范圍狀態(tài)數(shù)據結構中的狀態(tài)信息,以確定事務的所有的軟件資源是否委托了所述事務(上述的功能3)。資源完整性引擎420使用識別引擎來在從被提交到軟件資源460-480的事務產生的可能情況之間區(qū)別(上述的功能4)。如果在范圍狀態(tài)數(shù)據結構中列出的軟件資源的任何一個返回差錯狀態(tài),則事務不成功地完成并且事務的恢復和重新提交發(fā)生。如果在范圍狀態(tài)數(shù)據結構中列出的軟件資源的任何一個返回成功的委托,則事務成功地完成,并且執(zhí)行成功事務的通常處理?!巴ǔL幚怼敝傅氖鞘聞债a生期望的行為,然后執(zhí)行對于實現(xiàn)專有的處理,所述期望的行為諸如成功地在數(shù)據庫中記錄病人信息并且向另一個系統(tǒng)發(fā)送那個信息,正確地記錄銀行存款,成功地飛機訂票等。
例如,假定接收到病人消息,它包括寫入到數(shù)據庫記錄中的信息。這個信息包括在消息中包括的唯一ID。另外,一旦更新數(shù)據庫,則消息內容也被提供到另一個消息傳遞系統(tǒng)。如果在數(shù)據庫更新和向下一個系統(tǒng)發(fā)送消息之間發(fā)生問題,則數(shù)據可能不同步。如果所述消息過去在第一系統(tǒng)中增加一個病人并且第一系統(tǒng)現(xiàn)在獲得那個病人的一個更新,則它可以適當?shù)馗履莻€記錄。但是,如果所述更新被發(fā)送到下一個消息傳遞系統(tǒng),則將失敗,因為從未接收到初始記錄。
如果沒有本發(fā)明,則當在第一系統(tǒng)上重新排隊初始消息以處理時(因為它從未被消息傳遞系統(tǒng)委托而是僅僅在數(shù)據庫系統(tǒng)上被委托),返回一個差錯來指示在數(shù)據庫中的記錄的復制。這將終止在已知系統(tǒng)中對于那個事務的處理。
在使用本發(fā)明的情況下,識別引擎確定在數(shù)據庫中的標識符匹配在消息中的標識符,并且允許后續(xù)的處理發(fā)生,即向下一個系統(tǒng)上發(fā)送消息。
在未成功地委托任何軟件資源的情況下,則在事務中的整套寫作操作可以基本上被重復。在實際的意義上,這意味著初始軟件資源失敗,并且應當放棄后續(xù)軟件資源的處理。但是,如果不應用差錯解析和恢復操作,這不保證重復操作將導致成功地委托軟件資源。所執(zhí)行的具體差錯解析和恢復操作是基于當試圖委托事務時由軟件資源遇到的差錯類型。
例如,資源完整性引擎420的識別引擎可以對于由與軟件資源460-480相關聯(lián)的API430-450返回并且存儲在范圍狀態(tài)數(shù)據結構中的的差錯指示符應用識別規(guī)則,以便在重新提交事務之前確定要執(zhí)行的差錯解析和恢復操作的類型。這樣的差錯解析和恢復操作可以涉及啟動另一個軟件操作以主動地解析差錯和恢復軟件資源,或者可以是消極的解析和恢復,諸如在重新向軟件資源提交事務之前等待預定的時間。一旦執(zhí)行了適當?shù)牟铄e解析和恢復操作,這資源完整性引擎420可以經由軟件資源460-480的API430-450向軟件資源460-480重新提交事務(上述的功能5)。
在一些軟件資源委托而其他的不委托的情況下,資源完整性引擎420在能夠僅僅向那些不委托的軟件資源重新提交事務的同時保證整體數(shù)據的完整性。以這種方式,避免了可能導致在事務內的實際差錯狀態(tài)、使得不能完成事務的數(shù)據復制。
在部分委托的情況下,如果軟件資源記錄了相關聯(lián)的差錯狀態(tài),或者如果軟件資源實質上第一次被處理,資源完整性引擎420的識別引擎對于在事務的范圍狀態(tài)數(shù)據結構中的每個軟件資源確定是否已經委托了所述軟件資源。如果已經委托了軟件資源,則由軟件資源對數(shù)據作出的改變不被恢復。相反,保持保持由軟件資源作出的數(shù)據改變的當前狀態(tài)。
如果軟件資源具有相關聯(lián)的差錯狀態(tài),則根據差錯的識別來執(zhí)行適當?shù)牟铄e解析和恢復操作,并且僅僅向那些具有差錯狀態(tài)的軟件資源重新提交所述事務。一旦所有的軟件資源指示它們已經委托了所述事務,則執(zhí)行通常的處理以完成在系統(tǒng)中的事務。如果一些軟件資源繼續(xù)返回差錯條件,則本發(fā)明的差錯解析和重新提交邏輯可以繼續(xù)直到所有的軟件資源委托或直到進行了預定數(shù)量的重新提交。如果在進行了預定數(shù)量的重新提交后仍然存在一個或多個還沒有委托的軟件資源,則可以確定事務不能被成功地完成,并且由其他軟件資源作出的改變可以被恢復。
因此,本發(fā)明提供了用于一種機制,用于管理其中沒有事務管理器的軟件環(huán)境中的事務。而且,本發(fā)明提供了一種機制,用于監(jiān)控與事務相關聯(lián)的軟件資源,以便在執(zhí)行適當?shù)牟铄e解析和恢復操作之后未委托的軟件資源可以將事務重新提交。使用本發(fā)明,僅僅未委托的軟件資源將事務重新提交,那些已經委托的軟件資源將不改變它們的狀態(tài)。
圖5是按照本發(fā)明的資源完整性引擎的示意方框圖。在圖5中的單元可以以軟件、硬件或軟件和硬件的任何組合來實現(xiàn)。在一個優(yōu)選實施例中,圖5的單元實現(xiàn)為由一個或多個處理器件執(zhí)行的軟件指令。
如圖5中所示,資源完整性引擎包括控制器510、接口520、一個或多個API接口530、識別引擎540、事務狀態(tài)數(shù)據結構存儲器550、差錯解析和恢復/重新提交規(guī)則數(shù)據庫560(以下稱為“規(guī)則數(shù)據庫”)。元件510-560經由控制/數(shù)據信號總線570彼此通信。雖然圖5示出了總線結構,本發(fā)明不限于此,可以在不脫離本發(fā)明的范圍和精神的情況下使用便利在元件510-560之間的控制信息和數(shù)據的通信的任何結構。
控制器510控制資源完整性引擎的整體操作,并且編排其他元件520-560的操作。接口520向一個或多個應用程序提供通信路徑。API接口530向通信路徑提供軟件資源的API,資源完整性引擎利用它來工作??刂破?10經由接口520接收事務,并且經由API接口530經由軟件資源的API向軟件資源發(fā)送事務消息。API繼而返回指示軟件資源的成功委托或差錯狀態(tài)的消息。由API返回的這些軟件資源的狀態(tài)被控制器510存儲在事務狀態(tài)數(shù)據結構存儲器550的事務狀態(tài)數(shù)據結構中。
識別引擎540針對在下述情況之間區(qū)別而執(zhí)行上述的功能所有軟件資源被委托,沒有軟件資源被委托,在事務中涉及軟件資源的部分委托。識別引擎540還根據存儲在事務狀態(tài)數(shù)據結構存儲器550內的事務狀態(tài)數(shù)據來識哪些軟件資源委托和哪些沒有。識別引擎540可以隨后應用來自規(guī)則數(shù)據庫560的規(guī)則以確定要對軟件資源執(zhí)行的正確的差錯解析和恢復操作以及如何和何時向軟件資源重新提交事務。
在圖5所示的機制的情況下,可以向其中沒有事務管理器的軟件環(huán)境中的軟件資源提交事務。而且,在圖5的機制的情況下,可以在保持委托的軟件資源的狀態(tài)的同時向未委托的軟件資源重新提交事務。因此,本發(fā)明避免必須恢復由委托的軟件資源做出的改變,以便可以重新發(fā)送整個事務。
圖6提供了在部分委托情況中的本發(fā)明的示例操作。如圖6所示,所涉及的事務包括消息資源向輸入隊列610上布置一個更新消息;向所述更新消息的內容應用商業(yè)規(guī)則以便內容被存儲在數(shù)據庫資源620中;然后一個更新完成消息被所述消息資源布置在輸出隊列630上。在這個示例中,假定事務被處理以便所述消息資源將消息布置在輸入隊列610上、數(shù)據庫資源620被更新、但是在更新完成消息被布置在輸出隊列上之前有失敗。
作為上述失敗的結果,數(shù)據庫資源的API返回數(shù)據庫資源被委托的消息,但是消息資源的API指示消息資源未被委托和為什么消息資源未委托的差錯狀態(tài)。根據這個差錯狀態(tài),本發(fā)明的識別引擎將在向消息資源重新提交事務之前應用適當?shù)牟铄e解析和恢復操作。所述事務將不被重新提交到數(shù)據庫資源。
在向消息資源重新提交事務中,消息資源可能試圖將另一個同樣的更新消息布置在輸入隊列610上??赡芤驗椴徊贾迷谳斎腙犃?10上的相同消息而導致差錯。在公知的系統(tǒng)中,這將導致差錯狀態(tài),所述差錯狀態(tài)將導致基于事務恢復由軟件資源做出的改變。
但是,從規(guī)則數(shù)據庫應用規(guī)則的本發(fā)明可以確定數(shù)據庫620被委托,因此在在內隊列610上的復制消息表示不可恢復的差錯,并且可以跳過在輸入隊列610上布置復制消息、更新數(shù)據庫620,而且可以進行到在輸出隊列630上布置更新完成消息。在更新完成消息被布置在輸出隊列630上后,消息資源API向資源完整性引擎返回一個消息來指示消息資源已經委托,因此所有的軟件資源已經委托。
圖7是概述本發(fā)明的示范操作的流程圖。如圖7所示,所述操作以接收事務開始(步驟710)。根據在事務內包括的信息和對操作系統(tǒng)登記的API來識別作為事務的一部分的獨立資源(步驟720)。開始要參加到事務中的每個獨立資源的處理(步驟730)。當每個獨立資源的處理結束時,從它們相關聯(lián)的API接收消息(步驟740)。進行確定是否所有的資源已經成功,即已經委托(步驟750)。如果這樣,這執(zhí)行通常的處理以結束所述事務(步驟760)。否則,識別引擎確定不能委托的每個資源的失敗原因(步驟770)。根據所識別的失敗原因來執(zhí)行適當?shù)牟铄e解析和恢復操作(步驟780)。然后僅僅重新開始那些未委托的資源的處理(步驟790),并且操作返回步驟740。
雖然在圖7中未明確地示出,但是可以包括確定是否已經進行了預定數(shù)量的重新提交或重新開始資源的附加步驟。這種情況下,如果已經進行了預定數(shù)量的重新提交,這可以識別關鍵的差錯,并且可以恢復被委托的資源。否則,所述重新提交可以繼續(xù)直到已經進行了預定數(shù)量的重新提交或所有的資源被委托。
因此,利用本發(fā)明,提供了一種機制來處理在沒有事務管理器的軟件環(huán)境中的事務。而且,本發(fā)明提供了這樣的一種機制,其中事務的部分可以被重新提交到不能委托的軟件資源,以便完成所述事務和避免恢復對已經委托的軟件資源做出的改變。
值得注意的是,雖然已經在充分發(fā)生作用的數(shù)據處理系統(tǒng)的范圍內描述了本發(fā)明,但是本領域內的那些技術人員會明白,本發(fā)明的處理能夠以指令和多種形式的計算機可讀介質形式來發(fā)布,并且本發(fā)明可以等同地適用而不論實際用于執(zhí)行發(fā)布的信號承載媒體的特定類型如何。計算機可讀媒體的示例包括諸如軟盤、硬盤驅動器、RAM、CD-ROM、DVD-ROM的可記錄類型的媒體和諸如輸入數(shù)字和模擬通信鏈路、使用傳輸形式的有線或無線通信鏈路的傳輸類型的媒體,所述傳輸形式諸如射頻和光波傳輸。計算機可讀媒體可以采用編碼格式的形式,所述編碼格式被譯碼以實際用于特定的數(shù)據處理系統(tǒng)中。
本發(fā)明的說明已經被提供來用于圖解和說明的目的,不意欲窮盡的或限于所公開形式的本發(fā)明。許多修改和改變對于本領域內的那些普通技術人員來說是顯然的。所述的實施例被選擇和說明以便最好地解釋本發(fā)明的原理、實際的應用,并且使得本領域內的其他普通技術人員能夠明白本發(fā)明的、適用于所考慮的特定用途的、具有各種修改的各種實施例。
權利要求
1.一種在軟件環(huán)境中處理事務的方法,包括向參加事務的獨立資源提交事務;從獨立資源接收響應來指示所述資源是否能夠委托;以及如果從資源接收到響應來指示所述資源不能委托,則向不能委托的資源重新提交事務的一部分。
2.按照權利要求1的方法,其中來自獨立資源的響應是從與獨立資源相關聯(lián)的應用程序接口接收的一個或多個響應消息。
3.按照權利要求1的方法,其中如果來自獨立資源的響應指示不能委托資源,則所述響應還包括為什么資源不能委托的原因的標識符。
4.按照權利要求3的方法,還包括向來自資源的響應應用一個或多個規(guī)則以確定對資源執(zhí)行的適當差錯解析和差錯操作;以及在重新向資源提交事務之前對資源執(zhí)行差錯解析和恢復操作。
5.按照權利要求1的方法,還包括產生所述事務的事務狀態(tài)數(shù)據結構;以及向所述事務狀態(tài)數(shù)據結構填充關于參加事務的每個資源的信息。
6.按照權利要求5的方法,還包括響應于從獨立資源接收響應而更新所述事務狀態(tài)數(shù)據結構。
7.按照權利要求1的方法,其中在沒有事務管理器的軟件環(huán)境中實現(xiàn)所述方法。
8.按照權利要求1的方法,還包括如果來自資源的響應指示資源不能委托,則確定向資源重新提交事務的一部分的數(shù)量是否超過預定的門限;以及只有重新提交的數(shù)量小于或等于預定的門限時,向資源重新提交事務的一部分。
9.按照權利要求8的方法,還包括如果重新提交的數(shù)量大于預定的門限,則向差錯處理器傳送控制。
10.按照權利要求9的方法,其中所述差錯處理器恢復由委托為事務的一部分的資源做出的改變。
11.一種在計算機可讀介質中的計算機程序產品,用于處理在軟件環(huán)境中的事務,包括第一指令,用于向參加事務的獨立資源提交事務;以及第二指令,用于從獨立的資源接收響應來指示資源是否能夠委托;以及第三指令,用于如果從資源接收到指示資源不能委托的響應,則向不能委托的資源重新提交事務的一部分。
12.按照權利要求11的計算機程序產品,其中來自獨立資源的響應是從與獨立資源相關聯(lián)的應用程序接口接收的一個或多個響應消息。
13.按照權利要求11的計算機程序產品,其中如果來自獨立資源的響應指示資源不能委托,則所述響應還包括為什么資源不能委托的原因的標識符。
14.按照權利要求13的計算機程序產品,還包括第四指令,用于向來自資源的響應應用一個或多個規(guī)則以確定對資源執(zhí)行的適當差錯解析和差錯操作;以及第五指令,用于在重新向資源提交事務之前對資源執(zhí)行差錯解析和恢復操作。
15.按照權利要求11的計算機程序產品,還包括第四指令,用于產生所述事務的事務狀態(tài)數(shù)據結構;以及第五指令,用于向所述事務狀態(tài)數(shù)據結構填充關于參加事務的每個資源的信息。
16.按照權利要求15的計算機程序產品,還包括第六指令,用于響應于從獨立資源接收響應而更新所述事務狀態(tài)數(shù)據結構。
17.按照權利要求11的計算機程序產品,其中在沒有事務管理器的軟件環(huán)境中實現(xiàn)所述計算機程序產品。
18.按照權利要求11的計算機程序產品,還包括第四指令,用于如果來自資源的響應指示資源不能委托,則確定向資源重新提交事務的一部分的數(shù)量是否超過預定的門限,其中,只有重新提交的數(shù)量小于或等于預定的門限時,向資源重新提交事務的一部分。
19.按照權利要求18的計算機程序產品,還包括第五指令,用于如果重新提交的數(shù)量大于預定的門限,則向差錯處理器傳送控制。
20.按照權利要求19的計算機程序產品,其中所述差錯處理器恢復由委托為事務的一部分的資源做出的改變。
21.一種在軟件環(huán)境中處理事務的裝置,包括用于向參加事務的獨立資源提交事務的部件;用于從獨立資源接收響應來指示所述資源是否能夠委托的部件;以及用于如果從資源接收到響應來指示所述資源不能委托、則向不能委托的資源重新提交事務的一部分的部件。
22.按照權利要求21的裝置,其中來自獨立資源的響應是從與獨立資源相關聯(lián)的應用程序接口接收的一個或多個響應消息。
23.按照權利要求21的裝置,其中如果來自獨立資源的響應指示不能委托資源,則所述響應還包括為什么資源不能委托的原因的標識符。
24.按照權利要求23的裝置,還包括用于向來自資源的響應應用一個或多個規(guī)則以確定對資源執(zhí)行的適當差錯解析和差錯操作的部件;以及用于在重新向資源提交事務之前對資源執(zhí)行差錯解析和恢復操作的部件。
25.按照權利要求23的裝置,還包括用于產生所述事務的事務狀態(tài)數(shù)據結構的部件;以及用于向所述事務狀態(tài)數(shù)據結構填充關于參加事務的每個資源的信息的部件。
26.按照權利要求25的裝置,還包括用于響應于從獨立資源接收響應而更新所述事務狀態(tài)數(shù)據結構的部件。
27.按照權利要求21的裝置,其中所述裝置在沒有事務管理器的軟件環(huán)境中工作。
28.按照權利要求21的裝置,還包括用于如果來自資源的響應指示資源不能委托、則確定向資源重新提交事務的一部分的數(shù)量是否超過預定的門限的部件;以及用于只有重新提交的數(shù)量小于或等于預定的門限時、向資源重新提交事務的一部分的部件。
29.按照權利要求28的裝置,還包括用于如果重新提交的數(shù)量大于預定的門限,則向差錯處理器傳送控制的部件。
30.按照權利要求29的裝置,其中所述差錯處理器恢復由委托為事務的一部分的資源做出的改變。
31.一種在軟件環(huán)境中處理事務的裝置,包括一個或多個接口,用于與參加事務的多個資源通信;以及識別引擎,連接到所述多個接口,其中經由所述一個或多個接口,所述事務被提交到所述多個資源,并且從多個資源接收響應,其中所述響應指示一個對應的資源是否能夠委托,并且其中識別引擎根據所接收的響應來確定是否向響應它們不能委托的資源重新提交事務的一部分。
32.按照權利要求31的裝置,還包括一個重新提交規(guī)則數(shù)據庫,它具有一個或多個規(guī)則,用于確定如何向不能委托的資源重新提交事務的所述部分。
33.按照權利要求31的裝置,還包括事務狀態(tài)數(shù)據結構存儲器,用于存儲事務狀態(tài)數(shù)據結構,所述事務狀態(tài)數(shù)據結構用于識別參加事務的多個資源的每個的狀態(tài)。
34.按照權利要求33的裝置,其中根據從多個資源接收的響應來更新所述事務狀態(tài)數(shù)據結構。
35.按照權利要求33的裝置,其中識別引擎根據存儲在事務狀態(tài)數(shù)據結構中的狀態(tài)信息來確定是否向不能委托的資源重新提交事務的一部分。
全文摘要
本發(fā)明提供了一種用于保持在軟件環(huán)境中的數(shù)據的完整性的裝置和方法。利用所述裝置和方法,識別與事務相關聯(lián)的獨立軟件資源,并且開始處理這些資源。當這些資源的處理結束時,它們相關聯(lián)的API返回消息來指示軟件資源委托或者不能委托以及為什么軟件資源不能委托的原因。根據這個原因,執(zhí)行適當?shù)牟铄e解析和恢復操作,并且僅僅向那些不能委托的軟件資源重新提交事務。已經委托的軟件資源保持它們的狀態(tài)。以這種方式,避免恢復被委托的軟件資源。
文檔編號G06F17/30GK1573697SQ20041003437
公開日2005年2月2日 申請日期2004年4月14日 優(yōu)先權日2003年6月10日
發(fā)明者丹尼爾·M·多蘭斯, 里卡多·N·奧利維里 申請人:國際商業(yè)機器公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
夹江县| 平山县| 板桥市| 九江县| 仁化县| 巴林右旗| 漾濞| 咸丰县| 宜黄县| 安平县| 鹿泉市| 河间市| 平远县| 涟水县| 汝城县| 古浪县| 高要市| 芮城县| 天津市| 尚志市| 永新县| 洪雅县| 昭平县| 雷州市| 舒城县| 聂拉木县| 陆川县| 乐平市| 英山县| 龙游县| 华池县| 自贡市| 同心县| 溆浦县| 泽州县| 获嘉县| 河池市| 乡宁县| 勃利县| 正定县| 扶风县|