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

一種事務(wù)恢復(fù)方法和事務(wù)恢復(fù)裝置的制作方法

文檔序號:6358967閱讀:181來源:國知局
專利名稱:一種事務(wù)恢復(fù)方法和事務(wù)恢復(fù)裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及事務(wù)恢復(fù)技術(shù),尤其涉及一種事務(wù)恢復(fù)方法和事務(wù)恢復(fù)裝置。
背景技術(shù)
Χ/Open 組織為分布式事務(wù)處理(Distributed Transaction Processing, DTP)定義了分布式事務(wù)處理模型,該模型包括應(yīng)用程序(Application,AP)、事務(wù)管理器(Transaction Manager, TM)、資源管理器(Resource Manager, RM)和通信資源管理器 (Communication Resource Manager,CRM)四個部分。一般而言,事務(wù)管理器通常是交易中間件,資源管理器通常是數(shù)據(jù)庫,通信資源管理器通常是消息中間件。通常情況下,交易中間件都兼具事務(wù)管理器和通信資源管理器的功能。為實現(xiàn)交易中間件與資源管理器之間的交互,X/Open組織定義了一種兩階段接口規(guī)范,即擴展架構(gòu)(extended Architecture, ΧΑ) 0在第一階段,交易中間件請求各相關(guān)數(shù)據(jù)庫(即資源管理器)預(yù)提交(Xa_prepare)各自的事務(wù)分支,以確定各數(shù)據(jù)庫是否可以提交各自的事務(wù)分支。在第二階段,交易中間件審查所有數(shù)據(jù)庫返回的預(yù)提交結(jié)果,如確定所有數(shù)據(jù)庫都可以提交,交易中間件將要求所有數(shù)據(jù)庫做正式提交(Xa_COmmit)。當(dāng)交易中間件與數(shù)據(jù)庫之間的交互出現(xiàn)問題(例如網(wǎng)絡(luò)故障等)時,有可能需要對一些事務(wù)分支執(zhí)行恢復(fù)操作。為此,XA專門定義了恢復(fù)(xa_recover)接口。交易中間件通過Xa_reC0Ver接口向數(shù)據(jù)庫請求發(fā)起失敗事務(wù)查詢請求,以請求尚未成功提交的事務(wù)分支,然后執(zhí)行恢復(fù)操作。具體來說,在交易中間件與數(shù)據(jù)庫交互以提交事務(wù)分支的過程中,交易中間件一側(cè)會首先記錄該事務(wù)分支的提交狀態(tài),并根據(jù)數(shù)據(jù)庫一側(cè)對事務(wù)分支的提交結(jié)果(例如預(yù)提交結(jié)果,正式提交結(jié)果等)對記錄的狀態(tài)進行更新。交互過程中數(shù)據(jù)庫一側(cè)的提交結(jié)果可能會因網(wǎng)絡(luò)傳輸問題未能到達交易中間件一側(cè),在這種情況下,如果交易中間件重新啟動,則盡管重新啟動之后的交易中間件仍然會保留重新啟動前記錄的提交狀態(tài),但該提交狀態(tài)將顯然落后于數(shù)據(jù)庫一側(cè)的提交狀態(tài),即數(shù)據(jù)庫一側(cè)記錄的提交狀態(tài)是最準確的。例如,盡管一些事務(wù)在交易中間件一側(cè)顯示仍處于提交過程中,但實際上該事務(wù)分支在數(shù)據(jù)庫一側(cè)已提交成功。因此,XA規(guī)定交易中間件需要通過xajecover接口向數(shù)據(jù)庫請求數(shù)據(jù)庫一側(cè)記錄的尚未提交成功的事務(wù)分支,并根據(jù)交易中間件自身記錄的提交狀態(tài)對該事務(wù)分支進行恢復(fù)。例如,當(dāng)交易中間件通過Xa_reC0Ver接口獲得的尚未提交成功的事務(wù)分支為處于第一階段即預(yù)提交階段的事務(wù)分支時,交易中間件在對該事務(wù)分支進行恢復(fù)時將執(zhí)行回滾(rollback)操作。當(dāng)交易中間件通過Xa_reC0Ver接口獲得的尚未提交成功的事務(wù)分支為處于第二階段即正式提交階段的事務(wù)分支時,交易中間件在對該事務(wù)分支執(zhí)行恢復(fù)時將執(zhí)行重新執(zhí)行正式提交操作??蛻粜畔⒖刂葡到y(tǒng)(CustomerInformation Control System, CICS)是由國際商 (International Business Machines Corporation, IBM) Jf胃白勺一禾中
件產(chǎn)品,其符合X/Open組織提出的DTP模型的要求。依照IBM的設(shè)計,CICS應(yīng)用服務(wù)器(Application Server, AS)進程在啟動(例如CICS重新啟動,CICS根據(jù)負載情況自動增加CICS AS進程,CICS終止超時交易對應(yīng)的CICS AS進程,并啟動一個新的CICS AS進程)時需要通過Xa_reC0Ver接口發(fā)起失敗事務(wù)查詢請求,以便向數(shù)據(jù)庫請求在第一階段或第二階段中尚未成功提交的事務(wù)(即失敗事務(wù)),繼而執(zhí)行恢復(fù)操作。在查找尚未成功提交的事務(wù)時,數(shù)據(jù)庫需要申請數(shù)據(jù)庫鎖(Lock),并查詢事務(wù)狀態(tài)表。例如,對于甲骨文公司(Oracle)的數(shù)據(jù)庫系統(tǒng)而言,數(shù)據(jù)庫需要以共享(Siare) 方式申請分布式事務(wù)鎖(Distributed transaction entry,DX鎖),來查詢未完成的事務(wù), 例如從dba_pending_transaction視圖中查詢未完成的事務(wù)。然而,上述數(shù)據(jù)庫鎖有可能很難申請,由此導(dǎo)致通過Xa_reC0Ver接口發(fā)起的失敗事務(wù)查詢請求被掛起。例如對于Oracle數(shù)據(jù)庫系統(tǒng)而言,如果某個大的分布式事務(wù)(例如正在通過數(shù)據(jù)庫鏈路(Database Link, DBLink)導(dǎo)入數(shù)據(jù))以獨占(Exclusive,也稱排他)方式申請了 DX鎖,該DX鎖會以獨占方式鎖定dba_pending_transacti0n視圖。如果 dba_pending_transaction中記錄有相關(guān)事務(wù)分支,由于查詢操作需要申請的共享鎖只有在這個獨占鎖釋放后才能申請到,所以對上述相關(guān)事務(wù)分支的查詢操作都會被阻塞,直到這個大的分布式事務(wù)結(jié)束使得獨占鎖得以釋放。由此可見,通過Xa_reC0Ver接口讀取dba_ pending—transaction中事務(wù)分支記錄的操作很容易發(fā)生阻塞。如此一來,CICS AS進程將無法及時啟動。

發(fā)明內(nèi)容
有鑒于此,實有必要提供一種事務(wù)恢復(fù)方法,以解決CICS AS進程在啟動過程中因數(shù)據(jù)庫無法及時申請到數(shù)據(jù)庫鎖而導(dǎo)致CICS AS進程無法及時獲取尚未成功提交的事務(wù)至使CICS AS進程無法及時啟動的問題。同時,提供一種事務(wù)恢復(fù)裝置,以解決CICS AS進程在啟動過程中因數(shù)據(jù)庫無法及時申請到數(shù)據(jù)庫鎖而導(dǎo)致CICS AS進程無法及時獲取尚未成功提交的事務(wù)至使CICS AS進程無法及時啟動的問題。依據(jù)本發(fā)明的一個方面,提供一種事務(wù)恢復(fù)方法,包括攔截一客戶信息控制系統(tǒng)應(yīng)用服務(wù)器進程CICS AS進程發(fā)往資源管理器RM的事務(wù)恢復(fù)請求xa_recover ;在記錄的事務(wù)中查找該CICS AS進程負責(zé)的未完成的事務(wù);在找到所述未完成的事務(wù)時,將該未完成的事務(wù)返回給所述CICS AS進程,以便所述CICS AS進程對所述未完成的事務(wù)進行恢復(fù)。依據(jù)本發(fā)明的一個方面,提供一種事務(wù)恢復(fù)裝置,包括攔截模塊,用于攔截一客戶信息控制系統(tǒng)應(yīng)用服務(wù)器進程CICS AS進程發(fā)往資源管理器RM的事務(wù)恢復(fù)請求xa_recover ;查找模塊,用于在記錄的事務(wù)中查找該CICS AS進程負責(zé)的未完成的事務(wù);返回模塊,用于在查找模塊找到所述未完成的事務(wù)時,將該未完成的事務(wù)返回給所述CICS AS進程,以便所述CICS AS進程對所述未完成的事務(wù)進行恢復(fù)。本發(fā)明實施例提供的事務(wù)恢復(fù)方法記錄待提交的每一事務(wù),并將該事務(wù)的狀態(tài)標記為未完成,并在該事務(wù)提交成功時將該事務(wù)的狀態(tài)標記為已完成。在這種情況下,在CICS AS進程啟動后通過Xa_reC0Ver接口請求尚未成功提交的事務(wù)時,可直接在記錄的事務(wù)中查找該CICS AS進程負責(zé)的未完成的事務(wù)返回給CICS AS進程,而無需向數(shù)據(jù)庫請求尚未成功提交的事務(wù)。如此一來便無需申請數(shù)據(jù)庫鎖,從而使得尚未成功提交的事務(wù)可及時返回給CICS AS進程,實現(xiàn)CICS AS進程的及時啟動。


圖1是依據(jù)本發(fā)明一實施例的事務(wù)恢復(fù)方法的示范性流程圖;圖2是依據(jù)本發(fā)明一實施例的事務(wù)恢復(fù)方法的示范性信令圖;圖3是依據(jù)本發(fā)明一實施例的事務(wù)恢復(fù)方法的示范性信令圖;圖4是依據(jù)本發(fā)明一實施例的事務(wù)恢復(fù)裝置的邏輯結(jié)構(gòu)示意圖。
具體實施例方式圖1是依據(jù)本發(fā)明一實施例的事務(wù)恢復(fù)方法100的示范性流程圖。步驟102,攔截一 CICS AS進程發(fā)往資源管理器的事務(wù)恢復(fù)請求Xa_reC0Ver ;步驟104,在記錄的事務(wù)中查找該CICS AS進程負責(zé)的未完成的事務(wù);步驟106,在找到所述未完成的事務(wù)時,將該未完成的事務(wù)返回給所述CICSAS進程,以便所述CICS AS進程對所述未完成的事務(wù)進行恢復(fù)。在具體實現(xiàn)過程中,方法100還包括,在監(jiān)聽到上述CICS AS進程發(fā)往上述資源管理器的針對任一事務(wù)的預(yù)提交請求Xa_prepare時,記錄上述事務(wù),并將該事務(wù)的狀態(tài)標記為未完成。此后,方法100還包括,在監(jiān)聽到上述資源管理器發(fā)往上述CICS AS進程的針對上述事務(wù)即上述任一事務(wù)的提交成功通知時,將所述事務(wù)的狀態(tài)標記為已完成。其中,該提交成功通知可以是上述資源管理器響應(yīng)上述CICS AS進程針對上述事務(wù)發(fā)出的預(yù)提交請求xa_pr印are而返回的只讀通知Xa_rdonly。此外,上述提交成功通知還可以是上述資源管理器響應(yīng)上述CICS AS進程針對上述事務(wù)發(fā)出的正式提交請求Xa_COmmit而返回的xa_ commit執(zhí)行成功通知。最后,上述提交成功通知還可以是上述資源管理器響應(yīng)上述CICS AS 進程針對上述事務(wù)發(fā)出的回滾請求xa_rollback而返回的xa_r0lll3ack執(zhí)行成功通知。應(yīng)注意,在具體實現(xiàn)過程中,上面提到的在監(jiān)聽到上述CICS AS進程發(fā)往上述資源管理器的針對任一事務(wù)的預(yù)提交請求Xa_prepare時,記錄上述事務(wù),并將該事務(wù)的狀態(tài)標記為未完成,可實現(xiàn)為記錄上述事務(wù)即可。在這種情況下,上面提到的在監(jiān)聽到上述資源管理器發(fā)往上述CICS AS進程的針對上述事務(wù)即上述任一事務(wù)的提交成功通知時,將所述事務(wù)的狀態(tài)標記為已完成,可實現(xiàn)為將上述事務(wù)從記錄的事務(wù)中刪除。如此一來,記錄的事務(wù)均為未完成的事務(wù)。因此,步驟104可具體實現(xiàn)為在記錄的事務(wù)中查找該CICS AS進程負責(zé)的事務(wù);而步驟106可具體實現(xiàn)為,在找到所述事務(wù)時,將該事務(wù)返回給所述CICS AS進程,以便所述CICS AS進程對所述事務(wù)進行恢復(fù)。本發(fā)明實施例提供的事務(wù)恢復(fù)方法記錄待提交的每一事務(wù),并將該事務(wù)的狀態(tài)標記為未完成,而在該事務(wù)提交成功時將該事務(wù)的狀態(tài)標記為已完成。在這種情況下,在CICS AS進程啟動后通過Xa_reC0Ver接口請求尚未成功提交的事務(wù)時,可直接在記錄的事務(wù)中查找該CICS AS進程負責(zé)的未完成的事務(wù)并返回給CICS AS進程,而無需向數(shù)據(jù)庫請求尚未成功提交的事務(wù)。如此一來便無需申請數(shù)據(jù)庫鎖,從而使得尚未成功提交的事務(wù)可及時返回給CICS AS進程,實現(xiàn)CICS AS進程的及時啟動。為便于描述本發(fā)明的技術(shù)方案,下面結(jié)合圖2對本發(fā)明提供的事務(wù)恢復(fù)方法進行更為詳細的描述。圖2是依據(jù)本發(fā)明一實施例的事務(wù)恢復(fù)方法200的示范性信令圖。步驟202,一 CICS AS進程發(fā)出針對一事務(wù)的預(yù)提交請求xa_pr印are。步驟204,在收到上述CICS AS進程發(fā)出的預(yù)提交請求xa_pr印are后,本發(fā)明實施例提供的事務(wù)恢復(fù)裝置記錄該事務(wù),并將該事務(wù)的狀態(tài)標記為未完成。步驟206,本發(fā)明實施例提供的事務(wù)恢復(fù)裝置將上述CICS AS進程發(fā)出的預(yù)提交請求Xa_pr印are轉(zhuǎn)發(fā)給數(shù)據(jù)庫,即資源管理器RM。步驟208,數(shù)據(jù)庫響應(yīng)上述CICS AS進程發(fā)出的預(yù)提交請求xa_pr印are,在確定可以提交該事務(wù)時,向事務(wù)恢復(fù)裝置返回預(yù)提交成功通知xa_ok。步驟210,事務(wù)恢復(fù)裝置將上述預(yù)提交成功通知Xa_ok轉(zhuǎn)發(fā)給上述CICS AS進程。步驟212,在收到上述預(yù)提交成功通知xa_ok后,上述CICS AS進程發(fā)出針對上述事務(wù)的正式提交請求xa_commit。步驟214,事務(wù)恢復(fù)裝置收到上述正式提交請求Xa_COmmit后,將該正式提交請求 Xa_COmmit轉(zhuǎn)發(fā)給數(shù)據(jù)庫。步驟216,數(shù)據(jù)庫接收上述正式提交請求Xa_COmmit,數(shù)據(jù)庫正式提交該事務(wù),并在提交成功后,向事務(wù)恢復(fù)裝置發(fā)出Xa_COmmit執(zhí)行成功通知。步驟218,在收到上述Xa_COmmit執(zhí)行成功通知后,事務(wù)恢復(fù)裝置將上述事務(wù)的狀態(tài)標記為已完成。步驟220,事務(wù)恢復(fù)裝置將上述xa_Commit執(zhí)行成功通知轉(zhuǎn)發(fā)給上述CICSAS進程。 此后,事務(wù)執(zhí)行完畢。在上述過程中,若上述CICS AS進程重新啟動,例如CICS重新啟動導(dǎo)致上述CICS AS進程重新啟動,則由于事務(wù)恢復(fù)裝置中記錄的上述事務(wù)的狀態(tài)可能為未完成,因此事務(wù)恢復(fù)裝置可能會直接將上述事務(wù)返回給上述CICS AS進程,以便上述CICS AS進程對上述事務(wù)進行恢復(fù)。以下就將方法200中描述的過程劃分為三個不同區(qū)間分別進行描述,其中, 區(qū)間1為步驟202至步驟210之間,即上述CICS AS進程已經(jīng)發(fā)出預(yù)提交請求xa_pr印are, 但尚未收到預(yù)提交成功通知xa_ok ;區(qū)間2為步驟210至步驟218之間,即上述CICS AS進程已經(jīng)收到預(yù)提交成功通知xa_ok,但尚未收到xa_Commit執(zhí)行成功通知,且事務(wù)恢復(fù)裝置尚未將上述事務(wù)的狀態(tài)標記為已完成;區(qū)間3為步驟218至步驟220之間,即上述CICS AS 進程已經(jīng)收到預(yù)提交成功通知xa_ok,但尚未收到xa_Commit執(zhí)行成功通知,且事務(wù)恢復(fù)裝置已將上述事務(wù)的狀態(tài)標記為已完成。如果上述CICS AS進程在區(qū)間1發(fā)生重新啟動,則上述CICS AS進程會發(fā)出事務(wù)恢復(fù)請求Xa_reC0Ver。在現(xiàn)有技術(shù)中,上述CICS AS進程會將上述事務(wù)恢復(fù)請求Xa_reC0Ver 發(fā)往數(shù)據(jù)庫。而根據(jù)本發(fā)明實施例提供的技術(shù)方案,事務(wù)恢復(fù)裝置會攔截該事務(wù)恢復(fù)請求 Xa_reC0Ver。隨后,由于已經(jīng)在步驟204對上述事務(wù)進行了記錄并將該事務(wù)的狀態(tài)標記為未完成,因此事務(wù)恢復(fù)裝置將查找到上述事務(wù)并獲知該事務(wù)的狀態(tài)為未完成,繼而將上述事務(wù)通知上述CICS AS進程,以便由上述CICS AS進程對上述事務(wù)執(zhí)行恢復(fù)操作,例如回滾(rollback)操作。在具體實現(xiàn)過程中,根據(jù)IBM公司的設(shè)計,上述CICS AS進程只需獲知上述事務(wù)即可知曉對該事務(wù)執(zhí)行何種恢復(fù)操作,這是因為CICS AS進程也會記錄事務(wù)的提交狀態(tài),盡管CICS AS進程記錄的事務(wù)提交狀態(tài)落后于資源管理器傷記錄的事務(wù)提交狀態(tài),但足以用于對事務(wù)執(zhí)行恢復(fù)操作。在執(zhí)行回滾操作時,上述CICS AS進程會發(fā)出回滾請求xa_rolIback,該回滾請求Xa_r0lll3ack將在到達事務(wù)恢復(fù)裝置后由事務(wù)恢復(fù)裝置轉(zhuǎn)發(fā)給數(shù)據(jù)庫。在數(shù)據(jù)庫響應(yīng)該回滾請求Xa_rolll3ack從而執(zhí)行回滾操作之后,數(shù)據(jù)庫會返回 xa_rollback執(zhí)行成功通知給事務(wù)恢復(fù)裝置。隨后,事務(wù)恢復(fù)裝置會將上述事務(wù)的狀態(tài)標記為已完成,然后將上述xa_r0llkiCk執(zhí)行成功通知返回給上述CICS AS進程。此后,該事務(wù)執(zhí)行結(jié)束。更為具體的,如果在上述回滾操作過程中,CICS AS進程再次重新啟動,則上述CICS AS進程會再次發(fā)送事務(wù)恢復(fù)請求Xa_reC0Ver給事務(wù)恢復(fù)裝置。如果事務(wù)恢復(fù)裝置尚未將上述事務(wù)的狀態(tài)標記為已完成,則其獲取到的上述事務(wù)的狀態(tài)仍將為未完成,因此會將上述事務(wù)通知上述CICS AS進程,以便由上述CICS AS進程對上述事務(wù)執(zhí)行回滾操作。如果事務(wù)恢復(fù)裝置已將上述事務(wù)的狀態(tài)標記為已完成,則無需上報給CICS AS進程,因此CICS AS進程將無需對該事務(wù)執(zhí)行回滾操作,事務(wù)執(zhí)行完畢。如果上述CICS AS進程在區(qū)間2發(fā)生重新啟動,則上述CICS AS進程會發(fā)出事務(wù)恢復(fù)請求Xa_reC0Ver。在現(xiàn)有技術(shù)中,上述CICS AS進程會將上述事務(wù)恢復(fù)請求Xa_reC0Ver 發(fā)往數(shù)據(jù)庫。而根據(jù)本發(fā)明實施例提供的技術(shù)方案,事務(wù)恢復(fù)裝置會攔截該事務(wù)恢復(fù)請求 Xa_reC0Ver。由于此時事務(wù)恢復(fù)裝置尚未將上述事務(wù)的狀態(tài)標記為已完成,因此事務(wù)恢復(fù)裝置將查找到上述事務(wù)的狀態(tài)為未完成,繼而將上述事務(wù)通知上述CICS AS進程,以便由上述CICS AS進程對上述事務(wù)執(zhí)行恢復(fù)操作,例如由上述CICS AS進程重新發(fā)出正式提交請求Xa_COmmit。在具體實現(xiàn)過程中,根據(jù)IBM公司的設(shè)計,上述CICS AS進程只需獲知上述事務(wù)即可知曉對該事務(wù)執(zhí)行何種恢復(fù)操作,這是因為CICS AS進程也會記錄事務(wù)的提交狀態(tài),盡管CICS AS進程記錄的事務(wù)提交狀態(tài)落后于資源管理器傷記錄的事務(wù)提交狀態(tài),但足以用于對事務(wù)執(zhí)行恢復(fù)操作。如果上述CICS AS進程在區(qū)間3發(fā)生重新啟動,則上述CICS AS進程會發(fā)出事務(wù)恢復(fù)請求Xa_reC0Ver。在現(xiàn)有技術(shù)中,上述CICS AS進程會將上述事務(wù)恢復(fù)請求Xa_reC0Ver 發(fā)往數(shù)據(jù)庫。而根據(jù)本發(fā)明實施例提供的技術(shù)方案,事務(wù)恢復(fù)裝置會攔截該事務(wù)恢復(fù)請求 Xa_reC0Ver。由于此時事務(wù)恢復(fù)裝置已經(jīng)將上述事務(wù)的狀態(tài)標記為已完成,因此事務(wù)恢復(fù)裝置將不會返回任何事務(wù)給上述CICS AS進程,因此上述CICS AS進程將無需對該事務(wù)執(zhí)行恢復(fù)操作,事務(wù)執(zhí)行完畢。圖3是依據(jù)本發(fā)明一實施例的事務(wù)恢復(fù)方法300的示范性信令圖。步驟302,一 CICS AS進程發(fā)出針對一事務(wù)的預(yù)提交請求xa_pr印are。步驟304,在收到上述CICS AS進程發(fā)出的預(yù)提交請求xa_pr印are后,本發(fā)明實施例提供的事務(wù)恢復(fù)裝置記錄該事務(wù)并將其狀態(tài)標記為未完成。步驟306,本發(fā)明實施例提供的事務(wù)恢復(fù)裝置將上述CICS AS進程發(fā)出的預(yù)提交請求Xa_pr印are轉(zhuǎn)發(fā)給數(shù)據(jù)庫,即資源管理器RM。步驟308,數(shù)據(jù)庫響應(yīng)上述CICS AS進程發(fā)出的預(yù)提交請求xa_pr印are,向事務(wù)恢復(fù)裝置返回只讀通知xa_rdonly。步驟310,事務(wù)恢復(fù)裝置在收到只讀通知Xa_rd0nly后,將上述事務(wù)的狀態(tài)標記為已完成。
步驟312,事務(wù)恢復(fù)裝置將上述只讀通知Xa_rdonly轉(zhuǎn)發(fā)給上述CICS AS進程。此后,事務(wù)處理完畢。在上述過程中,若上述CICS AS進程重新啟動,例如CICS重新啟動導(dǎo)致上述CICS AS進程重新啟動,則由于事務(wù)恢復(fù)裝置中上述事務(wù)的狀態(tài)可能為未完成,因此事務(wù)恢復(fù)裝置可能會直接將上述事務(wù)返回給上述CICS AS進程,以便上述CICS AS進程對上述事務(wù)進行恢復(fù)。以下就將方法300中描述的過程劃分為兩個不同區(qū)間分別進行描述,其中,區(qū)間1 為步驟302至步驟310之間,即上述CICS AS進程已經(jīng)發(fā)出預(yù)提交請求xa_pr印are,但尚未收到只讀通知Xa_rd0nly,且事務(wù)恢復(fù)裝置尚未將上述事務(wù)的狀態(tài)標記為未完成;區(qū)間2為步驟310至步驟312之間,即上述CICS AS進程已經(jīng)發(fā)出預(yù)提交請求xa_pr印are,但尚未收到只讀通知xa_rd0nly,且事務(wù)恢復(fù)裝置已經(jīng)將上述事務(wù)的狀態(tài)標記為已完成。如果上述CICS AS進程在區(qū)間1發(fā)生重新啟動,則上述CICS AS進程會發(fā)出事務(wù)恢復(fù)請求Xa_reC0Ver。在現(xiàn)有技術(shù)中,上述CICS AS進程會將上述事務(wù)恢復(fù)請求Xa_reC0Ver 發(fā)往數(shù)據(jù)庫。而根據(jù)本發(fā)明實施例提供的技術(shù)方案,事務(wù)恢復(fù)裝置會攔截該事務(wù)恢復(fù)請求 Xa_reC0Ver。隨后,由于已經(jīng)在步驟304對上述事務(wù)進行了記錄并將其狀態(tài)標記為未完成, 因此事務(wù)恢復(fù)裝置將查找到上述事務(wù)的狀態(tài)為未完成,繼而將上述事務(wù)通知上述CICS AS 進程,以便由上述CICS AS進程對上述事務(wù)執(zhí)行恢復(fù)操作,例如回滾(rollback)操作。有關(guān)回滾操作及在回滾操作過程中CICS AS進程再次發(fā)生重新啟動時各裝置的操作與上文結(jié)合圖2進行的描述相同,因此此處不再贅述。如果上述CICS AS進程在區(qū)間2發(fā)生重新啟動,則上述CICS AS進程會發(fā)出事務(wù)恢復(fù)請求Xa_reC0Ver。在現(xiàn)有技術(shù)中,上述CICS AS進程會將上述事務(wù)恢復(fù)請求Xa_reC0Ver 發(fā)往數(shù)據(jù)庫。而根據(jù)本發(fā)明實施例提供的技術(shù)方案,事務(wù)恢復(fù)裝置會攔截該事務(wù)恢復(fù)請求 Xa_reC0Ver。隨后,由于已經(jīng)在步驟310中將上述事務(wù)的狀態(tài)標記為已完成,因此事務(wù)恢復(fù)裝置將無需上報上述事務(wù),因此CICS AS進程將無需執(zhí)行回滾操作,事務(wù)執(zhí)行完畢。本發(fā)明還提供了一種事務(wù)恢復(fù)裝置,下面就結(jié)合圖4進行詳細描述。圖4是依據(jù)本發(fā)明一實施例的事務(wù)恢復(fù)裝置400的邏輯結(jié)構(gòu)示意圖。如圖4所示, 事務(wù)恢復(fù)裝置400包括攔截模塊402、查找模塊404和返回模塊406。攔截模塊402用于攔截一 CICS AS進程發(fā)往資源管理器的事務(wù)恢復(fù)請求xa_ recover ;查找模塊404用于在記錄的事務(wù)中查找該CICS AS進程負責(zé)的未完成的事務(wù);返回模塊406用于在查找模塊404找到上述未完成的事務(wù)時,將該未完成的事務(wù)返回給上述CICS AS進程,以便上述CICS AS進程對上述未完成的事務(wù)進行恢復(fù)。除上述模塊外,事務(wù)恢復(fù)裝置400還包括記錄模塊408。記錄模塊408用于在監(jiān)聽到上述CICS AS進程發(fā)往上述RM的針對任一事務(wù)的預(yù)提交請求Xa_pr印are時,記錄上述事務(wù)并將其狀態(tài)標記為未完成;以及在監(jiān)聽到上述RM發(fā)往上述CICS AS進程的針對上述事務(wù)即上述任一事務(wù)的提交成功通知時,將上述事務(wù)的狀態(tài)標記未已完成。應(yīng)注意,在具體實現(xiàn)過程中,上述記錄模塊408可具體實現(xiàn)為,用于在監(jiān)聽到所述 CICS AS進程發(fā)往所述RM的針對任一事務(wù)的預(yù)提交請求xa_prepare時,記錄所述事務(wù);以及在監(jiān)聽到所述RM發(fā)往所述CICS AS進程的針對所述事務(wù)的提交成功通知時,在記錄的事務(wù)中刪除所述事務(wù)。在這種情況下,查找模塊404具體用于,在記錄的事務(wù)中查找該CICS AS進程負責(zé)的事務(wù);返回模塊406具體用于,在找到所述事務(wù)時,將該事務(wù)返回給所述CICS AS進程,以便所述CICS AS進程對所述事務(wù)進行恢復(fù)。在具體實現(xiàn)過程中,上述提交成功通知可以是上述RM響應(yīng)上述CICS AS進程針對上述事務(wù)發(fā)出的預(yù)提交請求xa_pr印are而返回的只讀通知xa_rdonly。在具體實現(xiàn)過程中,上述提交成功通知可以是上述RM響應(yīng)上述CICS AS進程針對上述事務(wù)發(fā)出的正式提交請求xa_commit而返回的xa_commit執(zhí)行成功通知。在具體實現(xiàn)過程中,上述提交成功通知可以是上述RM響應(yīng)上述CICS AS進程針對上述事務(wù)發(fā)出的回滾請求xa_r0llkiCk而返回的xa_rolll3ack執(zhí)行成功通知。攔截模塊402、查找模塊404、返回模塊406和記錄模塊408的操作與上文結(jié)合圖 1 圖3描述的方法100 方法300中描述的對應(yīng)步驟相對應(yīng),因此此處不再贅述。在具體實現(xiàn)過程中,上述事務(wù)恢復(fù)裝置400可與事務(wù)管理器或交易中間件集成在一起,也可獨立于事務(wù)管理器或交易中間件而單獨實現(xiàn)。應(yīng)注意,在具體實現(xiàn)過程中,上述事務(wù)恢復(fù)裝置400還應(yīng)包括處理器、存儲器和/或通信模塊等硬件模塊,或者與其他裝置400共享處理器、存儲器和/或通信模塊等硬件模塊。在這種情況下,攔截模塊402具體用于通過處理器或通信模塊來攔截一 CICSAS進程發(fā)往資源管理器的事務(wù)恢復(fù)請求xa_ recover ;查找模塊404用于通過處理器在存儲器中記錄的事務(wù)中查找該CICS AS進程負責(zé)的未完成的事務(wù);返回模塊406用于在查找模塊404通過處理器找到上述未完成的事務(wù)時,通過處理器或通信模塊將該未完成的事務(wù)返回給上述CICS AS進程,以便上述CICS AS 進程對上述未完成的事務(wù)進行恢復(fù)。而上述記錄模塊408用于在通過處理器或通信模塊監(jiān)聽到任一 CICS AS進程發(fā)往上述RM的針對上述事務(wù)的預(yù)提交請求xa_prepare時,將上述事務(wù)記錄在存儲器中并將其狀態(tài)標記為未完成;以及在通過處理器或通信模塊監(jiān)聽到上述 RM發(fā)往上述CICS AS進程的針對上述事務(wù)即上述任一事務(wù)的提交成功通知時,將上述事務(wù)的狀態(tài)標記為已完成。本領(lǐng)域普通技術(shù)人員可知,上述方法中的全部或部分步驟可以通過程序指令相關(guān)的硬件完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,該計算機可讀存儲介質(zhì)如ROM、 RAM和光盤等。綜上所述,以上僅為本發(fā)明的實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種事務(wù)恢復(fù)方法,其特征在于,包括攔截一客戶信息控制系統(tǒng)應(yīng)用服務(wù)器CICS AS進程發(fā)往資源管理器RM的事務(wù)恢復(fù)請求 xa—recover ;在記錄的事務(wù)中查找該CICS AS進程負責(zé)的未完成的事務(wù);在找到所述未完成的事務(wù)時,將該未完成的事務(wù)返回給所述CICS AS進程,以便所述 CICS AS進程對所述未完成的事務(wù)進行恢復(fù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括在監(jiān)聽到所述CICS AS進程發(fā)往所述RM的針對任一事務(wù)的預(yù)提交請求Xa_prepare時, 記錄所述事務(wù),并將所述事務(wù)的狀態(tài)標記為未完成;在監(jiān)聽到所述RM發(fā)往所述CICS AS進程的針對所述事務(wù)的提交成功通知時,將所述事務(wù)的狀態(tài)標記為已完成。
3.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括在監(jiān)聽到所述CICS AS進程發(fā)往所述RM的針對任一事務(wù)的預(yù)提交請求xa_prepare時, 記錄所述事務(wù);以及在監(jiān)聽到所述RM發(fā)往所述CICS AS進程的針對所述事務(wù)的提交成功通知時,在記錄的事務(wù)中刪除所述事務(wù);所述在記錄的事務(wù)中查找該CICS AS進程負責(zé)的未完成的事務(wù)具體包括,在記錄的事務(wù)中查找該CICS AS進程負責(zé)的事務(wù);所述在找到所述未完成的事務(wù)時,將該未完成的事務(wù)返回給所述CICS AS進程,以便所述CICS AS進程對所述未完成的事務(wù)進行恢復(fù),具體包括,在找到所述事務(wù)時,將該事務(wù)返回給所述CICS AS進程,以便所述CICS AS進程對所述事務(wù)進行恢復(fù)。
4.如權(quán)利要求2或3所述的方法,其特征在于,所述提交成功通知為所述RM響應(yīng)所述 CICS AS進程針對所述事務(wù)發(fā)出的預(yù)提交請求xa_pr印are而返回的只讀通知xa_rdonly。
5.如權(quán)利要求2或3所述的方法,其特征在于,所述提交成功通知為所述RM響應(yīng)所述 CICS AS進程針對所述事務(wù)發(fā)出的正式提交請求Xa_COmmit而返回的xa_Commit執(zhí)行成功通知。
6.如權(quán)利要求2或3所述的方法,其特征在于,所述提交成功通知為所述RM響應(yīng)所述 CICS AS進程針對所述事務(wù)發(fā)出的回滾請求Xa_rolll3ack而返回的xa_rolll3ack執(zhí)行成功通知。
7.一種事務(wù)恢復(fù)裝置,其特征在于,包括攔截模塊,用于攔截一客戶信息控制系統(tǒng)應(yīng)用服務(wù)器CICS AS進程發(fā)往資源管理器RM 的事務(wù)恢復(fù)請求xa_recover ;查找模塊,用于在記錄的事務(wù)中查找該CICS AS進程負責(zé)的未完成的事務(wù);返回模塊,用于在查找模塊找到所述未完成的事務(wù)時,將該未完成的事務(wù)返回給所述 CICS AS進程,以便所述CICS AS進程對所述未完成的事務(wù)進行恢復(fù)。
8.如權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括記錄模塊,用于在監(jiān)聽到所述CICS AS進程發(fā)往所述RM的針對任一事務(wù)的預(yù)提交請求 xa_prepare時,記錄所述事務(wù),并將所述事務(wù)的狀態(tài)標記為未完成;以及在監(jiān)聽到所述RM 發(fā)往所述CICS AS進程的針對所述事務(wù)的提交成功通知時,將所述事務(wù)的狀態(tài)標記為已完成。
9.如權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括記錄模塊,用于在監(jiān)聽到所述CICS AS進程發(fā)往所述RM的針對任一事務(wù)的預(yù)提交請求 xa_prepare時,記錄所述事務(wù);以及在監(jiān)聽到所述RM發(fā)往所述CICS AS進程的針對所述事務(wù)的提交成功通知時,在記錄的事務(wù)中刪除所述事務(wù);所述查找模塊具體用于,在記錄的事務(wù)中查找該CICS AS進程負責(zé)的事務(wù);所述返回模塊具體用于,在找到所述事務(wù)時,將該事務(wù)返回給所述CICS AS進程,以便所述CICS AS進程對所述事務(wù)進行恢復(fù)。
10.如權(quán)利要求8或9所述的裝置,其特征在于,所述提交成功通知為所述RM響應(yīng)所述 CICS AS進程針對所述事務(wù)發(fā)出的預(yù)提交請求xa_pr印are而返回的只讀通知xa_rdonly。
11.如權(quán)利要求8或9所述的裝置,其特征在于,所述提交成功通知為所述RM響應(yīng)所述 CICS AS進程針對所述事務(wù)發(fā)出的正式提交請求Xa_Commit而返回的xa_Commit執(zhí)行成功通知。
12.如權(quán)利要求8或9所述的裝置,其特征在于,所述提交成功通知為所述RM響應(yīng)所述 CICS AS進程針對所述事務(wù)發(fā)出的回滾請求Xa_rolll3ack而返回的xa_rolll3ack執(zhí)行成功通知。
全文摘要
本發(fā)明實施例提供了一種事務(wù)恢復(fù)方法和事務(wù)恢復(fù)裝置。事務(wù)恢復(fù)方法包括攔截一CICS AS進程發(fā)往資源管理器RM的事務(wù)恢復(fù)請求xa_recover;在記錄的事務(wù)中查找該CICS AS負責(zé)的事務(wù);在找到此類事務(wù)時,將該事務(wù)返回給CICS AS,以便CICS AS對該事務(wù)進行恢復(fù)。本發(fā)明實施例還提供了一種事務(wù)恢復(fù)裝置。在CICS AS啟動后通過xa_recover接口請求尚未成功提交的事務(wù)時,可直接在記錄的事務(wù)中查找該CICS AS負責(zé)的未完成的事務(wù)并返回,而無需向數(shù)據(jù)庫請求此類事務(wù)。這樣便無需申請數(shù)據(jù)庫鎖,使得尚未成功提交的事務(wù)可及時返回給CICS AS,實現(xiàn)CICS AS的及時啟動。
文檔編號G06F9/46GK102317913SQ201180001135
公開日2012年1月11日 申請日期2011年7月30日 優(yōu)先權(quán)日2011年7月30日
發(fā)明者李玉華 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
沅江市| 双流县| 眉山市| 梨树县| 惠州市| 余干县| 天气| 洱源县| 特克斯县| 电白县| 霍林郭勒市| 丽江市| 宁阳县| 宁远县| 永泰县| 黎平县| 西乌| 台中县| 合江县| 横峰县| 洛川县| 荔浦县| 台北市| 蒲江县| 桂平市| 会昌县| 安阳市| 安化县| 克东县| 财经| 诏安县| 德庆县| 瑞丽市| 贡山| 元朗区| 衡东县| 松潘县| 克山县| 新营市| 佛学| 祁东县|