專利名稱:事務協(xié)調(diào)器、資源使用端、服務端及分布式事務處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式事務處理技術(shù),尤其涉及能夠?qū)崿F(xiàn)跨系統(tǒng)分布式事務處理的事務協(xié)調(diào)器、事務資源使用端、服務端以及事務資源使用端、服務端處理分布式事務的方法。
背景技術(shù):
隨著企業(yè)應用系統(tǒng)的廣泛發(fā)展,財務管理系統(tǒng)、管理分析系統(tǒng)、營業(yè)系統(tǒng),客戶關(guān)系管理系統(tǒng)、物流管理系統(tǒng)、計費系統(tǒng)等系統(tǒng)間存在著越來越多的信息交互,這要求企業(yè)數(shù)據(jù)具有一致性。企業(yè)數(shù)據(jù)一致性的需求要求數(shù)據(jù)操作具有原子性,一致性,隔離性,持久性(Atomicity,Consistency,Isolation,Durability,簡稱ACID),即要求進行分布式事務處理,并且事務處理需要在多個事務性資源間實現(xiàn)。
事務是指作為工作的單一邏輯單元而執(zhí)行的一系列操作。分布式事務是指兩個或更多事務資源(比如,兩個單獨的數(shù)據(jù)庫)之間的ACID事務。
現(xiàn)有的基于J2EE連接架構(gòu)(J2EE Connector Architecture,簡稱JCA)的事務統(tǒng)一框架實現(xiàn)了跨系統(tǒng)的事務統(tǒng)一。在該框架下,資源適配器(ResourceAdapter)提供了連接(Connection)和連接工廠(Connection Factory)接口,連接工廠負責創(chuàng)建與應用系統(tǒng)(Application System)的連接。連結(jié)管理(Connection Manager)統(tǒng)一管理不同應用系統(tǒng)的連接。當連接管理接收到來自連接工廠的連接請求時,連接管理從連接的緩存容器——連接池(PoolManager)中獲取連接。如果連接池無可用的連接,則會調(diào)用管理連接工廠(Managed Connection Factory)創(chuàng)建一個新的物理連接。
現(xiàn)有的基于JCA的事務統(tǒng)一構(gòu)架存在如下缺陷接口復雜,實現(xiàn)困難,甚至有些現(xiàn)有系統(tǒng)在機制上就無法實現(xiàn)JCA的標準接口,其僅適用于基于J2EE規(guī)范構(gòu)建的應用系統(tǒng),并不能解決不基于J2EE規(guī)范或者非Java應用系統(tǒng)的數(shù)據(jù)一致性需求,如C++應用,C#應用等。
發(fā)明內(nèi)容
本發(fā)明實施例的目的在于提供了接口簡單,符合數(shù)據(jù)一致性要求的事務協(xié)調(diào)器、事務資源使用端、事務資源服務端、以及事務資源使用端、服務端的分布式事務處理方法,實現(xiàn)跨系統(tǒng)分布式事務處理,并適用于基于J2EE、J2SE(Java 2 Standard Edition)、C++、C#等多種應用系統(tǒng)。
為了實現(xiàn)上述目的,本發(fā)明實施例提供了一種事務資源使用端的分布式事務處理方法,包括如下步驟注冊事務資源客戶端;利用所述事務資源客戶端向事務資源服務端提交攜帶有事務標識的提交請求;及注銷事務資源客戶端。
為了實現(xiàn)上述目的,本發(fā)明實施例還提供了一種事務資源服務端的分布式事務處理方法,包括根據(jù)業(yè)務操作請求中攜帶的事務標識查找對應的事務適配器;將當前事務替換為所述事務適配器;根據(jù)所述業(yè)務操作請求執(zhí)行業(yè)務操作;將資源管理器注冊到所述事務適配器;根據(jù)提交請求中攜帶的事務標識將所述提交請求轉(zhuǎn)發(fā)至所述事務適配器;及通過所述資源管理器執(zhí)行提交。
為了實現(xiàn)上述目的,本發(fā)明實施例又提供了一種事務協(xié)調(diào)器,包括事務代理模塊,用于通過注冊的事務資源客戶端提交攜帶有事務標識的提交請求;注冊模塊,用于注冊參與當前事務的事務資源客戶端,并將注冊信息通知所述事務代理模塊;所述事務資源客戶端至少為一個;提交請求轉(zhuǎn)發(fā)模塊,用于向事務代理模塊提交提交請求;以及注銷模塊,用于注銷當前事務的事務資源客戶端,并將注銷信息通知所述事務代理模塊。
為了實現(xiàn)上述目的,本發(fā)明實施例還提供了一種事務資源使用端,包括事務協(xié)調(diào)器,用于協(xié)調(diào)事務資源,進行分布式事務控制,該事務協(xié)調(diào)器包括事務代理模塊用于通過注冊的事務資源客戶端提交攜帶有事務標識的提交請求;注冊模塊,用于注冊參與當前事務的事務資源客戶端,并將注冊信息通知事務代理模塊;所述事務資源客戶端至少為一個;提交請求轉(zhuǎn)發(fā)模塊,用于向事務代理模塊提交提交請求;及注銷模塊,用于注銷當前事務的事務資源客戶端,并將注銷信息通知事務代理模塊;業(yè)務操作請求模塊,用于通過的事務資源客戶端提交攜帶有事務標識的業(yè)務操作請求;提交請求模塊,用于發(fā)起提交請求;事務資源客戶端,用于與事務資源服務端通信,提交業(yè)務操作請求及提交請求。
為了實現(xiàn)上述目的,本發(fā)明實施例再提供了一種事務資源服務端,包括事務映射模塊,用于查找事務標識對應的事務適配器;該事務映射模塊包括事務適配器,用于將提交請求轉(zhuǎn)發(fā)至注冊的資源管理器;記錄模塊,用于記錄事務標識與事務適配器的對應關(guān)系及查找模塊,用于查找事務標識對應的事務適配器;事務適配器創(chuàng)建模塊,用于創(chuàng)建事務適配器,并將事務標識與事務適配器保存至所述記錄模塊;資源管理器,用于根據(jù)所述提交請求執(zhí)行提交;事務管理器,用于將當前事務替換為所述事務適配器以及資源管理器的注冊及注銷。
本發(fā)明實施例由事務協(xié)調(diào)器在事務管理器上層控制事務,實現(xiàn)了分布式事務處理要求的原子性、一致性、隔離性和持久性,并且作為接口的事務適配器簡單易用;本發(fā)明實施例實現(xiàn)了跨系統(tǒng)的分布式事務處理,滿足了基于J2EE、J2SE(Java 2 Standard Edition)、C++、C#等多種應用系統(tǒng)的數(shù)據(jù)操作一致性需求。
圖1為本發(fā)明實施例事務資源使用端的第一結(jié)構(gòu)示意圖;圖2為本發(fā)明實施例事務資源服務端的第一結(jié)構(gòu)示意圖;圖3為本發(fā)明實施例事務資源使用端及事務資源服務端構(gòu)成的分布式事務處理系統(tǒng)的結(jié)構(gòu)示意圖;圖4為本發(fā)明實施例事務協(xié)調(diào)器的第一結(jié)構(gòu)示意圖;圖5為本發(fā)明實施例事務協(xié)調(diào)器的第二結(jié)構(gòu)示意圖;圖6為本發(fā)明實施例事務資源使用端的第二結(jié)構(gòu)示意圖;圖7為本發(fā)明實施例事務資源服務端的第二結(jié)構(gòu)示意圖;圖8為本發(fā)明實施例事務資源使用端的分布式事務處理方法的第一流程圖;圖9為本發(fā)明實施例事務資源服務端的分布式事務處理方法的第一流程圖;圖10為本發(fā)明實施例事務資源使用端的分布式事務處理方法的第二流程圖;圖11為本發(fā)明實施例事務資源服務端的分布式事務處理方法的第二流程圖;圖12為本發(fā)明實施例事務資源使用端的分布式事務處理方法的第三流程圖;圖13為本發(fā)明實施例事務資源服務端的分布式事務處理方法的第三流程圖。
具體實施例方式
如圖1所示,本發(fā)明實施例事務資源使用端的第一結(jié)構(gòu)示意圖。事務資源使用端1通過事務資源客戶端12使用事務資源服務端提供的服務。事務資源使用端1包括事務協(xié)調(diào)器11、事務資源客戶端12、業(yè)務操作請求模塊13以及提交請求模塊14。
事務協(xié)調(diào)器11用于協(xié)調(diào)事務資源并進行分布式事務控制,事務資源使用端1通過事務協(xié)調(diào)器11開始事務。事務資源客戶端12與事務資源服務端2(圖中未示出)一一對應,其用于與相應的事務資源服務端2通信,提交攜帶有事務標識的業(yè)務操作請求及提交請求,實現(xiàn)事務資源服務端2的業(yè)務調(diào)用。業(yè)務操作請求模塊13用于通過事務資源客戶端12提交攜帶有事務標識的業(yè)務操作請求,業(yè)務操作包括數(shù)據(jù)的增、刪、改、查及消息發(fā)布等。各事務資源客戶端12接收到業(yè)務操作請求后,注冊到事務協(xié)調(diào)器11中。提交請求模塊14用于發(fā)起提交請求,該模塊將提交請求發(fā)送至事務協(xié)調(diào)器11,事務協(xié)調(diào)器11通過注冊的事務資源客戶端12向事務資源服務端2發(fā)送提交請求。
當事務涉及多個事務資源客戶端時,業(yè)務操作請求模塊13可按照事務包含的各項操作的順序向操作對應的各事務資源客戶端12逐個發(fā)送業(yè)務操作請求,各事務資源客戶端接收到業(yè)務操作請求后注冊到事務協(xié)調(diào)器11中,從而事務協(xié)調(diào)器11可統(tǒng)一管理多個事務資源。
本實施例基于非JCA體系結(jié)構(gòu)實現(xiàn)了跨系統(tǒng)分布式事務處理,適用于基于J2EE、J2SE、C++及C#等多種系統(tǒng)。
如圖2所示,為本發(fā)明實施例事務資源服務端的第一結(jié)構(gòu)示意圖。事務資源服務端2用于通過事務資源客戶端12(圖中未示出)為事務資源使用端1(圖中未示出)提供服務資源,其包括事務映射模塊21、資源管理器22、事務管理器23及事務適配器創(chuàng)建模塊24。
事務映射模塊21用于查找事務標識對應的事務適配器,該事務映射模塊21包括事務適配器211、查找模塊212及記錄模塊213。事務適配器211用于接收提交請求并將提交請求轉(zhuǎn)發(fā)至注冊的資源管理器,每一事務適配器211用于管理事務資源服務端2參與的一個事務的操作,當事務資源服務端2參與了多個事務時,事務映射模塊21則包括多個事務適配器211。查找模塊212用于查找事務標識對應的事務適配器211。記錄模塊213用于記錄事務標識與事務適配器的對應關(guān)系。
資源管理器22用于根據(jù)提交請求執(zhí)行提交,其支持兩階段提交協(xié)議。事務管理器23用于將當前事務替換為所述事務適配器以及資源管理器的注冊及注銷,管理事務資源,如物理數(shù)據(jù)庫、支持事務的內(nèi)存數(shù)據(jù)庫以及支持事務接口的應用系統(tǒng)。事務適配器創(chuàng)建模塊24用于創(chuàng)建事務適配器211,事務資源服務端2接收到業(yè)務操作請求后,若沒有查找到事務標識相應的事務適配器,則創(chuàng)建事務適配器211,并將事務適配器211及對應的事務標識保存至記錄模塊213。
本實施例基于非JCA體系結(jié)構(gòu)實現(xiàn)了跨系統(tǒng)分布式事務處理,由事務適配器負責一次事務操作的管理,作為接口的事務適配器簡單易用,適用于基于J2EE、J2SE、C++及C#等的多種應用系統(tǒng)。
如圖3所示,為本發(fā)明實施例事務資源使用端及事務資源服務端構(gòu)成的分布式事務處理系統(tǒng)結(jié)構(gòu)示意圖。從本圖中可以看出,事務資源使用端1通過事務資源客戶端12與事務資源服務系統(tǒng)2連接,事務資源客戶端12與事務資源服務系統(tǒng)2一一對應。
如圖4所示,為本發(fā)明實施例事務協(xié)調(diào)器第一結(jié)構(gòu)示意圖。事務協(xié)調(diào)器11包括注冊模塊112、提交請求轉(zhuǎn)發(fā)模塊113、注銷模塊114及事務代理模塊115。
注冊模塊112用于注冊參與當前事務的事務資源客戶端12,并將注冊信息通知事務代理模塊115。事務資源客戶端12作為資源代理注冊到注冊模塊112。提交請求轉(zhuǎn)發(fā)模塊113接收到提交請求模塊14發(fā)送的提交請求后,通過事務代理模塊115提交攜帶有事務標識的提交請求。事務代理模塊115在一個事務中管理參與本事務的,即作為資源代理注冊的事務資源客戶端12,其通過事務資源客戶端12提交攜帶有事務標識的提交請求,并且支持以兩階段提交方式提交該提交請求。注銷模塊114用于在提交提交請求后將當前事務的事務資源客戶端12注銷,并將注銷信息通知事務代理模塊115。
本實施例的基于非JCA的事務協(xié)調(diào)器實現(xiàn)了跨系統(tǒng)的分布式事務管理,滿足基于J2EE、J2SE、C++及C#等的多種應用系統(tǒng)的數(shù)據(jù)操作一致性需求。
如圖5所示,本發(fā)明實施例的事務協(xié)調(diào)器還可包括創(chuàng)建模塊111,該模塊用于創(chuàng)建事務代理模塊115,并生成事務標識。
兩階段提交分為提交準備以及提交操作兩階段,在提交準備階段,事務資源收到請求后執(zhí)行數(shù)據(jù)修改和日志記錄等處理,處理完成后只是把事務的狀態(tài)改成“可以提交”,然后返回結(jié)果,報告是否準備完畢。如果所有的事務資源都準備就緒,則進入提交操作階段。在提交操作階段,事務的“可以提交”狀態(tài)改為“提交完成”狀態(tài)。
如圖6所示,為本發(fā)明實施例事務資源使用端第二結(jié)構(gòu)示意圖。本實施例將圖5所示事務協(xié)調(diào)器11應用于圖2所示的事務資源使用端實施例一,并且事務代理模塊115具體包括準備請求模塊1151以及操作請求模塊1152。
準備請求模塊1151用于提交攜帶有事務標識的提交準備請求;操作請求模塊1152用于在提交準備成功的情況下繼續(xù)向注冊的事務資源客戶端提交攜帶有事務標識的提交操作請求。
本實施例中,提交請求的提交采用兩階段方式,即第一階段是提交準備,第二階段提交操作,這樣,使用端可有效控制數(shù)據(jù)操作一致性,從而實現(xiàn)跨事務管理器的事務統(tǒng)一。
如圖7所示,為本發(fā)明的事務資源服務端實施例二結(jié)構(gòu)示意圖。本實施例與圖2所示實施例的區(qū)別在于,事務映射模塊21進一步加入了刪除模塊214,事務管理器23具體包括事務切換模塊231、資源注冊模塊232及資源注銷模塊233。
事務切換模塊231用于在接收到業(yè)務操作請求后,將當前事務由事務管理器23的事務替換為事務標識對應的事務適配器211,以及在執(zhí)行提交后,將當前事務由事務適配器211替換為事務管理器23的事務。
資源注冊模塊232用于將參與本次事務的資源管理器22注冊到事務標識對應的事務適配器211,從而,事務適配器211可以將接收到的提交請求轉(zhuǎn)發(fā)至相應的資源管理器22。
資源注銷模塊233用于在執(zhí)行提交后將資源管理器22從事務適配器211中注銷。
事務映射模塊21的刪除模塊213用于在執(zhí)行提交后,刪除事務標識對應的事務適配器211及事務標識與事務適配器的對應關(guān)系,從而可及時釋放空間。
如圖8所示,為本發(fā)明實施例的事務資源使用端的分布式事務處理方法第一流程圖,包括如下步驟步驟A101、注冊事務資源客戶端;步驟A102、利用注冊的事務資源客戶端向事務資源服務端提交攜帶有事務標識的提交請求;步驟A103、注銷事務資源客戶端。
本實施例基于非JCA體系結(jié)構(gòu)實現(xiàn)了跨系統(tǒng)分布式事務處理,適用于基于J2SE、J2EE的應用系統(tǒng)以及基于C++、C#等的非Java應用系統(tǒng)。
如圖9所示,為本發(fā)明實施例事務資源服務端的分布式事務處理方法第一流程圖,包括如下步驟步驟B101、根據(jù)業(yè)務操作請求中攜帶的事務標識,查找事務標識對應的事務適配器;步驟B102、將當前事務由事務管理器的事務替換為事務適配器;;步驟B103、根據(jù)業(yè)務操作請求執(zhí)行業(yè)務操作,業(yè)務操作包括數(shù)據(jù)的增、刪、改、查及消息發(fā)布等;
步驟B104、將資源管理器注冊到事務標識對應的事務適配器;步驟B105、根據(jù)提交請求中攜帶的事務標識將提交請求轉(zhuǎn)發(fā)至相應的事務適配器,事務適配器通過注冊的資源管理器執(zhí)行提交。
本實施例基于非JCA體系結(jié)構(gòu)實現(xiàn)了跨系統(tǒng)分布式事務處理,適用于基于J2SE或者非Java應用系統(tǒng),由事務適配器負責一次事務操作的管理,作為接口的事務適配器簡單易用。
如圖10所示,為本發(fā)明實施例事務資源使用端的分布式事務處理方法第二流程圖。本實施例事務協(xié)調(diào)器通過事務代理模塊管理協(xié)調(diào)事務操作,在提交提交請求時采用兩階段提交方式,從而使用端可有效地控制事務統(tǒng)一。本實施例包括如下步驟步驟A201、創(chuàng)建事務代理模塊,生成事務標識;步驟A202、向參與事務的事務資源客戶端發(fā)送業(yè)務操作請求;步驟A203對事務資源客戶端進行注冊并將注冊信息通知事務代理模塊;步驟A204事務資源客戶端向事務資源服務端提交攜帶有事務標識的業(yè)務操作請求;步驟A205、判斷業(yè)務操作請求是否成功,若成功執(zhí)行步驟A206;步驟A206、向事務代理模塊提交提交請求;步驟A207、事務代理模塊通過注冊的事務資源客戶端向事務資源服務端提交攜帶有事務標識的提交準備請求;步驟A208、判斷提交準備是否成功,若成功執(zhí)行步驟A209;步驟A209、事務代理模塊通過注冊的事務資源客戶端向事務資源服務端提交攜帶有事務標識的提交操作請求。
本實施例中,提交請求的提交采用兩階段提交方式,即第一階段提交提交準備請求,第二階段進行提交提交操作請求,這樣,使用端可有效控制數(shù)據(jù)操作一致性,從而實現(xiàn)跨事務管理器的事務統(tǒng)一。
如圖11所示,為本發(fā)明實施例事務資源服務端的分布式事務處理方法第二流程圖。本實施例配合事務資源使用端的兩階段提交方式,包括如下步驟步驟B201、接收業(yè)務操作請求,根據(jù)業(yè)務操作請求中攜帶的事務標識查找對應的事務適配器;步驟B202、將當前事務由事務管理器的事務替換為事務適配器;步驟B203、執(zhí)行業(yè)務操作;步驟B204、將資源管理器注冊到事務標識對應的事務適配器;步驟B205、接收提交準備請求,根據(jù)提交準備請求中攜帶的事務標識將提交準備請求轉(zhuǎn)發(fā)至相應的事務適配器,事務適配器通過注冊的資源管理器執(zhí)行提交準備并返回執(zhí)行結(jié)果;步驟B206、接收提交操作請求,根據(jù)提交操作請求中攜帶的事務標識將提交準備請求轉(zhuǎn)發(fā)至相應的事務適配器,事務適配器通過注冊的資源管理器執(zhí)行提交操作。
本實施例實現(xiàn)了基于非JCA的跨系統(tǒng)事務協(xié)調(diào),通過暴露事務管理器的提交準備接口,事務統(tǒng)一可由事務資源使用端統(tǒng)一控制,在事務管理器的上層控制事務,實現(xiàn)分布式事務處理要求的原子性、一致性、隔離性和持久性。
如圖12所示,為本發(fā)明實施例事務資源使用端的分布式事務處理方法第三流程圖。本實施例中參與事務的事務資源有多個,在創(chuàng)建事務時,需要對多個事務資源客戶端逐個發(fā)起業(yè)務請求,對其進行注冊,并逐個發(fā)送提交準備請求及提交操作請求。本實施例包括如下步驟步驟A301、事務資源使用端應用通過事務協(xié)調(diào)器開始事務;步驟A302、事務協(xié)調(diào)器創(chuàng)建事務代理模塊并生成事務標識,該事務標識可以為事務序列號;步驟A303、事務資源使用端應用向參與事務的事務資源客戶端發(fā)送業(yè)務操作請求;步驟A304、事務資源客戶端作為資源代理注冊到事務協(xié)調(diào)器;步驟A305、事務協(xié)調(diào)器將注冊信息通知事務代理模塊;
步驟A306、事務資源客戶端向事務資源服務端提交攜帶有事務標識的業(yè)務操作請求;步驟A307、判斷業(yè)務操作請求是否成功,若成功執(zhí)行步驟A308;對于各事務資源,判斷各業(yè)務操作請求是否成功的方法可能不同,有的系統(tǒng)無論執(zhí)行成功還是失敗,均會返回響應,有的系統(tǒng)只會在出現(xiàn)異常時返回響應,這需要根據(jù)系統(tǒng)的具體定義來確定;步驟A308、判斷是否參與本次事務的所有事務資源客戶端均已注冊,并已發(fā)送業(yè)務操作請求,若是,執(zhí)行步驟A309,否則,執(zhí)行步驟A303;步驟A309、事務資源使用端應用向事務協(xié)調(diào)器提交提交請求;步驟A310、事務協(xié)調(diào)器向事務代理模塊轉(zhuǎn)發(fā)提交請求;步驟A311、事務代理模塊向注冊的事務資源客戶端提交攜帶有事務標識的提交準備請求;步驟A312、事務資源客戶端向事務資源服務端提交攜帶有事務標識的提交準備請求;步驟A313、事務資源客戶端接收事務資源服務端返回的響應步驟A314、事務資源客戶端將響應轉(zhuǎn)發(fā)至事務代理模塊;步驟A315、事務代理模塊判斷提交準備是否成功,若成功執(zhí)行步驟A316;步驟A316、判斷是否已向注冊的各事務資源客戶端發(fā)送提交準備請求,若是,執(zhí)行步驟A317,否則執(zhí)行步驟A311;步驟A317、事務代理模塊向注冊的事務資源客戶端提交攜帶有事務標識的提交操作請求;步驟A318、事務資源客戶端向事務資源服務端提交攜帶有事務標識的提交操作請求;步驟A319、事務協(xié)調(diào)器注銷事務資源客戶端;步驟A320、事務協(xié)調(diào)器將注銷信息通知事務代理模塊;步驟A321、判斷是否已向注冊的各事務資源客戶端發(fā)送提交操作請求,若否,執(zhí)行步驟A317。
本實施例實現(xiàn)了基于非JCA的跨系統(tǒng)事務協(xié)調(diào),通過暴露事務管理器的提交準備接口,事務協(xié)調(diào)器可主動控制跨越事務管理器的事務統(tǒng)一,在事務管理器的上層控制事務,實現(xiàn)分布式事務處理要求的原子性、一致性、隔離性和持久性。
如圖13所示,為本發(fā)明實施例事務資源服務端的分布式事務處理方法第三流程圖。本實施例中事務的執(zhí)行涉及多個資源管理器,在執(zhí)行業(yè)務操作以及執(zhí)行提交時,依次向各資源管理器轉(zhuǎn)發(fā)請求,在事務執(zhí)行完畢后注銷各資源管理器并刪除事務標識。本實施例具體包括如下步驟步驟B301、事務資源服務端應用接收業(yè)務操作請求;步驟B302、事務資源服務端應用向事務映射模塊發(fā)查詢請求;步驟B303、事務映射模塊查找事務標識對應的事務適配器;若查找到,執(zhí)行步驟B306,否則,執(zhí)行步驟B304;步驟B304、事務資源服務端應用創(chuàng)建事務適配器;步驟B305、事務資源服務端將事務適配器與事務標識進行保存;步驟B306、事務資源服務端將當前事務由事務管理器的事務替換為事務標識對應的事務適配器;步驟B307、事務資源服務端應用執(zhí)行業(yè)務操作;步驟B308、執(zhí)行業(yè)務操作過程中調(diào)用多個資源管理器;步驟B309、各資源管理器獲取事務;步驟B310、各資源管理器注冊到事務適配器;步驟B311、事務資源服務端應用接收提交準備請求;步驟B312、事務資源服務端應用向事務映射模塊查詢事務標識對應的事務適配器;步驟B313、事務映射模塊查找事務標識對應的事務適配器并向事務資源服務端應用返回查找結(jié)果;
步驟B314、事務資源服務端應用將提交準備請求轉(zhuǎn)發(fā)至事務標識對應的事務適配器;步驟B315、事務適配器向注冊的資源管理器發(fā)送提交準備請求;步驟B316、資源管理器執(zhí)行提交準備,向事務適配器返回執(zhí)行結(jié)果;步驟B317、事務適配器判斷提交準備是否成功,若是,執(zhí)行步驟B318;步驟B318、事務適配器判斷是否注冊的各資源管理器均已執(zhí)行提交準備,若是,執(zhí)行步驟B319,否則,執(zhí)行步驟B315;步驟B319、事務適配器向事務資源服務端應用返回執(zhí)行結(jié)果;步驟B320、事務資源服務端應用向事務資源客戶端返回執(zhí)行結(jié)果;步驟B321、事務資源服務端應用接收提交操作請求;步驟B322、事務資源服務端應用向事務映射模塊查詢事務標識對應的事務適配器;步驟B323、事務映射模塊查找事務標識對應的事務適配器并向事務資源服務端應用返回查找結(jié)果;步驟B324、事務資源服務端應用將提交操作請求轉(zhuǎn)發(fā)至事務標識對應的事務適配器;步驟B325、事務適配器向注冊的資源管理器發(fā)送提交操作請求;步驟B326、資源管理器執(zhí)行提交操作;從事務適配器中注銷資源管理器;步驟B327、事務適配器判斷是否注冊的各資源管理器均已執(zhí)行提交操作,若是,執(zhí)行步驟B328,否則,執(zhí)行步驟B325;步驟B328、事務資源服務端刪除事務映射模塊中的事務標識對應的事務適配器;步驟B329、事務資源服務端將將當前事務由事務適配器替換為事務管理器的事務。
本實施例實現(xiàn)了基于非JCA的多事務資源協(xié)調(diào),通過暴露事務管理器的提交準備接口,事務統(tǒng)一可由事務資源使用端統(tǒng)一控制,在事務管理器的上層控制事務,實現(xiàn)分布式事務處理要求的原子性、一致性、隔離性和持久性。
本發(fā)明實施例實現(xiàn)了基于非JCA的事務統(tǒng)一,滿足了基于J2EE、J2SE(Java 2 Standard Edition)的應用系統(tǒng)以及基于C++、C#等的非Java應用系統(tǒng)的數(shù)據(jù)操作一致性需求;暴露事務管理器的提交準備接口,由使用端控制事務管理器的事務統(tǒng)一;在事務管理器上層控制事務,實現(xiàn)了分布式事務處理要求的原子性、一致性、隔離性和持久性,并且與JCA架構(gòu)相比,接口簡單易用。
最后應當說明的是以上實施例僅用以說明本發(fā)明的技術(shù)方案而非對其限制;對本發(fā)明的具體實施方式
進行修改或者對部分技術(shù)特征進行等同替換,而不脫離本發(fā)明技術(shù)方案精神的,其均應涵蓋在本發(fā)明請求保護的技術(shù)方案范圍當中。
權(quán)利要求
1.一種事務資源使用端的分布式事務處理方法,其特征在于,所述方法包括如下步驟注冊事務資源客戶端;利用所述事務資源客戶端向事務資源服務端提交攜帶有事務標識的提交請求;及注銷所述事務資源客戶端。
2.根據(jù)權(quán)利要求1所述的事務資源使用端的分布式事務處理方法,其特征在于,所述注冊事務資源客戶端的步驟之前還包括如下步驟創(chuàng)建事務代理模塊;及生成事務標識;所述事務代理模塊,用于通過注冊的事務資源客戶端提交攜帶有事務標識的提交請求。
3.根據(jù)權(quán)利要求2所述的事務資源使用端的分布式事務處理方法,其特征在于,所述生成事務標識的步驟之后,所述分布式事務處理方法還包括向事務資源客戶端發(fā)送攜帶有事務標識的業(yè)務操作請求的步驟。
4.根據(jù)權(quán)利要求2所述的事務資源使用端的分布式事務處理方法,其特征在于,在對事務資源客戶端進行注冊的步驟之后還包括將注冊信息通知事務代理模塊的步驟。
5.根據(jù)權(quán)利要求1所述的事務資源使用端的分布式事務處理方法,其特征在于,所述通過注冊的事務資源客戶端向事務資源服務端提交攜帶有事務標識的提交請求的步驟具體為采用兩階段提交方式通過注冊的事務資源客戶端向事務資源服務端提交攜帶有事務標識的提交請求。
6.根據(jù)權(quán)利要求3所述的事務資源使用端的分布式事務處理方法,其特征在于,所述向事務資源客戶端發(fā)送業(yè)務操作請求的步驟具體為依次向各參與當前事務的事務資源客戶端發(fā)送業(yè)務操作請求。
7.根據(jù)權(quán)利要求1至6任意一項所述的分布式事務處理方法,其特征在于,所述注冊事務資源客戶端的步驟具體為依次注冊參與當前事務的各事務資源客戶端。
8.根據(jù)權(quán)利要求1至6任意一項所述的事務資源使用端的分布式事務處理方法,其特征在于,所述通過注冊的事務資源客戶端向事務資源服務端提交攜帶有事務標識的提交請求的步驟具體為向注冊的多個事務資源客戶端依次提交攜帶有事務標識的提交準備請求,若均成功,則向該多個事務資源客戶端依次提交攜帶有事務標識的提交操作請求。
9.一種事務資源服務端的分布式事務處理方法,其特征在于,所述方法包括根據(jù)業(yè)務操作請求中攜帶的事務標識查找對應的事務適配器;將當前事務替換為所述事務適配器;根據(jù)所述業(yè)務操作請求執(zhí)行業(yè)務操作;將資源管理器注冊到所述事務適配器;根據(jù)提交請求中攜帶的事務標識將所述提交請求轉(zhuǎn)發(fā)至所述事務適配器;及通過所述資源管理器執(zhí)行提交。
10.根據(jù)權(quán)利要求9所述的事務資源服務端的分布式事務處理方法,其特征在于,所述根據(jù)業(yè)務操作請求中攜帶的事務標識查找對應的事務適配器的步驟后,若不存在事務標識對應的事務適配器,則創(chuàng)建事務適配器,并記錄事務標識與事務適配器的對應關(guān)系。
11.根據(jù)權(quán)利要求9所述的事務資源服務端的分布式事務處理方法,其特征在于,在執(zhí)行提交后,刪除所述事務適配器以及所述事務標識與事務適配器的對應關(guān)系,并將當前事務由事務適配器替換為事務管理器的事務。
12.根據(jù)權(quán)利要求9所述的事務資源服務端的處理分布式事務處理方法,其特征在于,所述根據(jù)提交請求中攜帶的事務標識將所述提交請求轉(zhuǎn)發(fā)至所述事務適配器的步驟具體為根據(jù)提交請求中攜帶的事務標識查找對應的事務適配器,將提交請求轉(zhuǎn)發(fā)至該事務適配器。
13.一種事務協(xié)調(diào)器,其特征在于,所述事務協(xié)調(diào)器包括事務代理模塊,用于利用注冊的事務資源客戶端提交攜帶有事務標識的提交請求;注冊模塊,用于注冊參與當前事務的事務資源客戶端,并將注冊信息通知所述事務代理模塊,所述事務資源客戶端至少為一個;提交請求轉(zhuǎn)發(fā)模塊,用于向事務代理模塊轉(zhuǎn)發(fā)提交請求;及注銷模塊,用于注銷當前事務的事務資源客戶端,并將注銷信息通知所述事務代理模塊。
14.根據(jù)權(quán)利要求13所述的事務協(xié)調(diào)器,其特征在于,所述事務協(xié)調(diào)器還包括創(chuàng)建模塊,用于創(chuàng)建事務代理模塊,生成事務標識。
15.根據(jù)權(quán)利要求13或14所述的事務協(xié)調(diào)器,其特征在于,所述事務代理模塊具體為采用兩階段提交方式提交攜帶有事務標識的提交請求的事務代理模塊。
16.根據(jù)權(quán)利要求13或14所述的事務協(xié)調(diào)器,其特征在于,所述事務代理模塊具體包括準備請求模塊,用于提交攜帶有事務標識的提交準備請求;操作請求模塊,用于向注冊的事務資源客戶端提交攜帶有事務標識的提交操作請求。
17.一種事務資源使用端,其特征在于,所述事務資源使用端包括事務協(xié)調(diào)器,用于協(xié)調(diào)事務資源,進行分布式事務控制;該事務協(xié)調(diào)器包括事務代理模塊,用于通過注冊的事務資源客戶端提交攜帶有事務標識的提交請求;注冊模塊,用于注冊參與當前事務的事務資源客戶端,并將注冊信息通知事務代理模塊;所述事務資源客戶端至少為一個;提交請求轉(zhuǎn)發(fā)模塊,用于向事務代理模塊轉(zhuǎn)發(fā)提交請求;及注銷模塊,用于注銷當前事務的事務資源客戶端,并將注銷信息通知事務代理模塊;業(yè)務操作請求模塊,用于通過的事務資源客戶端提交攜帶有事務標識的業(yè)務操作請求;及提交請求模塊,用于發(fā)起提交請求;事務資源客戶端,用于與事務資源服務端通信,提交業(yè)務操作請求及提交請求。
18.根據(jù)權(quán)利要求17所述的事務資源使用端,其特征在于,所述事務協(xié)調(diào)器還包括創(chuàng)建模塊,用于創(chuàng)建事務代理模塊,生成事務標識。
19.根據(jù)權(quán)利要求17所述的事務資源使用端,其特征在于,所述事務代理模塊具體為采用兩階段提交方式提交攜帶有事務標識的提交請求的事務代理模塊。
20.根據(jù)權(quán)利要求17所述的事務資源使用端,其特征在于,所述事務代理模塊具體包括準備請求模塊,用于提交攜帶有事務標識的提交準備請求;操作請求模塊,用于向注冊的事務資源客戶端提交攜帶有事務標識的提交操作請求。
21.一種事務資源服務端,其特征在于,所述事務資源服務端包括事務映射模塊,用于查找事務標識對應的事務適配器;該事務映射模塊包括事務適配器,用于將提交請求轉(zhuǎn)發(fā)至注冊的資源管理器;記錄模塊,用于記錄事務標識與事務適配器的對應關(guān)系;及查找模塊,用于查找事務標識對應的事務適配器;事務適配器創(chuàng)建模塊,用于創(chuàng)建事務適配器,并將事務標識與事務適配器保存至所述記錄模塊;資源管理器,用于根據(jù)所述提交請求執(zhí)行提交;及事務管理器,用于將當前事務替換為所述事務適配器以及資源管理器的注冊及注銷。
22.根據(jù)權(quán)利要求21所述的事務資源服務端,其特征在于,所述事務管理器具體包括事務切換模塊,用于將當前事務由事務管理器的事務替換為事務標識對應的事務適配器,以及在執(zhí)行提交后,將當前事務由事務適配器替換為事務管理器的事務;資源注冊模塊,用于將資源管理器注冊到事務標識對應的事務適配器;資源注銷模塊,用于將資源管理器從事務適配器中注銷。
23.根據(jù)權(quán)利要求21或22所述的事務資源服務端,其特征在于,所述事務映射模塊進一步包括刪除模塊,用于在執(zhí)行提交后,刪除事務標識對應的事務適配器。
全文摘要
本發(fā)明涉及事務協(xié)調(diào)器,事務資源使用端、服務端以及事務資源使用端、服務端處理分布式事務的方法。使用端對事務資源客戶端進行注冊;通過注冊的事務資源客戶端提交提交請求;注銷事務資源客戶端。服務端根據(jù)業(yè)務操作請求中攜帶的事務標識查找對應的事務適配器;將當前事務替換為所述事務適配器;;執(zhí)行業(yè)務操作;將資源管理器注冊到事務標識對應的事務適配器;根據(jù)提交請求中攜帶的事務標識將所述提交請求轉(zhuǎn)發(fā)至相應的事務適配器,通過注冊的資源管理器執(zhí)行提交。本發(fā)明實施例實現(xiàn)了基于非JCA的事務統(tǒng)一,接口簡單,滿足基于J2EE、J2SE的應用系統(tǒng)以及基于C++、C#等的非Java應用系統(tǒng)的數(shù)據(jù)操作一致性需求,并實現(xiàn)了跨事務管理器的事務統(tǒng)一。
文檔編號G06F9/46GK101046815SQ20071006441
公開日2007年10月3日 申請日期2007年3月14日 優(yōu)先權(quán)日2007年3月14日
發(fā)明者劉詩凱, 沈青春 申請人:華為技術(shù)有限公司