亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

具有同步回退處理特征的事務(wù)處理的系統(tǒng)和方法

文檔序號:6427342閱讀:277來源:國知局

專利名稱::具有同步回退處理特征的事務(wù)處理的系統(tǒng)和方法
技術(shù)領(lǐng)域
:本發(fā)明一般涉及應(yīng)用程序和事務(wù)服務(wù)器,特別是涉及一種允許回退(callback)處理與事務(wù)或者消息的完成相同步的系統(tǒng)。優(yōu)先權(quán)要求本申請要求以下美國申請的優(yōu)先權(quán)于2002年7月15日提交的申請?zhí)枮椋撸叩拿绹鴮嵱眯滦蜕暾垺熬哂型交赝颂幚硖卣鞯氖聞?wù)處理的系統(tǒng)和方法”,以及于2001年7月17日提交的申請?zhí)枮?0/306105的美國臨時申請“具有同步回退處理特征的事務(wù)處理的系統(tǒng)”,以及于2001年7月30日提交的申請?zhí)枮?0/308693的“具有同步回退處理特征的事務(wù)處理的系統(tǒng)”,上述申請在此引用,以資參考。交叉參考本申請涉及共同待審的實用新型申請“具有事務(wù)特性特征的事務(wù)處理的系統(tǒng)(SYSTEMFORTRANSACTIONPROCESSINGWITHPROPERTYFEATURE)”(申請?zhí)枺撸?,發(fā)明人EdwardP.Felt,PriscillaFung,AlexSomogyi,SriramSrinivasan;2002年7月15日提交),和“具有委托提交特征的事務(wù)處理的系統(tǒng)(SYSTEMFORTRANSACTIONPROCESSINGWITHDELEGATEDCOMMITFEATURE”(申請?zhí)枺撸?,發(fā)明人EdwardP.Felt,PriscillaFung,AlexSomogyi,SriramSrinivasan,2002年7月15日提交);在此對這兩件申請整體引用,以資參考。
背景技術(shù)
:Java2平臺企業(yè)版(J2EE)規(guī)范定義了開發(fā)多層企業(yè)應(yīng)用程序的一個當(dāng)前標(biāo)準(zhǔn)。J2EE為企業(yè)應(yīng)用程序的設(shè)計、開發(fā)、裝配和部署提供了一種基于組件的方法,既降低了成本又能夠更快速設(shè)計和實施。J2EE向開發(fā)者提供了多層分布式應(yīng)用程序模型、再利用組件的能力、統(tǒng)一標(biāo)準(zhǔn)的安全模型以及靈活的事務(wù)控制。它們不僅能夠比以往更快地向市場提交創(chuàng)新的顧客方案,而且還不把所得到的平臺獨立的J2EE基于組件的方案捆綁到任何一個賣方的產(chǎn)品和應(yīng)用程序接口上。J2EE規(guī)范定義了以下各種組件應(yīng)用程序客戶組件;企業(yè)JavaBeans(EJB);servlet(小服務(wù)程序)和Java服務(wù)器頁(JSP)(還稱之為Web組件);小程序(applet)。多層分布式應(yīng)用程序模型是指根據(jù)功能將應(yīng)用程序劃分成多個組件,并且不同的應(yīng)用程序組件可以構(gòu)成相同或者不同服務(wù)器上的J2EE應(yīng)用程序。實際安裝應(yīng)用程序組件依賴于應(yīng)用程序組件屬于多層J2EE環(huán)境中的哪個層。這些層在圖1中示出。如圖所示,應(yīng)用程序服務(wù)器層4用來開發(fā)EJB容器和/或表現(xiàn)容器如servlet、JSP和html頁14。這些容器又用作客戶層2與尾端層6之間的接口,其中在客戶層2中部署客戶8和客戶應(yīng)用程序,而尾端層6用來擔(dān)當(dāng)企業(yè)或傳統(tǒng)應(yīng)用程序如企業(yè)資源規(guī)劃(ERP)系統(tǒng)的宿主??蛻魧?這些可以是瀏覽器、基于Java的程序,或者運行于客戶層內(nèi)并位于公司防火墻內(nèi)側(cè)和外側(cè)的其它Web使能編程環(huán)境。應(yīng)用程序服務(wù)器層-該層通常擔(dān)當(dāng)支持客戶請求的表現(xiàn)邏輯和商務(wù)邏輯組合的宿主。表現(xiàn)邏輯經(jīng)由顯示HTML頁的JSP頁和servlet來支持,而商務(wù)邏輯經(jīng)由遠程方法調(diào)用(RMI)對象和EJB12來支持。EJB依賴事務(wù)的容器環(huán)境、壽命周期和狀態(tài)管理、資源組合、安全性等,它們共同構(gòu)成運行bean的運行時間環(huán)境。尾端層-這通常是現(xiàn)存應(yīng)用程序和數(shù)據(jù)存儲的組合。它還被稱之為企業(yè)信息系統(tǒng)(EIS)層,因為它可以包含如企業(yè)資源規(guī)劃(ERP)、主機事務(wù)處理、數(shù)據(jù)庫系統(tǒng)和其它老式信息系統(tǒng)那樣的系統(tǒng)。由于J2EE應(yīng)用程序的各組件分別運行,并且常常是不同裝置,因此需要有一種查找和引用其它碼和資源的客戶及應(yīng)用程序服務(wù)器層碼的方式??蛻艉蛻?yīng)用程序碼例如可以使用Java命名和目錄接口(JNDI)16查找用戶定義的對象如企業(yè)bean和環(huán)境項目如Java數(shù)據(jù)庫連接器(JDBC)數(shù)據(jù)源對象位置,而環(huán)境項目又用來查找尾端層中的資源以及消息連接。在Web和企業(yè)bean組件上的部署時間,可以配置應(yīng)用程序行為如安全性和事務(wù)管理。該部署時間特征將應(yīng)用程序邏輯與可能隨組裝變化的配置設(shè)置相分離。J2EE安全性模型使開發(fā)商配置一個Web或者企業(yè)bean組件,以便系統(tǒng)資源只能由授權(quán)用戶訪問。例如,Web組件可以被配置成提示輸入用戶姓名和口令。企業(yè)bean組件可以被配置成僅僅使特定組中的人可以調(diào)用某種方法。作為選擇,servlet組件可以被配置成具有某些可以訪問每個人的方法,以及具有一些在一個組織中只有某些被特許的人才可訪問的方法。可以為所有方法都能用于每個人或者所有方法僅能用于一些選擇的人的另一環(huán)境配置相同的servlet組件。某些應(yīng)用程序服務(wù)器,比如產(chǎn)自BEA系統(tǒng)公司(SanJose,california)的WebLogic服務(wù)器,使用了一個訪問控制目錄(ACL)機構(gòu),該機構(gòu)考慮了運行在服務(wù)器上的組件使用的細顆??刂?fine-grainedcontrol)。通過使用ACL,開發(fā)商可以以Java方法等級定義哪個用戶或者哪些用戶組可以執(zhí)行什么或者不可以執(zhí)行什么。該ACL機構(gòu)覆蓋了除EJB外的運行在應(yīng)用程序服務(wù)器上的任何事,該EJB具有EJB規(guī)范所定義的它們自己的訪問控制機構(gòu)。安全區(qū)域允許管理器把來自現(xiàn)有的授權(quán)或確認系統(tǒng)的信息輸入到ACL中。JavaServletservlet是一個擴展Web服務(wù)器的功能的程序。servlet接收來自客戶的一個請求,動態(tài)地生成答復(fù)(也許查詢數(shù)據(jù)庫以履行該請求),然后向客戶發(fā)送包含HTML或XML文件的答復(fù)。Servlet類似于CGI但通常更適合于寫,因為servlet使用Java類別和流。它們運行更快,因為Servlet被編譯成Java字節(jié)碼,并且servlet事件在運行時間被保存在存儲器中,每個客戶請求運行在單獨線程中。servelt使它容易地以動態(tài)方式產(chǎn)生到達HTTP答復(fù)流的數(shù)據(jù)。客戶請求在新連接結(jié)束后來執(zhí)行,所以流控制不會自然干預(yù)請求。為此,該對話管理保持請求之間的特定客戶的狀態(tài)。在某些應(yīng)用程序服務(wù)器中,諸多sevlet利用HTTP對話對象保存它們的方法請求之間的狀態(tài)。為了克服故障(failover)目的,可以在群集環(huán)境(clusteredenvironment)中復(fù)制該對象。Java服務(wù)器頁面JSP頁面是一個開發(fā)servlet的基于文本的表達中心途徑(way)。JSP頁面提供了servlet的所有利益,當(dāng)與JavaBeans類組合時,它提供了一種容易的方式來保持內(nèi)容并顯示邏輯分離。JSP頁面和servlet比公共網(wǎng)關(guān)接口(CGI)更理想,因為它們是獨立平臺,并且使用少量開銷。JSP頁面可以和JavaBeans一起用來定義Web模板,該模板建立具有相似外貌和感覺的由多個頁面構(gòu)成的Web站。JavaBeans類執(zhí)行數(shù)據(jù)再現(xiàn),所以模板沒有Java碼。這意味著它們可以由HTML編輯器來保持。使用JSP頁面的簡單的基于Web的應(yīng)用程序可以用來把內(nèi)容捆綁到使用替代JavaBeans類的自定義標(biāo)記或scriptlet的應(yīng)用程序邏輯上。自定義標(biāo)記被裝入到標(biāo)記庫中,而該標(biāo)記庫被輸送到一個JSP頁面中。Scriptlet是直接裝入JSP頁面的小Java碼段。數(shù)據(jù)庫訪問業(yè)務(wù)(JDBC)JDBC充當(dāng)一個抵達關(guān)系數(shù)據(jù)庫的橋,并且效法ODBC(開放式數(shù)據(jù)庫連接)規(guī)范。通過使用驅(qū)動器斷開數(shù)據(jù)庫與程序碼的連接。JDBC的某些實施提供了對高級數(shù)據(jù)型的支持,并且還支持滾動結(jié)果集和批更新的功能。Java消息傳遞業(yè)務(wù)(JMS)JMS是用來支持Java程序間消息交換的J2EE機制。Java就是這樣支持異步通信的,其中發(fā)送方和接收方不需要彼此知道,因而可以獨立操作。JMS支持以下兩種消息傳遞模型點對點-基于消息隊列。在該模型中,消息制作商把消息發(fā)送到隊列上。消息顧客可以把該消息附加到隊列上以便收聽消息。當(dāng)消息到達隊列時,用戶可以將消息從隊列中取出,并對此答復(fù)??梢灾幌蛞粋€隊列發(fā)送消息,并且將只由一個顧客使用該消息。顧客可以任意過濾消息,以選出它們想要的正確消息類型。公布和預(yù)定-允許消息制作商發(fā)送消息到一個專題,該專題的所有注冊用戶檢索這些消息。在此情況下,許多顧客可收到相同的消息。Java接口定義語言(IDL)CORBA對象使用IDL指定一個契約,即它們?nèi)绾闻c其它對象進行相互作用。有了JavaIDL,就可以在Java領(lǐng)域和CORBA領(lǐng)域之間定義契約。自SUN的JDK1.2開始,都包括一個ORB,它允許Java應(yīng)用程序經(jīng)由互聯(lián)網(wǎng)InterORB(IIOP)協(xié)議調(diào)用遠程CORBA對象。企業(yè)JavaBran(EJB)EJB組件為封裝商務(wù)邏輯而設(shè)計,所以開發(fā)商不必關(guān)心典型作業(yè)如數(shù)據(jù)訪問、事務(wù)支持、安全、高速緩存和并行操作的代碼編程。在EJB規(guī)范中,這些作業(yè)是EJB容器的職責(zé)。企業(yè)bran由接口和類別組成??蛻艚?jīng)由企業(yè)bean的本地和遠程接口訪問企業(yè)bean方法。本地接口提供創(chuàng)建、消除和定位企業(yè)bean的方法,遠程接口提供商務(wù)方法。在部署時,容器創(chuàng)建源自這些接口的類別,然后利用該類別向客戶提供訪問,使客戶尋找創(chuàng)建、消除、定位和調(diào)用的企業(yè)bean的商務(wù)方法。企業(yè)bean類提供商務(wù)方法、創(chuàng)建方法以及探測器(finder)方法的實施;如果bean管理它自己的持續(xù)性,則提供其壽命周期方法的實施。有兩種類型的企業(yè)bean實體bean和會話bean。會話bean表達與客戶的瞬態(tài)對話,并且可以執(zhí)行數(shù)據(jù)庫讀和寫。會話bean可以調(diào)用JDBC調(diào)用本身,或者可以使用實體bean進行調(diào)用,在此情況下,會話bean是實體bean的一個客戶。會話bean的字段包含對話狀態(tài)并且是瞬態(tài)的。如果服務(wù)器或者客戶崩潰,則會話bean完結(jié)。實體bean表達數(shù)據(jù)庫中的數(shù)據(jù)以及作用于該數(shù)據(jù)的方法。在用于一個雇員信息表的關(guān)系數(shù)據(jù)庫上下文中,可能存在用于該表每一行的一個bean。實體bean是事務(wù)性的和長壽的。只要數(shù)據(jù)保持在數(shù)據(jù)庫中,實體bean就存在。該模型可以容易地用于關(guān)系數(shù)據(jù)庫,并且不限于對象數(shù)據(jù)庫。會話bean可以是有狀態(tài)的或者無狀態(tài)的。有狀態(tài)會話bean包含代表客戶的對話狀態(tài)。對話狀態(tài)是會話bean瞬態(tài)字段值加之可以從會話bean字段得到的所有對象。有狀態(tài)bean不表達持久數(shù)據(jù)存儲中的數(shù)據(jù),但是它們可以訪問和更新代表客戶的數(shù)據(jù)。無狀態(tài)會話bean沒有任何用于特定客戶的狀態(tài)信息。它們通常提供不保持任何特定狀態(tài)的服務(wù)器側(cè)行為。無狀態(tài)會話bean需要少量的系統(tǒng)資源。提供屬類業(yè)務(wù)或者表達已存數(shù)據(jù)的共享意圖的商務(wù)對象是一個無狀態(tài)會話bean的良好候選者。使用容器管理持久性訪問關(guān)系數(shù)據(jù)庫的企業(yè)bean不需要開發(fā)商使用任何用于數(shù)據(jù)庫訪問的JDBC2.0API,因為這由容器處置。然而,如果bean管理持久性被用來訪問一個不同于關(guān)系數(shù)據(jù)庫的企業(yè)信息系統(tǒng),或者如果存在訪問一個不同于關(guān)系數(shù)據(jù)庫的企業(yè)信息系統(tǒng)之需要,則必須提供適當(dāng)?shù)拇a。在企業(yè)bean使用bean管理持久性訪問數(shù)據(jù)庫的情況下,具有JDBC2.0API碼的bean的壽命周期方法必須被實施為處理數(shù)據(jù)裝載和存儲數(shù)據(jù),以及保持運行時間與持久數(shù)據(jù)庫存儲之間的一致性。盡管Web層使用HTTP或者HTTPS在層之間傳遞數(shù)據(jù),但是EJB層使用了RMI-IIOP。RMI-IIOP是滿標(biāo)度分布式計算協(xié)議,該協(xié)議向任何客戶或Web層提供訪問企業(yè)bean的程序,以直接訪問EJB層中的業(yè)務(wù)。這些業(yè)務(wù)包括引用企業(yè)bean的JNDI、發(fā)送和接收異步消息的Java消息傳遞業(yè)務(wù)(JMS)和用于關(guān)系數(shù)據(jù)庫訪問的JDBC。事務(wù)管理任何應(yīng)用程序服務(wù)器如WebLogic服務(wù)器系統(tǒng)的最基本特征之一是事務(wù)管理。事務(wù)是保證數(shù)據(jù)庫事務(wù)被精確完成并使其呈現(xiàn)高性能事務(wù)的所有“ACID”特性的手段,包括原子性-事務(wù)對數(shù)據(jù)庫作出的所有變化都是永久性的;否則,返回所有變化。一致性-一個成功的事務(wù)把數(shù)據(jù)庫從以前的活動狀態(tài)轉(zhuǎn)換到新的活動狀態(tài)。隔離-在事務(wù)完成其工作之前,對數(shù)據(jù)庫作出的變化是其它操作看不到的。持久性-事務(wù)對數(shù)據(jù)庫作出的變化在系統(tǒng)或媒介以后出現(xiàn)故障時,仍然有效(保存)。J2EE事務(wù)模型使應(yīng)用程序開發(fā)商在部署時間,指定包括單一事務(wù)的多個方法間的關(guān)系,所以把一個事務(wù)中的所有方法視為一個單一單元。這是理想的,因為事務(wù)是必須全部完成的一系列步驟,或者,如果這些步驟沒有全部完成,則倒退這些步驟。例如,開發(fā)商可以有企業(yè)bean中的一系列方法,即通過將資金記入借方的第一帳戶,然后存入第二帳戶,把資金從一個銀行帳戶轉(zhuǎn)移到另一個帳戶。在該實例中,它們希望把實體轉(zhuǎn)移操作視為一個單位,所以,如果在記入借方之后和存入之前存在一個故障,則回退記入借方操作。在安裝期間,事務(wù)特性被指定到應(yīng)用程序組件上,允許開發(fā)商經(jīng)過應(yīng)用程序組件把諸多方法集合成事務(wù)。這樣,可以在J2EE應(yīng)用程序內(nèi)改變應(yīng)用程序組件,并且重新分配事務(wù)特性而不改變代碼。Java事務(wù)業(yè)務(wù)(JTS)和Java事務(wù)APJ(JTP)在J2EE中構(gòu)成事務(wù)支持的基礎(chǔ),特別是構(gòu)成對EJB和JDBC2.0的事務(wù)支持的基礎(chǔ)。JTS規(guī)范是用于事務(wù)管理的低級應(yīng)用程序接口(API),其中該事務(wù)管理把Java映射到對象管理組(PMG)對象事務(wù)業(yè)務(wù)。JTA規(guī)范由SunMicrosystems與事務(wù)處理和數(shù)據(jù)庫系統(tǒng)業(yè)界的主要工業(yè)伙伴共同開發(fā),該規(guī)范指定了事務(wù)管理器、資源管理器、應(yīng)用程序服務(wù)器與事務(wù)應(yīng)用程序之間的標(biāo)準(zhǔn)Java接口。具體而言,JTA是一個包括以下兩個部分的高級API事務(wù)接口-它能夠使分布式組件執(zhí)行的工作受全局事務(wù)制約,并且是標(biāo)記或者標(biāo)識構(gòu)成事務(wù)的操作組的一個通道。XA資源接口-一個基于X/Open接口或者XA接口的接口,該接口能夠啟動分布式事務(wù)的處理。這些接口都包含對一個以上資源(如一個數(shù)據(jù)庫或者隊列之內(nèi)或者之間)上的事務(wù)的協(xié)調(diào)。開發(fā)商通常不需要關(guān)心用JTA編程顯性事務(wù),因為該工作是通過由容器處理的JDBC和EJBAPL執(zhí)行的,并且通過應(yīng)用程序部署說明符來配置。開發(fā)商可以把精力集中到事務(wù)的設(shè)計上,而不是集中到事務(wù)的實現(xiàn)上。Weblogic服務(wù)器支持企業(yè)應(yīng)用程序的分布式事務(wù)以及兩階段提交協(xié)議。分布式事務(wù)是以協(xié)調(diào)方式更新多資源管理器(比如多個數(shù)據(jù)庫)的事務(wù)。相反,一個本地事務(wù)更新單一資源管理器。兩階段提交協(xié)議是在兩個或多個資源管理器上協(xié)調(diào)單一事務(wù)的方法。它是這樣保證數(shù)據(jù)完整性的,通過確保事務(wù)更新被提交到所有參與的數(shù)據(jù)庫中,或者從所有數(shù)據(jù)庫完全回退事務(wù)更新,使其還原到事務(wù)開始之前的狀態(tài)。換言之,更新所有參與的數(shù)據(jù)庫,或者不更新它們。分布式事務(wù)包括以下參與者事務(wù)始發(fā)器-啟動事務(wù)。事務(wù)始發(fā)器可以是一個用戶應(yīng)用程序、一個企業(yè)JavaBean或者JMS客戶。事務(wù)管理器-管理代表應(yīng)用程序的事務(wù)。事務(wù)管理器通過與正在參與這些事務(wù)的資源管理器進行通信,來協(xié)調(diào)來自應(yīng)用程序的開始和完成事務(wù)的命令。當(dāng)資源管理器在事務(wù)處理期間發(fā)生故障時,事務(wù)管理器協(xié)助資源管理器決定提交還是回退待決事務(wù)??苫謴?fù)的資源-提供數(shù)據(jù)的持久性存儲。該資源通常是一個數(shù)據(jù)庫。資源管理器-提供對信息和處理的集合的訪問。事務(wù)察覺JDBC驅(qū)動器(transaction-awareJDBCdriver)是公共資源管理器。資源管理器提供事務(wù)能力和動作的持久性它們是分布式事務(wù)內(nèi)訪問和控制的實體。資源管理器與特定資源之間的通信被稱為一個事務(wù)分支(branch)。兩階段提交協(xié)議的第一階段被稱之為準(zhǔn)備階段。所需的更新必須被記錄到事務(wù)日志文件中,資源必須經(jīng)過一個資源管理器指示它準(zhǔn)備進行改變。資源可以投票提交更新也可以返回到先前狀態(tài)。第二階段中出現(xiàn)的事情取決于資源如何投票。如果所有資源都投票提交,則更新參與事務(wù)的所有資源。如果一個或多個資源投票為返回,則將參與事務(wù)的所有資源返回到它們的先前狀態(tài)。商務(wù)事務(wù)的支持這些事務(wù)是以下說明的實例情況中的適宜事務(wù)(雖然這些情況僅僅是例證而不是窮舉)。作為第一實例,客戶應(yīng)用程序需要調(diào)用幾個對象,這些對象可以包括對一個或多個數(shù)據(jù)庫的寫操作。如果任何一個調(diào)用不成功,則必須返回寫入(寫入存儲器,更典型的是寫入數(shù)據(jù)庫)的任何狀態(tài)。例如,考慮一個旅游代理應(yīng)用程序??蛻舫绦蛐枰才诺竭h地點的旅程;例如,從法國的斯特拉斯堡到澳大利亞的阿利斯斯普林斯。這樣一個旅程不可避免需要多個單個飛行預(yù)約??蛻魬?yīng)用程序通過按順序預(yù)約旅程的每個單個段來工作;例如,斯特拉斯堡到巴黎,巴黎到紐約,紐約到洛杉磯。然而,如果任何一個單獨飛行預(yù)約不能做到,則客戶應(yīng)用程序需要一個通道取消接近那一點的所有飛行預(yù)約??蛻魬?yīng)用程序需要與服務(wù)器應(yīng)用程序管理的對象交談,并且需要對特定對象實例作出多個調(diào)用。交談也許具有以下的一個或多個特征在每個連續(xù)調(diào)用期間或者之后,將數(shù)據(jù)高速緩存到存儲器中或者寫入數(shù)據(jù)庫中;在調(diào)用結(jié)束時,將數(shù)據(jù)寫入數(shù)據(jù)庫中;客戶應(yīng)用程序需要對象在一個存儲器內(nèi)保持每個調(diào)用之間的上下文;也就是,每個連續(xù)調(diào)用使用交談期間保持在存儲器中的數(shù)據(jù);在交談結(jié)束時,客戶應(yīng)用程序需要有能力消除交談期間或者交談結(jié)束時可能出現(xiàn)的所有數(shù)據(jù)庫寫操作。作為一個替代實例,考慮一個基于互聯(lián)網(wǎng)的聯(lián)機購物車應(yīng)用程序。客戶應(yīng)用程序的用戶瀏覽聯(lián)機目錄并作出多個購物選擇。當(dāng)用戶選擇它們想要購買的物品時,用戶進行檢驗并輸入其信用卡信息以進行購買。如果信用卡檢驗失敗,購物應(yīng)用程序需要一個機制來消除購物車中的所有待購買選擇,或者回退交談期間作出的任何購買事務(wù)。在對對象的單個客戶調(diào)用的范圍內(nèi),對象對數(shù)據(jù)庫中的數(shù)據(jù)執(zhí)行多個編輯。如果這些編輯之一失敗,則對象需要一個機制回退所有編輯(在此情況下,各數(shù)據(jù)庫編輯不一定進行EJB或RMI調(diào)用。一個客戶如一個小程序使用JNDI可以獲得對事務(wù)和事務(wù)管理器對象的引用,并開始一個事務(wù)。)作為另一個實例,考慮一個銀行業(yè)應(yīng)用程序??蛻粽{(diào)用對出納員對象的轉(zhuǎn)帳操作。轉(zhuǎn)帳操作需要出納員對象對銀行數(shù)據(jù)庫作出以下調(diào)用調(diào)用關(guān)于一個帳戶的借記方法;調(diào)用關(guān)于另一個帳戶的借記方法。如果銀行數(shù)據(jù)庫的借記調(diào)用失敗,則銀行業(yè)應(yīng)用程序需要一個機制來返回先前的借記調(diào)用。上述傳統(tǒng)的事務(wù)管理方法的問題是,在處理事務(wù)返回的方式中效率低下。每個提交服務(wù)器必須直接接觸每個參與的服務(wù)器,然后再通知客戶。此外,傳統(tǒng)方法缺少靈活性,例如,在調(diào)用提交功能之后,沒有允許新服務(wù)器或資源參與事務(wù)的機制。這限制了傳統(tǒng)方法的可伸縮性和適用性,并阻礙了今日商務(wù)所需的日益增加的復(fù)雜應(yīng)用程序的開發(fā)。
發(fā)明內(nèi)容本發(fā)明提供了一種供應(yīng)用程序服務(wù)器或者事務(wù)處理系統(tǒng)使用的機制,允許在事務(wù)完成之前同步(或生效)回退處理。在事務(wù)的壽命周期,存在幾種狀態(tài)轉(zhuǎn)換,包括活動、切換、預(yù)準(zhǔn)備、準(zhǔn)備、記錄與提交狀態(tài)之間的轉(zhuǎn)換。根據(jù)本發(fā)明的一個實施例,在活動階段期間可以在任何服務(wù)器上注冊同步對象。在提交()功能被調(diào)用之后,在準(zhǔn)備處理階段調(diào)用每個同步對象。一個同步對象可以注冊另一個對象,或者可允許一個同步對象調(diào)用一個以前未包含于事務(wù)中的服務(wù)器。同步對象還可以包含事務(wù)中的新XA資源。在本文中,術(shù)語同步和同步對象是指需要事務(wù)管理器在調(diào)用提交之后,調(diào)用一個完成前同步(Synchronization.beforeCompletion)方法的JTA規(guī)范所指定的編程接口。應(yīng)用程序碼在事務(wù)的活動階段注冊這些回退。循環(huán)控制流在服務(wù)器的一個環(huán)中流動,并在完成所有同步回退時結(jié)束于提交服務(wù)器。如果以后添加新同步對象或者服務(wù)器,則可以把它們插入環(huán)中。所有同步回退在準(zhǔn)備任何資源之前完成,以處理同步回退需要訪問資源的這些事件。與提交服務(wù)器應(yīng)當(dāng)直接接觸每個參與的服務(wù)器的傳統(tǒng)方法相比,該循環(huán)控制流處理減少了消息的數(shù)量。動態(tài)增加服務(wù)器和資源、沿循環(huán)控制流傳送該服務(wù)器目錄的能力,極大地增加了事務(wù)處理系統(tǒng)、應(yīng)用程序服務(wù)器和建于該服務(wù)器頂部的應(yīng)用程序的靈活性。在實施例中,本發(fā)明包括一種將事務(wù)回退與一個事務(wù)完成相同步的事務(wù)處理系統(tǒng),該系統(tǒng)包括可關(guān)聯(lián)一個事務(wù)的多個同步對象和資源;一個事務(wù)協(xié)調(diào)器,為一個特定事務(wù)注冊至少一個或多個事務(wù)子協(xié)調(diào)器的組,和注冊參與特定事務(wù)的同步對象回退和資源的選擇;其中,該事務(wù)子協(xié)調(diào)器組可以在提交事務(wù)之前修改,以反映參與特定事務(wù)的同步對象回退和資源的選擇的變化。圖1顯示了J2EE體系結(jié)構(gòu)的圖示;圖2顯示了本發(fā)明實施例的同步回退特征的圖示;圖3顯示了供本發(fā)明使用的典型客戶服務(wù)器系統(tǒng)的圖示;圖4顯示了本發(fā)明實施例的各種事務(wù)狀態(tài)的圖示;圖5顯示了本發(fā)明實施例的事務(wù)同步回退系統(tǒng)的第一圖示;圖6顯示了本發(fā)明實施例的事務(wù)同步回退處理的流程圖;圖7顯示了供本發(fā)明實施例的一個開始事務(wù)壽命周期的圖示;圖8顯示了本發(fā)明實施例的事務(wù)傳播壽命周期的圖示;圖9顯示了本發(fā)明實施例的提交壽命周期的圖示;圖10顯示了本發(fā)明實施例的預(yù)準(zhǔn)備階段壽命周期的圖示;圖11顯示了本發(fā)明實施例的準(zhǔn)備階段壽命周期的圖示;圖12顯示了本發(fā)明實施例的提交階段壽命周期的圖示;圖13顯示了本發(fā)明實施例的返回壽命周期的圖示;圖14顯示了本發(fā)明實施例的恢復(fù)壽命周期的圖示;圖15圖示說明了本發(fā)明實施例的事務(wù)如何在EJB應(yīng)用程序中工作;以及圖16圖示說明了本發(fā)明實施例的事務(wù)如何在RMI應(yīng)用程序中工作。具體實施例方式一般來說,本發(fā)明提供了供事務(wù)或應(yīng)用程序服務(wù)器使用的一種機制,它允許在事務(wù)完成之前同步回退處理。在該時期,可以在事務(wù)活動階段把同步對象注冊在任何一個服務(wù)器上。當(dāng)調(diào)用提交功能時,又在準(zhǔn)備階段調(diào)用每個同步對象。這樣做的優(yōu)點是,可以在提交周期之前將同步對象添加到鏈上。一個同步對象可以注冊另一個對象或者可允許一個同步對象調(diào)用以前未包含在事務(wù)中的服務(wù)器。循環(huán)控制在服務(wù)器之間的一個環(huán)中流動,并在所有同步回退完成時結(jié)束于一個提交服務(wù)器上。如果以后增加新同步對象或者服務(wù)器,則將它們插入環(huán)中。在準(zhǔn)備任何一個資源之前完成所有同步回退,以處理同步回退需要訪問資源的事件。與提交服務(wù)器應(yīng)當(dāng)直接接觸每個參與服務(wù)器的傳統(tǒng)方法相比,循環(huán)控制流減少了消息的數(shù)量。動態(tài)增加服務(wù)器和資源、沿循環(huán)控制流傳送該服務(wù)器目錄的能力,極大地增加了事務(wù)處理系統(tǒng)、應(yīng)用程序服務(wù)器和建于該服務(wù)器頂部的應(yīng)用程序的靈活性。圖2圖示說明了本發(fā)明的一個實施例,顯示了在提交和回退階段之前,附加服務(wù)器和同步對象如何被包含在同步回退環(huán)中。如圖2所示,包括客戶應(yīng)用程序104的客戶102啟動或者開始包含一個服務(wù)器106或者這些服務(wù)器上的資源的事務(wù)。通常,客戶應(yīng)用程序104將指定一個特定事務(wù)上下文112,該上下文告知諸多服務(wù)器其中哪些服務(wù)器和哪些服務(wù)器資源對象或資源應(yīng)當(dāng)被包含在特定事務(wù)中。在這里,術(shù)語“同步對象”是指允許服務(wù)器參與事務(wù)的服務(wù)器對象。在包括基于Java系統(tǒng)的面向?qū)ο蟮南到y(tǒng)中有規(guī)則地使用同步對象,以保持瞬態(tài)狀態(tài)數(shù)據(jù)。在事務(wù)完成之間,同步對象將數(shù)據(jù)往返于向相同事務(wù)注冊的一個或多個資源對象。例如,如圖2所示,事務(wù)上下文112可以指定服務(wù)器1108和服務(wù)器A110將參與的事務(wù),該事務(wù)包含一個或多個位于服務(wù)器A上的對象或資源116。需要注意的是,在一個實施例中,服務(wù)器106的任何一個可以選作開始處理鏈的初始服務(wù)器1。當(dāng)預(yù)準(zhǔn)備階段期間,在提交時期之前將諸多服務(wù)器加入到環(huán)中。在提交事務(wù)之前的任何點上,客戶應(yīng)用程序可以改變事務(wù)上下文122,以增加另一個服務(wù)器B128,或許包括位于該服務(wù)器的任何一個同步對象和資源132。這樣,本發(fā)明就提供了一種將服務(wù)器B納入準(zhǔn)備環(huán)中的機制。在活動和準(zhǔn)備階段期間還可以增加多個服務(wù)器。事務(wù)上下文通常不易被客戶應(yīng)用程序直接改變。而是,當(dāng)應(yīng)用程序調(diào)用其它J2EE組件時,J2EE容器將向事務(wù)注冊附加同步對象或者征召附加XA資源對象;例如(1)當(dāng)應(yīng)用程序調(diào)用EJB時,EJB容器將向代表EJB的事務(wù)管理器注冊同步對象,或者(2)當(dāng)應(yīng)用程序經(jīng)由JDBC訪問數(shù)據(jù)庫時,Weblogic連接池將向事務(wù)管理器征召與數(shù)據(jù)庫事件關(guān)聯(lián)的XA資源。本領(lǐng)域熟練技術(shù)人員將會明白,盡管第一服務(wù)器1108在圖2中被標(biāo)識為事務(wù)的協(xié)調(diào)器,但是任何一個服務(wù)器都可以承擔(dān)這一給定事務(wù)的任務(wù),并且可以使用各種不同方式選擇被選作事務(wù)協(xié)調(diào)器的服務(wù)器,所述各種不同方式包括只選擇客戶所接觸的第一服務(wù)器。事務(wù)協(xié)調(diào)器可以參與或者不參與提供供事務(wù)使用的實際資源。由此得到的本發(fā)明特征之一是可以修改客戶應(yīng)用程序以在任何時間點改變事務(wù)上下文,并立即實現(xiàn)同步對象或者資源的改變。例如,如果客戶應(yīng)用程序是EJB,則可以在準(zhǔn)備或提交階段期間修改事務(wù)上下文,將不同資源包含到不同服務(wù)器上,并且把這些資源動態(tài)地輸入到處理鏈中。這允許在修改客戶應(yīng)用程序時有極大的靈活性。圖3顯示了供本發(fā)明使用的典型客戶服務(wù)器系統(tǒng)。共同稱之為客戶應(yīng)用程序的遠程裝置或應(yīng)用程序202與應(yīng)用程序服務(wù)器204通信,特別是與擔(dān)任應(yīng)用程序服務(wù)器宿主的應(yīng)用程序通信。在客戶端,客戶應(yīng)用程序使用事務(wù)管理器206發(fā)送和接收到達服務(wù)器(或者到達許多服務(wù)器)的事務(wù)208。同樣,在服務(wù)器端,事務(wù)管理器210用客戶處理事務(wù)。在一個實施例中,服務(wù)器還可以包含一個事務(wù)協(xié)調(diào)器214,用于協(xié)調(diào)事務(wù)提交處理;子協(xié)調(diào)器216,用于參與事務(wù)以及執(zhí)行各個階段的提交處理,其中對于向本地事務(wù)管理器注冊的同步和XA資源對象進行提交處理;和事務(wù)日志器218,用于記錄事務(wù)。當(dāng)創(chuàng)建事務(wù)和處理事務(wù)時,將其記錄到事務(wù)日志220中,用于日后審計、引用或者回退目的。本發(fā)明提供了允許特性與每個事務(wù)關(guān)聯(lián)的事務(wù)管理器??蛻艋蛘叻?wù)器應(yīng)用程序可以在傳送事務(wù)222以及由此反應(yīng)時分析這些特性。圖4顯示了本發(fā)明實施例的各種事務(wù)的圖示。圖4顯示了事務(wù)壽命周期的各種狀態(tài)或者階段,包括活動302、預(yù)準(zhǔn)備306、準(zhǔn)備308、記錄310和提交312狀態(tài)。在任何事務(wù)壽命周期期間,存在幾個狀態(tài)轉(zhuǎn)換,包括活動、切換、預(yù)準(zhǔn)備、準(zhǔn)備、記錄和提交狀態(tài)之間的轉(zhuǎn)換。在活動狀態(tài),運行于客戶上的應(yīng)用程序或者應(yīng)用程序碼被設(shè)計成在事務(wù)的活動執(zhí)行期間接觸幾個服務(wù)器。客戶負責(zé)記憶哪些服務(wù)器被接觸以及對待事務(wù)的某些其它細節(jié)。根據(jù)本發(fā)明的一個實施例,所接觸的第一服務(wù)器被設(shè)計為“提交服務(wù)器”或者事務(wù)協(xié)調(diào)器。當(dāng)客戶調(diào)用“提交”時,將提交事務(wù)的實際職責(zé)授權(quán)和移交給提交服務(wù)器。提交服務(wù)器除了負責(zé)處理提交的實事外,它還是一個常規(guī)服務(wù)器,在許多事件中,任何一個服務(wù)器可以承擔(dān)提交服務(wù)器的任務(wù),哪個服務(wù)器實際結(jié)束其職責(zé)(由此成為提交服務(wù)器)取決于實際實施。應(yīng)用程序服務(wù)器通常支持各種應(yīng)用程序類型和事務(wù)類型。J2EE順從應(yīng)用程序服務(wù)器應(yīng)當(dāng)支持EJB和RMI應(yīng)用程序。根據(jù)應(yīng)用程序類型,可以使用各種事務(wù)處理方法。Weblogic服務(wù)器產(chǎn)品是一個這樣的應(yīng)用程序服務(wù)器產(chǎn)品,并且為了圖示說明的目的,在本文中經(jīng)常描述其實施。本領(lǐng)域熟練技術(shù)人員將會明白,本發(fā)明提供的系統(tǒng)和方法同樣可以與其它事務(wù)處理系統(tǒng)一起使用,以及與其它類型的應(yīng)用服務(wù)器一起使用。圖5示出了使用同步回退處理事務(wù)的本發(fā)明實施例的事務(wù)系統(tǒng)。當(dāng)客戶602試圖通信或者處理事務(wù)時,可以接觸多個服務(wù)器604、606、608,以確定哪一個服務(wù)器將實際處理事務(wù)。根據(jù)實施,選擇一個服務(wù)器充當(dāng)提交服務(wù)器/事務(wù)協(xié)調(diào)器,而其它服務(wù)器僅被視為參與服務(wù)器。為了說明目的,圖5中只示出了單個提交服務(wù)器和兩個參與服務(wù)器,盡管人們將會明白在真實情況中可以使用許多服務(wù)器(并且非常可能用來提供可用性)。同樣,盡管顯示了一個指定的提交服務(wù)器和參與服務(wù)器,但是在另一個實施例中,多個服務(wù)器中的每個服務(wù)器可以充當(dāng)提交服務(wù)器,或者僅充當(dāng)參與服務(wù)器。本發(fā)明提供的系統(tǒng)對于所使用的服務(wù)器數(shù)量和類型是靈活的。一旦作出選擇,提交服務(wù)器就負責(zé)處置提交處理。事務(wù)處理僅僅通過客戶602與提交服務(wù)器604之間的通信來處置,而不需要客戶與參與服務(wù)器606之間的其它通信。提交服務(wù)器本身與參與服務(wù)器606(或服務(wù)器606、608)一起處置事務(wù)處置,并且經(jīng)由預(yù)準(zhǔn)備、準(zhǔn)備、記錄和提交步驟移動事務(wù)。當(dāng)提交處理完成后,提交服務(wù)器將提交返回到客戶。在準(zhǔn)備階段期間的任何時候以及在回退之前,附加服務(wù)器或者參與者可以被插入到事務(wù)處理中。同步回退的典型實例通過考慮包括多個子協(xié)調(diào)器(服務(wù)器)及其同步對象的一個事務(wù)的典型實例,可以說明上述處理。一個典型事務(wù)通過五個不同階段進行1.活動階段。2.調(diào)用事務(wù)提交。3.預(yù)準(zhǔn)備階段(該階段包括同步回退的調(diào)用,即僅僅是完成前的同步,但不調(diào)用任何資源)。4.準(zhǔn)備階段(該階段僅包括調(diào)用資源,但不同步回退)。5.提交階段(該階段也僅僅包含調(diào)用資源,但不同步回退)。在步驟3的預(yù)準(zhǔn)備階段期間,新同步對象可以向事務(wù)注冊。還可以在預(yù)準(zhǔn)備階段增加新資源,使其參與事務(wù)。在步驟4和步驟5期間調(diào)用這些資源。通常增加資源,但不從事務(wù)中刪除資源。新的子協(xié)調(diào)器(即服務(wù)器)可以在預(yù)準(zhǔn)備階段參與事務(wù)。例如,如果考慮存在一個客戶和三個服務(wù)器S1、S2、S3的情況,則存在三個同步對象,即服務(wù)器S1上的Sync1,服務(wù)器2上的Sync2,服務(wù)器3上的Sync3;以及三個資源對象,即S1上的r1,S2上的r2和S3上的r3。如果客戶啟動或開始事務(wù)T1,并且事務(wù)T1傳播到服務(wù)器S1,那么根據(jù)本發(fā)明一個實施例,服務(wù)器S1將成為該事務(wù)的提交服務(wù)器/事務(wù)協(xié)調(diào)器。其它實施例和實施可以使用從多個可用服務(wù)器選擇事務(wù)協(xié)調(diào)器的替代機制。在事務(wù)T1的活動階段,我們有以下狀態(tài)信息當(dāng)前參與事務(wù)T1的子協(xié)調(diào)器(服務(wù)器)S2向事務(wù)T1注冊的同步對象Sync1(來自服務(wù)器S1),Sync2(來自服務(wù)器S2)參與事務(wù)T1的資源r1(來自服務(wù)器S1),r2(來自服務(wù)器S2)。當(dāng)客戶以后調(diào)用一個T1.commit()或等同功能,以提交事務(wù)時,以下事件序列發(fā)生1.提交移交給協(xié)調(diào)器,服務(wù)器S1。2.服務(wù)器S1執(zhí)行預(yù)準(zhǔn)備階段。服務(wù)器S1調(diào)用本地注冊的同步回退Sync1。服務(wù)器S1將開始準(zhǔn)備請求發(fā)送給鏈中的第一子協(xié)調(diào)器S2。3.服務(wù)器S2執(zhí)行預(yù)準(zhǔn)備階段。服務(wù)器S2調(diào)用本地注冊的同步回退的Synchronization.beforeCompletionSync2。Sync2.beforeCompletion功能調(diào)用新服務(wù)器S3上的EJB。EJB的商務(wù)方法調(diào)用新資源r3。同時,服務(wù)器S3上的EJB容器還注冊新的統(tǒng)統(tǒng)對象Sync3(在服務(wù)器S3上)。作為結(jié)果,事務(wù)的狀態(tài)信息目前改變?nèi)缦庐?dāng)前正在參與事務(wù)T1的子協(xié)調(diào)器(服務(wù)器)S2,S3現(xiàn)在向T1注冊的同步對象Sync1(來自服務(wù)器S1),Sync2(來自S2),Sync3(來自服務(wù)器S3)現(xiàn)在參與事務(wù)T1的資源r1(來自服務(wù)器S1),r2(來自服務(wù)器S2),r3(來自服務(wù)器S3)。服務(wù)器S2現(xiàn)在已經(jīng)完成了它自己的同步回退。服務(wù)器S2沿著鏈把預(yù)準(zhǔn)備請求傳送到下一個子協(xié)調(diào)器,即服務(wù)器S3。需要注意的是,當(dāng)服務(wù)器S2首先進入它的準(zhǔn)備階段時,它是鏈中的最后的子協(xié)調(diào)器,但現(xiàn)在不是,服務(wù)器S3才是現(xiàn)在的鏈中的最后子協(xié)調(diào)器。4.服務(wù)器S3現(xiàn)在執(zhí)行預(yù)準(zhǔn)備階段。服務(wù)器S3調(diào)用本地注冊的同步回退Sync3。服務(wù)器S3確定它是鏈中真正的最后子協(xié)調(diào)器,由于目前存在鏈,因此把一個預(yù)準(zhǔn)備答復(fù)回送給事務(wù)協(xié)調(diào)器,即服務(wù)器S1。5.服務(wù)器(在該事件中還是事務(wù)協(xié)調(diào)器)S1得知預(yù)準(zhǔn)備階段被執(zhí)行。然后可以前進到準(zhǔn)備以及隨后的提交階段。圖6圖示說明了顯示本發(fā)明實施例的同步回退處理的步驟的流程圖。在步驟702,客戶或者客戶應(yīng)用程序準(zhǔn)備一個用于處理的事務(wù)。在活動階段期間(步驟704),注冊將要參與事務(wù)處理的各種同步對象、資源或服務(wù)器(步驟706)。當(dāng)調(diào)用事務(wù)提交時(步驟707),又調(diào)用每個同步對象或資源(步驟708)。在任何時候,可以修改同步對象的目錄,把諸如參與服務(wù)器的資源添加到回退環(huán)中(步驟710)。當(dāng)當(dāng)前目錄中的所有同步對象已經(jīng)返回它們的回退時(步驟712),提交事務(wù)(步驟714)。在beforeCompletion期間對調(diào)用bean的bean的支持EJB和JTA規(guī)范都沒有澄清如何處理這樣一種情況即bean的beforeCompletion或ejbStore方法(準(zhǔn)備前調(diào)用)調(diào)用另一個其beforeCompletion和/或ejbStore方法已經(jīng)被調(diào)用的bean。本發(fā)明支持多個服務(wù)器上的這樣一種情況。圖7至圖14圖示說明了根據(jù)可與Weblogic服務(wù)器一起使用的特定實施例,與同步回退處理的各個階段相關(guān)聯(lián)的壽命周期;本領(lǐng)域的熟練技術(shù)人員將會明白,在本發(fā)明精神和范圍之內(nèi),其它壽命周期和實施例也可以用來提供同步回退。圖7顯示了本發(fā)明實施例的開始事務(wù)壽命周期的圖示。如圖7所示,處理開始于在事務(wù)管理器804上接收的事務(wù)請求。事務(wù)管理器804調(diào)用協(xié)調(diào)器定位器805去選擇一個事務(wù)協(xié)調(diào)器806。事務(wù)協(xié)調(diào)器806接收一個事務(wù)標(biāo)識符,并將該標(biāo)識符與新事務(wù)830相關(guān)聯(lián)。該請求被分配給線程的一個池(pool),并由此返回到事務(wù)管理器804。后續(xù)請求被分配給與該池不同的線程。圖8顯示了本發(fā)明一個實施例的事務(wù)傳播壽命周期的圖示。如圖8所示,客戶應(yīng)用程序802對本地(客戶)Java虛擬機(RJVM)807進行遠程方法調(diào)度,用于對服務(wù)器通信??蛻羰聞?wù)管理器804攔截該請求并經(jīng)由服務(wù)器RJVM808將該請求傳送到服務(wù)器事務(wù)管理器810。服務(wù)器事務(wù)管理器810負責(zé)調(diào)用服務(wù)器應(yīng)用程序812上的方法。當(dāng)從服務(wù)器應(yīng)用程序812接收一個答復(fù)時,服務(wù)器事務(wù)管理器810又負責(zé)經(jīng)由客戶和服務(wù)器RJVM把答復(fù)傳送到客戶事務(wù)管理器804??蛻羰聞?wù)管理器804將答復(fù)返回到客戶應(yīng)用程序802。圖9顯示了本發(fā)明實施例的提交壽命周期的圖示。如圖9所示,事務(wù)管理器804接收一個提交。該提交被傳送到事務(wù)協(xié)調(diào)器806進行處理。當(dāng)該提交完成時,將其返回到事務(wù)管理器804。圖10顯示了本發(fā)明實施例的預(yù)準(zhǔn)備階段壽命周期的圖示,顯示了同步對象是如何被添加到beforeCompletion環(huán)中。如圖10所示,事務(wù)協(xié)調(diào)器806采用對第一子協(xié)調(diào)器814的startPreoare調(diào)用啟動預(yù)準(zhǔn)備處理。子協(xié)調(diào)器負責(zé)事務(wù)通過beforeCompletion階段。在beforeCompletion階段完成之前的任何時候,同步對象816可以被調(diào)加到環(huán)中。當(dāng)添加了所有同步對象時,第二子協(xié)調(diào)器818同時對所有同步對象820起作用。然后把PrePreare確認返回到事務(wù)協(xié)調(diào)器806。本領(lǐng)域熟練技術(shù)人員將會明白,在圖10所示的壽命周期中以及下文所述的其它壽命周期中,第一和第二子協(xié)調(diào)器可以是同一實體。同樣,第一和第二組同步對象可以是相同的,因為它們也許是XA資源對象的第一和第二組。本領(lǐng)域熟練技術(shù)人員還將會明白,盡管在這里給出的實例中僅顯示了兩個子協(xié)調(diào)器或者兩組資源對象,但是本發(fā)明允許多個子協(xié)調(diào)器和多組同步對象和資源被同時包含在事務(wù)提交處理中。該方法主張的子協(xié)調(diào)器和同步對象使協(xié)調(diào)器通信交換的數(shù)量最小。圖11顯示了本發(fā)明實施例的使用XAR資源對象的準(zhǔn)備階段壽命周期的圖示。如圖11所示,事務(wù)協(xié)調(diào)器806采用對第一協(xié)調(diào)器814的startPrepare調(diào)用。子協(xié)調(diào)器(或多個子協(xié)調(diào)器)負責(zé)準(zhǔn)備應(yīng)付第一組XAR資源對象817的事務(wù)。與此同時,事務(wù)協(xié)調(diào)器可以發(fā)送對第二子協(xié)調(diào)器818的startPrepare調(diào)用,以準(zhǔn)備應(yīng)付第二組XAR資源對象821的事務(wù)。當(dāng)準(zhǔn)備了每個XAR資源對象時,將一個確認返回到事務(wù)協(xié)調(diào)器896。圖12顯示了提交階段壽命周期的圖示。如圖12所示,事務(wù)協(xié)調(diào)器806首先刷新事務(wù)日志。把startCommit調(diào)用發(fā)送到第一子協(xié)調(diào)器814。第一子協(xié)調(diào)器發(fā)出一個對第一組XAR資源對象817的提交。與此同時,該事務(wù)協(xié)調(diào)器可以把startCommit發(fā)送給子協(xié)調(diào)器818。第二子協(xié)調(diào)器發(fā)出一個對XAR資源對象821的提交。第二子協(xié)調(diào)器發(fā)出一個對第二組XAR資源對象821的提交。當(dāng)這兩個提交完成時,向協(xié)調(diào)器806發(fā)送一個確認。圖13顯示了本發(fā)明實施例的返回壽命周期的圖示。如圖13所示,當(dāng)系統(tǒng)希望執(zhí)行返回時,事務(wù)協(xié)調(diào)器806把statrRollback發(fā)送到第一協(xié)調(diào)器814。協(xié)調(diào)器負責(zé)執(zhí)行離開第一組XAR資源對象817的返回。與此同時,系統(tǒng)經(jīng)由第二子協(xié)調(diào)器向第二組XAR資源對象821發(fā)出一個startRollback命令,由此可以在第二組XAR資源對象821上執(zhí)行返回。當(dāng)兩個返回都完成時,把一個確認返回到事務(wù)協(xié)調(diào)器806。圖14顯示了本發(fā)明實施例的恢復(fù)壽命周期的圖示。如圖14所示,恢復(fù)處理通過來自事務(wù)協(xié)調(diào)器806的請求啟動,以訪問事務(wù)恢復(fù)日志。當(dāng)事務(wù)協(xié)調(diào)器806向子協(xié)調(diào)器814發(fā)出一個startRecovery請求以執(zhí)行恢復(fù)時,子協(xié)調(diào)器使用事務(wù)恢復(fù)日志中的信息執(zhí)行XAR資源對象組的恢復(fù)。子協(xié)調(diào)器814使用事務(wù)標(biāo)識符正確地標(biāo)識每個恢復(fù),并且把該事務(wù)標(biāo)識符返回到事務(wù)協(xié)調(diào)器806。事務(wù)協(xié)調(diào)器806然后向子協(xié)調(diào)器814發(fā)送一個返回請求。EJB應(yīng)用程序中的事務(wù)圖15顯示了如何處理EJB客戶應(yīng)用程序與服務(wù)器應(yīng)用程序之間的事務(wù)。如圖15所示,EJB客戶應(yīng)用程序402使用EJB容器406把事務(wù)404傳送到服務(wù)器應(yīng)用程序410。加入本發(fā)明的應(yīng)用程序服務(wù)器支持EJB應(yīng)用程序中的兩類事務(wù)容器管理的事務(wù)和bean管理的事務(wù)。在容器管理的事務(wù)中,服務(wù)器EJB容器負責(zé)管理事務(wù)定界。EJB部署描述符中的事務(wù)屬性被用來確定服務(wù)器EJB容器如何用每個方法調(diào)用來處理事務(wù)。在bean管理的事務(wù)中,EJB本身管理事務(wù)界定。EJB對UserTransaction對象進行顯性方法調(diào)度以開始提交,如果需要,還返回事務(wù)。事務(wù)事件的序列在容器管理與bean管理的事務(wù)之間是不同的。對于帶有容器管理事務(wù)的EJB應(yīng)用程序,一個基本事務(wù)按以下方式工作·在EJB部署描述符中,bean供應(yīng)者或者應(yīng)用程序裝配器指定容器管理定界的事務(wù)類型。·在EJB部署描述符中,bean供應(yīng)者或者應(yīng)用程序裝配器為EJB指定默認事務(wù)屬性,它通常是以下設(shè)置之一“NotSupported”,“Required”?!癝upports”,“RequiresNew”,“Mandatory”或者“Never”。在EJB部署描述符中,bean供應(yīng)者或者應(yīng)用程序裝配器為一個或多個方法隨意地指定事務(wù)屬性?!ぎ?dāng)客戶應(yīng)用程序402在EJB中調(diào)用方法時,EJB容器為該方法檢驗部署描述符中的事務(wù)屬性設(shè)置。如果沒有為該方法指定設(shè)置,則EJB使用該EJB的默認事務(wù)屬性設(shè)置?!JB容器406根據(jù)可應(yīng)用的事務(wù)屬性設(shè)置采取適當(dāng)行動。例如,如果事物屬性設(shè)置是“Required”,則EJB容器調(diào)用現(xiàn)存事務(wù)上下文內(nèi)的方法,或者,如果客戶未用事務(wù)上下文調(diào)用,則EJB容器在執(zhí)行該方法之前開始一個新事務(wù)?!ぴ诹硪粋€實例中,如果事務(wù)屬性設(shè)置是“Mandatory”,則EJB容器調(diào)用現(xiàn)存事務(wù)上下文中的方法。如果客戶未用事務(wù)上下文調(diào)用,則EJB容器丟棄異常錯誤。·在商務(wù)方法408的調(diào)用期間,如果確定需要返回,則商務(wù)方法調(diào)用EJB返回方法,通知EJB容器該事務(wù)在方法將在調(diào)用結(jié)束時返回?!ぴ诜椒▓?zhí)行結(jié)束和巴結(jié)果發(fā)送給客戶之前,EJB容器完成事務(wù),這是通過在服務(wù)器應(yīng)用程序410上提交事務(wù)(在此情況下,可以把事務(wù)寫入事務(wù)日志412)或者返回事務(wù)實現(xiàn)的。對于具有bean管理事務(wù)定界的EJB應(yīng)用程序,基本事務(wù)以下述方式工作·在EJB部署描述符中,bean供應(yīng)者或者應(yīng)用程序裝配器指定bean管理定界的事務(wù)類型?!た蛻魬?yīng)用程序402使用JNDI獲取對服務(wù)器域的UserTransaction對象的引用。·客戶應(yīng)用程序402開始一個使用UserTransaction.begin方法的事務(wù),并且經(jīng)過EJB容器發(fā)送一個請求給EJB。EJB上的所有操作在事務(wù)范圍內(nèi)運行?!と绻麑@些操作任何一個的調(diào)用出現(xiàn)異常(明示或者作為通信失敗的結(jié)果),則可以捕獲該異常并且可以返回該事務(wù)(UserTransaction.rollback)。·如果無異常出現(xiàn),則客戶向使用UserTransaction.commit方法的服務(wù)器應(yīng)用程序410提交當(dāng)前事務(wù)。該方法結(jié)束事務(wù)并開始操作的處理。只有當(dāng)事務(wù)中的所有參與者都同意提交時才提交該事務(wù)?!serTranaction.commit方法使EJB容器調(diào)用事務(wù)管理器完成該事務(wù)。·事務(wù)管理器負責(zé)與資源管理器協(xié)調(diào),以更新任何一個數(shù)據(jù)庫。事務(wù)樣本EJB碼以下部分提供了依據(jù)EJB應(yīng)用程序的類別的樣品碼片段的走查。碼片段展示了為bean管理事務(wù)定界利用UserTransaction對象的情況。該bean的部署描述符指定了事務(wù)定界的事務(wù)類型。事務(wù)軟件包首先必須被輸入和/或更新。列表1顯示了輸入事務(wù)必須的軟件包的樣本碼。列表1importjavax.naming.*;importjavax.transaction.UserTransaction;importjavax.transaction.SystemExceptionimportjavax.transaction.HeuristicMixedExceptionimportjavax.transaction.HeuristicRollbackExceptionimportjavax.transaction.NotSupportedExceptionimportjavax.transaction.RollbackExceptionimportjavax.transaction.IllegalStateExceptionimportjavax.transaction.SecurityExceptionimportjava.sql.*;importjava.util.*;importweblogic.jndi.*;在輸入這些類之后,將UserTransaction對象的事件初始化到零。下一步驟包括使用JNDI返回對象參考。列表2顯示了使用JNDI查找對象參考的一個實例。列表2contextctx=nullHashtableenv=newHashtable()env.put(context.INITIAL_CONTEXT_FACTORY,“weblogic.jndi.WLInitialContextFactory”);env.put(Context.PROVIDER_URL,“t3//localhost7001”);env.put(Context.SECURITY_PRINCIPAL,“Fred”);env.put(Context.SECURITY_CREDENTIALS,“secret”);ctx=nexInitialContext(env);UserTransactiontx=(UserTransaction)ctx.lookup(“javax.transaction.UserTransaction”);隨后必須生成或者開始事務(wù)。列表3顯示了通過得到UserTransaction對象并調(diào)用事務(wù)開始方法來開始一個事務(wù)。該方法調(diào)用后以及完成事務(wù)之前出現(xiàn)的數(shù)據(jù)庫操作存在于這些事務(wù)的范圍之內(nèi)。列表3UserTransactiontx=(UserTransaction)ctx.lookup(“javax.transaction.UserTransaction”);tx.begin();EJB實施中的最后步驟是完成事務(wù)。列表4顯示了根據(jù)在任何一個數(shù)據(jù)庫操作期間是否丟棄一個異常來完成事務(wù)的代碼,該數(shù)據(jù)庫操作是試圖在事務(wù)范圍之內(nèi)進行的列表4tx.commit()//ortx.rollback();如果在任何數(shù)據(jù)庫操作期間拋出異常,則應(yīng)用程序調(diào)用java.transaction.UserTransaction.rollback()方法來回退事務(wù)。如果沒有拋出異常,則應(yīng)用程序調(diào)用javax.Transaction.UserTransaction.commit()方法,以試圖在所有數(shù)據(jù)庫操作成功完成之后提交事務(wù)。調(diào)用該方法結(jié)束事務(wù)并開始操作的處理,使Weblogic服務(wù)器EJB容器調(diào)用事務(wù)管理器王城事務(wù)。只有當(dāng)事務(wù)的參與者都同意提交時才提交事務(wù)。Weblogic服務(wù)器RMI應(yīng)用程序中的事務(wù)圖16說明了事務(wù)如何在RMI應(yīng)用程序中工作。對于RMI客戶和服務(wù)器應(yīng)用程序,基本事務(wù)按以下方式工作·應(yīng)用程序502使用JNDI將對象參考返回到服務(wù)器域的UserTransaction對象506?!か@得對象參考導(dǎo)致產(chǎn)生應(yīng)用程序與該對象之間的一個對話狀態(tài)。在完成(即提交或者返回)事務(wù)504之前,該對話狀態(tài)一直持續(xù)。RMI對象一旦被例示,就存儲器中保持活動狀態(tài),直至它們被釋放,通常是在服務(wù)器停機期間進行釋放?!た蛻魬?yīng)用程序開始一個使用UserTransactin.begin方法的事務(wù),并把請求發(fā)送給服務(wù)器應(yīng)用程序。·服務(wù)器應(yīng)用程序上的所有操作在事務(wù)范圍之內(nèi)執(zhí)行。·如果對這些操作的任何一個的調(diào)用出現(xiàn)異常(明示或者作為通信失敗的結(jié)果),則可以捕獲該異常并可以返回該事務(wù)(UserTransaction.rollback)?!と绻麤]有異常出現(xiàn),則客戶應(yīng)用程序提交使用UserTransaction.commit方法的當(dāng)前事務(wù)。該方法結(jié)束事務(wù)并開始操作的處理。只有當(dāng)事務(wù)的所有參與者都同意提交時,才提交事務(wù)。·UserTransaction.commit方法使服務(wù)器調(diào)用事務(wù)管理器完成該事務(wù)?!な聞?wù)管理器負責(zé)與資源管理器協(xié)調(diào)更新任何數(shù)據(jù)庫512。事務(wù)樣本RMI碼該部分提供了來自RMI應(yīng)用程序中的類的樣本碼片段的走查。碼片段演示了使用RMI事務(wù)的UserTransaction對象的情況。此外,作為初始步驟,需要時必須輸入和/或更新程序包。列表5顯示了輸入必要的程序包。列表5importjavax.naming.*;importjavax.rmi.*;importjavax.transaction.UserTransaction;importjavax.transaction.SystemException;importjavax.transaction.HeuristicMixedException;importjavax.transaction.HeuristicRollbackException;importjavax.transaction.NotSupportedException;importjavax.transaction.RollbackException;importjavax.transaction.IllegalStateException;importjavax.transaction.SecurityException;importjava.sql.*;importjava.util.*;importweblogic.jndi.*;輸入這些類后,把UserTransaction對象的事件初始化為零。JNDI用來吧對象參考返回到UserTransaction對象。列表6顯示了搜索JNDI樹,把對象參考返回到用于適當(dāng)WeblogicServer域的UserTransaction對象的情況。獲得對象參考導(dǎo)致產(chǎn)生應(yīng)用程序與該對象之間的對話狀態(tài)。在完成事務(wù)(提交或返回)之前,該對話狀態(tài)一直持續(xù)。一旦RMI對象被例示,就在存儲器中保持其活動狀態(tài),直至它們被釋放。列表6contextctx=null;Hashtableenv=newHashtable();env.put(context.INITIAL_CONTEXT_FACTORY,“weblogic.jndi.WLInitialContFactory”);//parametersfortheWebLogicServer.//Substitutethecorrecthostname,portnumber//username,andpasswordforyourenviromentenv.put(context.PROVIDER_URL,“t3//localhost7001”);env.put(Context.SECURITY_PRINCIPAL,“Fred”);env.put(context.SECURITY_CREDENTIALS,“secret”);ctx=newInitialContext(env);UserTransactiontx=(UserTransaction)ctx.lookup(“javax.transaction.UserTranaction.”);然后生成或開始事務(wù)。列表7顯示通過調(diào)用javax.transaction.UsetTransaction.beging()方法開始事務(wù)。該方法調(diào)用后以及完成事務(wù)前發(fā)生的數(shù)據(jù)庫操作存在于該事務(wù)范圍之內(nèi)。列表7UserTransactiontx=(UserTransaction)ctx.lookup(“javax.transaction.UserTransaction”);tx.begin();completingaTransaction如同EJB實施一樣,事務(wù)處理中的最后步驟是完成事務(wù)。列表8顯示了根據(jù)是否丟棄異常完成事務(wù),其中在該事務(wù)范圍之內(nèi)試圖進行任何一個數(shù)據(jù)庫操作期間進行所述丟棄列表8tx.commit()//ortx.rollback();如果在任何一個數(shù)據(jù)庫操作期間拋出異常,則應(yīng)用程序調(diào)用javax.transaction.UserTransaction.rollback()方法。若未拋出異常,則應(yīng)用程序調(diào)用javax.transaction.UserTransaction.commit()方法,以試圖在成功完成所有數(shù)據(jù)庫操作之后提交事務(wù)。調(diào)用該方法導(dǎo)致結(jié)束事務(wù)并開始操作的處理,使WebLogic服務(wù)器調(diào)用事務(wù)管理器完成事務(wù)。只有當(dāng)事務(wù)的所有參與者都同意提交時,才提交事務(wù)。本發(fā)明的以上說明用于圖示說明的目的,而不是打算用來窮舉或者把本發(fā)明限制到公開的精確形式。顯然,本領(lǐng)域熟練技術(shù)人員將會明白許多修改和變化。選擇和描述諸多實施例是為了最好地解釋本發(fā)明原理和實際應(yīng)用,從而使本發(fā)明的熟練技術(shù)人員理解適合于特定預(yù)期應(yīng)用的不同實施例以及具有各種修改的本發(fā)明。本發(fā)明的范圍由以下權(quán)利要求和其等同物定義。權(quán)利要求1.一種將事務(wù)回退與事務(wù)完成同步的事務(wù)處理系統(tǒng),包括多個可關(guān)聯(lián)于一個事務(wù)的同步對象和資源;一個事務(wù)協(xié)調(diào)器,為一個特定事務(wù)注冊至少一個或多個事務(wù)子協(xié)調(diào)器的組,以及同步對象回退和資源的選擇,以參與該特定事務(wù);其中,在提交事務(wù)之前可以修改該事務(wù)子協(xié)調(diào)器組,以反映參與特定事務(wù)的同步對象回退和資源的選擇的變化。2.根據(jù)權(quán)利要求1所述的系統(tǒng),還包括多個用于提供同步對象和資源的服務(wù)器,其中所述多個服務(wù)器之一被選作事務(wù)協(xié)調(diào)器。3.根據(jù)權(quán)利要求2所述的系統(tǒng),其中第一服務(wù)器上的事務(wù)協(xié)調(diào)器采用對第二服務(wù)器上的事務(wù)子協(xié)調(diào)器的一個開始預(yù)準(zhǔn)備調(diào)用來啟動事務(wù)預(yù)準(zhǔn)備處理,其中事務(wù)子協(xié)調(diào)器負責(zé)處理整個事務(wù)預(yù)準(zhǔn)備階段的事務(wù)。4.根據(jù)權(quán)利要求3所述的系統(tǒng),其中在事務(wù)預(yù)準(zhǔn)備階段完成之前的任何時候,注冊第二服務(wù)器上的附加資源與參與特定事務(wù)的同步對象回退和資源的選擇,然后把一個預(yù)準(zhǔn)備確認返回到事務(wù)協(xié)調(diào)器。5.一種將事務(wù)回退與事務(wù)完成同步的事務(wù)處理方法,包括以下步驟提供可關(guān)聯(lián)于一個事務(wù)的多個同步對象和資源;在事務(wù)協(xié)調(diào)器上,為一個特定事務(wù)注冊至少一個或多個事務(wù)子協(xié)調(diào)器的組,以及同步對象回退和資源的選擇,以參與該特定事務(wù);其中,在提交事務(wù)之前可以修改該事務(wù)子協(xié)調(diào)器組,以反映參與特定事務(wù)的同步對象回退和資源的選擇的變化。6.根據(jù)權(quán)利要求5所述的方法,還包括步驟選擇多個服務(wù)器之一作為事務(wù)協(xié)調(diào)器。7.根據(jù)權(quán)利要求6所述的方法,其中所述的注冊步驟包括以下步驟用對第二服務(wù)器上的事務(wù)子協(xié)調(diào)器的開始預(yù)準(zhǔn)備調(diào)用,啟動事務(wù)協(xié)調(diào)器上的事務(wù)預(yù)準(zhǔn)備處理;在事務(wù)子協(xié)調(diào)器上處理整個事務(wù)預(yù)準(zhǔn)備階段的事務(wù)。8.根據(jù)權(quán)利要求7所述的方法,其中所述的注冊步驟包括在事務(wù)預(yù)準(zhǔn)備階段完成之前的任何時候,注冊第二服務(wù)器上的附加資源與同步對象回退和資源的選擇,以參與該特定事務(wù);和把預(yù)準(zhǔn)備確認返回到事務(wù)協(xié)調(diào)器。9.一種將回退與事務(wù)完成相同步的事務(wù)處理系統(tǒng),包括運行時允許系統(tǒng)執(zhí)行以下步驟的指令提供多個服務(wù)事務(wù)的同步對象;經(jīng)由一個或多個事務(wù)子協(xié)調(diào)器將來自事務(wù)協(xié)調(diào)器的事務(wù)請求傳送到所述多個同步對象,包括將事務(wù)請求傳送給第一子協(xié)調(diào)器上的第一組所述多個同步對象,將事務(wù)請求傳送給第二子協(xié)調(diào)器上的第二組所述多個同步對象;以及在提交事務(wù)之前,把來自第二組同步對象的回退與來自第一組同步對象的回退相同步。10.根據(jù)權(quán)利要求9所述的系統(tǒng),還包括提供同步對象和資源的多個服務(wù)器,其中所述多個服務(wù)器之一被選作事務(wù)協(xié)調(diào)器。11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中第一服務(wù)器上的事務(wù)協(xié)調(diào)器借助對第二服務(wù)器上的第一事務(wù)子協(xié)調(diào)器的開始預(yù)準(zhǔn)備調(diào)用來啟動事務(wù)預(yù)準(zhǔn)備處理,其中第一事務(wù)子協(xié)調(diào)器負責(zé)處理包括第三服務(wù)器的第二事務(wù)子協(xié)調(diào)器的整個事務(wù)預(yù)準(zhǔn)備階段的事務(wù)。12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,在事務(wù)預(yù)準(zhǔn)備階段之前的任何時間,注冊第二或第三服務(wù)器上的附加資源與同步對象回退和資源的選擇,以參與該特定事務(wù),然后把預(yù)準(zhǔn)備確認返回到事務(wù)子協(xié)調(diào)器。13.一種將回退與事務(wù)完成相同步的事務(wù)處理方法,包括以下步驟提供多個服務(wù)事務(wù)的同步對象;經(jīng)由一個或多個事務(wù)子協(xié)調(diào)器將來自事務(wù)協(xié)調(diào)器的事務(wù)請求傳送到所述多個同步對象,包括將事務(wù)請求傳送給第一子協(xié)調(diào)器上的第一組所述多個同步對象,將事務(wù)請求傳送給第二子協(xié)調(diào)器上的第二組所述多個同步對象;以及在提交事務(wù)之前,把來自第二組同步對象的回退與來自第一組同步對象的回退相同步。14.根據(jù)權(quán)利要求13所述的方法,還包括步驟把所述多個服務(wù)器之一選作事務(wù)協(xié)調(diào)器。15.根據(jù)權(quán)利要求14所述的方法,其中所述注冊步驟包括以下步驟借助對第二服務(wù)器上的第一事務(wù)子協(xié)調(diào)器的開始預(yù)準(zhǔn)備調(diào)用來啟動事務(wù)協(xié)調(diào)器上的事務(wù)預(yù)準(zhǔn)備處理;以及在第一事務(wù)子協(xié)調(diào)器上,處理包括第三服務(wù)器的第二事務(wù)子協(xié)調(diào)器的整個事務(wù)預(yù)準(zhǔn)備階段的事務(wù)。16.根據(jù)權(quán)利要求15所述的方法,其中,所述同步步驟包括以下步驟在事務(wù)預(yù)準(zhǔn)備階段之前的任何時間,注冊第二或第三服務(wù)器上的附加資源與同步對象回退和資源的選擇,以參與該特定事務(wù);把預(yù)準(zhǔn)備確認返回到事務(wù)子協(xié)調(diào)器。17.一種將回退與事務(wù)完成相同步的事務(wù)處理方法,包括以下步驟準(zhǔn)備用于處理的事務(wù);注冊參與事務(wù)處理的同步對象和資源的初始組;調(diào)用一個事務(wù)提交;預(yù)準(zhǔn)備所述事務(wù),包括以下步驟檢查參與所述事務(wù)的附加同步對象或者資源,把所述附加同步對象或者所述附加資源的至少之一添加到所述已注冊同步對象和資源組上,以及調(diào)用對所述已注冊同步對象和資源組中的同步對象的同步對象回退;準(zhǔn)備所述已注冊同步對象和資源組中的資源;和提交已經(jīng)返回的已注冊同步對象和資源組中的資源。18.一種將回退與事務(wù)完成相同步的事務(wù)處理方法,包括以下步驟準(zhǔn)備用于處理的事務(wù);注冊參與事務(wù)處理的同步對象和資源的初始組;調(diào)用一個事務(wù)提交;預(yù)準(zhǔn)備所述事務(wù),包括以下步驟把附加同步對象或者所述資源的至少一個添加到所述的已注冊同步對象和/或資源組上,和調(diào)用對所述已注冊同步對象和資源組中的同步對象的同步對象回退;準(zhǔn)備所述已注冊同步對象和資源組中的資源;和提交已經(jīng)返回的已注冊同步對象和資源組中的資源。19.一種將回退與事務(wù)完成相同步的事務(wù)處理方法,包括以下步驟提供多個服務(wù)事務(wù)的同步對象和資源;經(jīng)由一個或多個事務(wù)子協(xié)調(diào)器將來自事務(wù)協(xié)調(diào)器的事務(wù)請求傳送到所述多個同步對象和所述資源,包括將事務(wù)請求傳送給第一子協(xié)調(diào)器上的第一組所述多個同步對象和資源,將事務(wù)請求傳送給第二子協(xié)調(diào)器上的第二組所述多個同步對象和資源;和在提交事務(wù)之前,把來自第二組同步對象的回退與來自第一組同步對象的回退相同步。全文摘要本發(fā)明提供一種在事務(wù)或者消息完成之前允許事務(wù)回退處理被同步或者實行的機制。在事務(wù)活動階段期間,可以在任何一個服務(wù)器上注冊參與事務(wù)的附加同步對象(704)。調(diào)用提交(commit)功能之后,在事務(wù)預(yù)準(zhǔn)備階段處理期間調(diào)用每個同步對象。一個同步對象可以注冊另一個同步對象,調(diào)用未預(yù)先包含在事務(wù)中的一個服務(wù)器(706),或者把一個新XA資源并入事務(wù)中。本發(fā)明的效果是提供一種請求傳送的循環(huán)方案,以允許在提交之前把附加資源加入到環(huán)中(710)。文檔編號G06F12/00GK1554056SQ02817719公開日2004年12月8日申請日期2002年7月16日優(yōu)先權(quán)日2001年7月17日發(fā)明者愛德華·P·費爾特,普里西拉·馮,亞歷山大·J·索莫吉,斯里拉姆·斯里尼范桑,大J索莫吉,姆斯里尼范桑,拉馮,愛德華P費爾特申請人:Bea系統(tǒng)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1