專利名稱:事務(wù)恢復機制的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及用于提供在一個或多個應(yīng)用服務(wù)器和一個或多個企 業(yè)信息系統(tǒng)之間的互連性的技術(shù),并且更具體而言涉及用于從未完成事務(wù) 中恢復的機制。
背景技術(shù):
自從在1995年創(chuàng)立以來,JavaTM編程語言已變得越來越流行。 (JavaTM是太陽微系統(tǒng)公司(Sun Microsystems, Inc.)的商標)Java是解釋 語言,它使得能夠創(chuàng)建可在種類繁多的平臺上運行的應(yīng)用??缭礁鞣N不同 的客戶端平臺發(fā)揮功能的這種能力,即平臺無關(guān)性,以及Java的相對容易 的網(wǎng)絡(luò)應(yīng)用的實現(xiàn),已導致Java以及提供了平臺無關(guān)性的其他編程語言在 如個人網(wǎng)頁一樣基本的嘗試到如大型的企業(yè)對企業(yè)的企業(yè)系統(tǒng)一樣復雜的 嘗試中的使用。
然而,因為應(yīng)用以及應(yīng)用連接到的企業(yè)信息系統(tǒng)(EIS)可由很多不同商家提供,所以需要使這些不同的計算機實體能互相通信的機制。Java 2平臺企業(yè)版(J2EE)是應(yīng)對這樣需要的規(guī)范。
J2EE連接器體系結(jié)構(gòu)提供了用于將符合J2EE的應(yīng)用服務(wù)器與企業(yè)信 息系統(tǒng)進行整合的機制。J2EE連接器體系結(jié)構(gòu)定義了公用客戶端接口 (CCI)用于EIS接入。CCI定義了使客戶端能與各種企業(yè)信息系統(tǒng)交互 的客戶端API。應(yīng)用服務(wù)器,即應(yīng)用可被部署于其上的服務(wù)器,以及企業(yè) 信息系統(tǒng)僅需要遵循J2EE連接器體系結(jié)構(gòu)規(guī)范以彼此互連。
遺憾的是,J2EE規(guī)范沒有解決所有的互連問題。例如,人們關(guān)心的一 個方面是檢測和補救可能發(fā)生在服務(wù)器崩潰或其他不可預(yù)見的中斷事件中 的未完成。事務(wù)應(yīng)用經(jīng)常使用試圖協(xié)調(diào)對事務(wù)的處理的各種方法。然而這 樣的傳統(tǒng)方法可能有一段時間不能檢測到未完成事務(wù)的存在。此外,這樣 的傳統(tǒng)方法在檢査未完成事務(wù)的過程期間可能創(chuàng)建了不需要的連接。
所需要的是用于從未完成事務(wù)中恢復的改進的機制。
圖1是示例計算環(huán)境的功能框圖,在該示例計算環(huán)境中可實現(xiàn)實施例 中的用于從未完成事務(wù)中恢復的技術(shù)。
圖2示出用于提交事務(wù)的兩階段提交過程的概況。
圖3是示出實施例中的用于從未完成事務(wù)中恢復的技術(shù)的高級概況的 操作流程圖。
圖4是示例計算機系統(tǒng)的硬件框圖,該示例計算機系統(tǒng)可用來實施在 實施例中的一個或多個組件。
具體實施例方式
作為示例而非作為限制,在附圖的圖中例示本發(fā)明,在附圖中類似的 標記指示類似的元素。在本公開中,參考實施例未必參考同一實施例,而 且這樣的參考意味著參考至少一個實施例。雖然討論了具體的實現(xiàn),但是 會理解的是這樣做僅是出于例示的目的。相關(guān)領(lǐng)域的技術(shù)人員會意識到, 在不脫離本發(fā)明的范圍和精神的情況下可使用其他組件和配置。在以下描述中,陳述了許多具體細節(jié)以提供對本發(fā)明的透徹描述。然 而,本領(lǐng)域的技術(shù)人員將會清楚的是,沒有這些具體細節(jié)仍可實踐本發(fā) 明。在其他示例中,沒有詳細描述公知的特征以便不掩蓋本發(fā)明。
雖然示圖可能將組件描繪為邏輯上分離的,但是這樣的描繪僅出于例 示的目的。本領(lǐng)域的技術(shù)人員可以清楚的是,所描繪的組件可被組合或劃 分成分離的軟件、固件和/或硬件組件。例如,在此描述的一個或多個實施 例可在諸如路由器之類的可訪問網(wǎng)絡(luò)的設(shè)備/電器中實現(xiàn)。此外,本領(lǐng)域的 技術(shù)人員還可清楚的是,不管這樣的組件是怎樣組合或劃分的,它們可在 同一計算設(shè)備上執(zhí)行,或者可被分布在通過一個或多個網(wǎng)絡(luò)或其他合適的 通信裝置連接的不同計算設(shè)備中。
根據(jù)實施例,提供了用于從未完成事務(wù)中恢復的機制和方法。當從服 務(wù)器崩潰或其他災(zāi)難性事件中恢復時,這些機制和方法可使實施例能檢測 未完成事務(wù)。當已檢測到未完成事務(wù)時, 一些實施例可自動重建被中斷的 連接。實施例的檢測未完成事務(wù)的能力可使恢復能在服務(wù)器重啟和適配器 重新部署后就基本上立即發(fā)起??杀苊鈱τ诨謴蛠碚f不必要地創(chuàng)建真實的 適配器連接。
在一個實施例中,提供了用于從未完成事務(wù)中恢復的方法。 一個方法
的實施例包括創(chuàng)建偽資源(dummy resource),并且利用在服務(wù)器崩潰前 就已在資源適配器的先前使用中所使用的名字,向事務(wù)管理器注冊偽資 源。事務(wù)管理器檢查名字,以確定名字是否涉及在未解決的事務(wù)的。當事 務(wù)管理器已確定名字涉及在未解決的事務(wù)中時,事務(wù)管理器調(diào)用偽資源以 發(fā)起恢復。此處理可使實施例能提供通知機制,通過該通知機制使事務(wù)管 理器能確定需要恢復。在一個實施例中,方法還可包括通過事務(wù)管理器創(chuàng) 建經(jīng)由資源適配器的真實連接?;謴驼埱蟊粋鬟f給與資源適配器相關(guān)聯(lián)的 資源管理器。
將描述使用XA協(xié)議的實施例,以提供由本發(fā)明所提供技術(shù)的例示性 的示例,XA協(xié)議是由X/Open DTP組織定義的兩階段提交(commit)協(xié) 議。很多數(shù)據(jù)庫(像Oracle )和事務(wù)監(jiān)視器(像Tuxedo )固有地支持 XA。為進一步了解關(guān)于XA協(xié)議的詳情,可參考開放組織(The Open
7Group ) 編寫的 "Distributed Transactional Processing: The XA Specification"(《分布式事務(wù)處理XA規(guī)范》)(1992)(可在 http:〃www.openqroup.org/public/pubs/catalog/c 193.htm獲得,最后訪問于 2006年3月28日),它定義了對涉及在XA事務(wù)中的事務(wù)管理器和資源 管理器的要求。雖然參考了在其中遵循XA協(xié)議來實現(xiàn)用于從被中斷的連 接中恢復的技術(shù)的實施例來描述本發(fā)明,但是本發(fā)明不限于XA協(xié)議。在 不脫離所要求保護的實施例的范圍的情況下,實施例可利用其他互連性規(guī) 范或編程語言(即JSP等)而實踐。(JavaTM是太陽微系統(tǒng)公司的商標)
圖1是實現(xiàn)了連接器體系結(jié)構(gòu)的示例計算環(huán)境的功能框圖,在該示例 計算環(huán)境中可實現(xiàn)實施例中的用于從未完成事務(wù)中恢復的技術(shù)。如圖1所 示,連接器體系結(jié)構(gòu)實現(xiàn)100包括應(yīng)用服務(wù)器110,資源適配器120a、 120b,資源BOa和130b以及應(yīng)用組件140。如在此所用,術(shù)語應(yīng)用服務(wù) 器被廣義地定義為計算機網(wǎng)絡(luò)中的專用于運行某些軟件應(yīng)用的服務(wù)器計算 機。應(yīng)用服務(wù)器110結(jié)合web服務(wù)器(為了簡潔未在圖1中示出)而存 在,或者存在于web服務(wù)器和企業(yè)信息系統(tǒng)(為了簡潔未在圖1中示出) 之間,以便為企業(yè)提供中間件功能。如在此所用,術(shù)語資源適配器被廣義 地定義為包括表示資源的任何代碼段。資源可包括應(yīng)用、服務(wù)、數(shù)據(jù)庫 web站點和其他基于計算機的資源。如在此所用,術(shù)語應(yīng)用組件被廣義地 定義為代表用戶處理數(shù)據(jù)的任何的數(shù)據(jù)項、更新、查詢或程序。用戶可以 是人或計算實體,包括代理等。請求者可以是用戶、代理或自動的實體。 如在此所用,術(shù)語環(huán)境希望被廣義地理解為包括一系列的計算機配置的任 何特征,包括硬件和軟件特征,諸如但不限于,操作系統(tǒng)、中央處理單元 (CPU)模型、數(shù)據(jù)通信系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、編程語言以及任何適用的標 準。如在此所用,術(shù)語駐留(residing)希望被廣義地理解為包括應(yīng)用被載 入活動存儲器、保持在存儲裝置中、被處理器執(zhí)行以及計算領(lǐng)域中己知的 應(yīng)用與環(huán)境之間的其他關(guān)聯(lián)。實施例實現(xiàn)連接器體系結(jié)構(gòu)100以使一個或 多個連接能建立在應(yīng)用組件140和資源130a、 130b之間。
在一個實施例中,連接器體系結(jié)構(gòu)實現(xiàn)IOO與Java 2企業(yè)版G2EE) 連接器體系結(jié)構(gòu)兼容。此體系結(jié)構(gòu)規(guī)定了 EIS商家提供的資源適配器和應(yīng)用服務(wù)器,資源適配器接口到應(yīng)用服務(wù)器上。J2EE連接器體系結(jié)構(gòu)定義了 一系列的契約(contract),諸如事務(wù)、安全以及連接管理,資源適配器和 應(yīng)用服務(wù)器都需要契約以互相通信。連接器體系結(jié)構(gòu)100可實現(xiàn)在應(yīng)用服 務(wù)器和資源適配器中。
應(yīng)用服務(wù)器110的實施例可從各種硬件和軟件產(chǎn)品來配置。應(yīng)用服務(wù) 器110可運行Java或其他編程語言環(huán)境,并且可被配置為提供對服務(wù)器內(nèi) 部資源以及應(yīng)用服務(wù)器110可到達的資源的訪問。資源130a、 130b可包括 應(yīng)用、服務(wù)、數(shù)據(jù)庫網(wǎng)站和其他基于計算機的資源。這些資源可以是企業(yè) 信息系統(tǒng)(EIS)的部分,或者是通過網(wǎng)絡(luò)或其他通信機制可到達的獨立 的資源。在一個實施例中,應(yīng)用服務(wù)器110使用來自加利福尼亞州圣何塞 的BEA系統(tǒng)公司的WebLogic⑧服務(wù)器。
如圖l進一步所示,應(yīng)用服務(wù)器110包括用于管理由應(yīng)用組件140發(fā) 起的事務(wù)的應(yīng)用服務(wù)器事務(wù)管理器112。事務(wù)管理器的實施例包括用于從 未完成事務(wù)中恢復的技術(shù)。在一個實施例中,從未完成事務(wù)中恢復可包括 創(chuàng)建偽資源,并且利用在服務(wù)器崩潰或其他不可預(yù)見事件之前就已在資源 適配器120的先前使用中所使用的名字,向事務(wù)管理器112注冊偽資源。 事務(wù)管理器112檢查偽資源的名字,以確定名字是否涉及在未解決的事務(wù) 中。當事務(wù)管理器112確定名字涉及在未解決的事務(wù)中時,偽資源被調(diào)用 以發(fā)起恢復。實施例可提供通知機制,通過該通知機制使事務(wù)管理器112 能確定需要恢復。下面參考圖2 圖3將進一步詳細地描述用于從未完成 事務(wù)中恢復的過程。
資源適配器120a、 120b包括被應(yīng)用服務(wù)器110用來分別連接到資源 130a、 130b的系統(tǒng)級軟件驅(qū)動器。在一個實施例中,資源適配器120a、 120b包括促使應(yīng)用服務(wù)器110和資源130a、 130b之間互連所需要的Java 代碼和任何固有組件。在一個實施例中,連接器體系結(jié)構(gòu)100支持由商家 和第三方應(yīng)用開發(fā)者開發(fā)的資源適配器,這些資源適配器可部署在根據(jù) J2EE平臺規(guī)范的任何應(yīng)用服務(wù)器中。
如圖1進一步所示,資源適配器120a、 120b分別包括資源管理器 122a和122b。資源管理器122a、 122b向事務(wù)管理器112注冊它們各自的資源。
應(yīng)用組件140可以至少是發(fā)起事務(wù)的應(yīng)用的子集。例如但不限于利用
在應(yīng)用服務(wù)器IIO上部署、管理或執(zhí)行的企業(yè)Java組件(EJB) 、 Java服 務(wù)器頁(JSP)、小服務(wù)程序(servlet)或者它們的任何組合,可實現(xiàn)應(yīng)用 組件。
圖1的連接器體系結(jié)構(gòu)IOO還包括系統(tǒng)級契約(為了簡潔未在圖1中 示出)。系統(tǒng)級契約管理資源適配器120和應(yīng)用服務(wù)器IIO之間的交互。 契約可涉及連接器體系結(jié)構(gòu)的連接管理或其他方面。連接管理契約給予應(yīng) 用服務(wù)器提供連接池(pool)的能力,這些連接使應(yīng)用組件能連接到各種 資源130a、 130b。在本發(fā)明的一個實施例中,連接管理涉及連接池配置、 連接池管理以及連接管理。
接下來將描述使用了 XA協(xié)議恢復過程的示例以說明對實施例可用的 一些特征和益處,即使當在忙于完成事務(wù)的期間服務(wù)器故障發(fā)生時,通過 XA協(xié)議恢復過程仍確保了事務(wù)的原子性(atomicity) 。 XA恢復過程與兩 階段事務(wù)相關(guān)。當多于一個的資源管理器被涉及在事務(wù)中時,兩階段事務(wù) 是有用的。在一個實施例中,在僅有一個資源管理器被涉及到的事件中, 事務(wù)管理器112通過切換至一階段提交協(xié)議代替兩階段提交協(xié)議而進行優(yōu) 化。接下來將參考圖2描述用于執(zhí)行兩階段提交事務(wù)的處理。
圖2示出用于提交事務(wù)的兩階段提交過程的概況。如圖2所示,提交 過程由應(yīng)用開始了事務(wù)而開始(框201)。事務(wù)管理器利用事務(wù)注冊并征 募(enlist)資源管理器1 (框202)。事務(wù)管理器利用事務(wù)注冊并征募資 源管理器2 (框203)。利用資源管理器l和資源管理器2,應(yīng)用執(zhí)行調(diào)用 希望被保持的改變的操作(框204)。應(yīng)用提交事務(wù)(框205)。事務(wù)管 理器要求資源管理器1準備。資源管理器1返回指示成功或失敗的狀態(tài)碼 (框206)。事務(wù)管理器要求資源管理器2準備。資源管理器2返回指示 成功或失敗的狀態(tài)碼(框207)。如果任何一個資源管理器在要求準備期 間返回了失敗,那么事務(wù)管理器對兩個資源管理器都回滾(rollback)事 務(wù)(框208 框209)。否則的話兩個資源管理器都被提交如果兩個資 源管理器都返回了準備成功,那么事務(wù)管理器將會提交資源管理器1 (框210),以及如果兩個資源管理器都返回了準備成功,那么事務(wù)管理器將
會提交資源管理器2 (框211)。
以這種方式,維持了原子性,從而如果對一個資源做出改變,確保了
對事務(wù)中的所有其他資源將會做出相應(yīng)改變。然而,在該過程例如在圖2 所示的框210和框211之間的過程的點上被服務(wù)器崩漬中斷的事件中,希 望恢復機制。假如這樣的故障發(fā)生,經(jīng)由資源管理器1已提交一系列的改 變,但是相應(yīng)改變還沒有由資源管理器2做出。
應(yīng)用服務(wù)器事務(wù)管理器112持續(xù)在被稱為事務(wù)日志(Log)的文件中 維護事務(wù)的狀態(tài)。在服務(wù)器崩潰和重啟后,事務(wù)日志將會包含事務(wù)沒有完 全完成的信息。然而可能不知道哪個資源管理器被完全提交或者沒被完全 提交,因為在發(fā)送請求之后但是在收到來自資源管理器的響應(yīng)之前它可能 已經(jīng)崩潰。指示哪個改變處在被準備但還沒被提交的狀態(tài)中是資源管理器 的責任。當恢復過程由事務(wù)管理器發(fā)起時,它向資源管理器發(fā)送請求來要 求被準備但還沒被提交的事務(wù)Id的列表。資源管理器返回在此狀態(tài)中的改 變列表,并且事務(wù)管理器然后可通過提交剩余的資源來完成事務(wù)。
傳統(tǒng)的兩階段提交處理的一個問題是應(yīng)用服務(wù)器事務(wù)管理器112發(fā)起 對未完成事務(wù)的恢復過程所借助的過程。事務(wù)管理器不檢査什么需要被恢 復,直到RM被注冊(如在由圖2示出的框202和框203中所做。當用給 定名字注冊RM時,事務(wù)管理器則檢查事務(wù)日志以弄清是否存在涉及相同 名字的資源管理器的任何未解決事務(wù)。如果是這樣,那么事務(wù)管理器將會 對新注冊的資源管理器要求恢復方法。這是一個問題,因為連接器容器不 知道是否資源適配器的任何資源需要被恢復,則并且事務(wù)管理器將不調(diào)用 恢復直到有這樣資源的注冊。
如果資源適配器長時期不用,那么注冊可能直到此時才發(fā)生。 一個解 決辦法是對連接器容器而言,經(jīng)由資源適配器一直創(chuàng)建到后端的連接,并 且向事務(wù)管理器注冊該連接,以便允許任何需要的恢復被發(fā)起。這將會奏 效,但是在不需要恢復的情況下它將導致不必要地創(chuàng)建連接。
圖3是示出在一個實施例中的用于從未完成事務(wù)中恢復的技術(shù)的高級 概括的操作流程圖。圖3所示的用于從未完成事務(wù)中恢復的技術(shù)可利用應(yīng)用服務(wù)器、應(yīng)用組件和資源適配器來操作,例如圖1的應(yīng)用服務(wù)器110、
應(yīng)用組件140和資源適配器120。如圖3所示,創(chuàng)建偽資源,并且利用在
服務(wù)器崩潰前就已在資源適配器的先前使用中所使用的名字向事務(wù)管理器
注冊偽資源(框302)。事務(wù)管理器檢查名字以確定名字是否涉及在未解 決的事務(wù)中(框304)。當事務(wù)管理器已確定名字涉及在未解決的事務(wù)中 時,偽資源可被調(diào)用以發(fā)起恢復(框306)。相應(yīng)地,偽資源于是可被用 作通知機制,通過該通知機制可確定需要恢復。在一個實施例中,將會經(jīng) 由資源適配器創(chuàng)建真實連接,并且恢復請求被傳遞給對于資源適配器的真 實的下層(underlying)資源管理器???02 框306的處理可使實施例能 避免對于在服務(wù)器重啟和適配器重新部署后立即發(fā)起恢復來說不必要地創(chuàng) 建真實的適配器連接。
在其他方面,在一些實施例中本發(fā)明包括被配置執(zhí)行上述方法的計算 機裝置、計算系統(tǒng)以及機器可讀介質(zhì)。正如計算機領(lǐng)域的技術(shù)人員會清楚 的,除了由專門設(shè)計的集成電路或其他電子電路組成的實施例以外,利用 根據(jù)本發(fā)明的教導而被編程的傳統(tǒng)的通用或?qū)S脭?shù)字計算機或微處理器, 可方便地實現(xiàn)本發(fā)明。
正如軟件領(lǐng)域的技術(shù)人員會清楚的,合適的軟件編碼可由熟練的編程 人員基于本發(fā)明的教導而方便地準備。正如本領(lǐng)域的技術(shù)人員容易清楚 的,通過準備有專用集成電路或者通過互連合適的傳統(tǒng)組件電路的網(wǎng)絡(luò), 還可實現(xiàn)本發(fā)明。
本發(fā)明包括計算機程序產(chǎn)品,它是具有指令存儲于其上/其中的存儲介 質(zhì)(介質(zhì)),該指令可被用來編程計算機以執(zhí)行本發(fā)明的任何過程。存儲 介質(zhì)可包括但不限于,包括軟盤、光盤、DVD、 CD-ROM、微驅(qū)動器和磁 光盤的任何類型的旋轉(zhuǎn)介質(zhì),以及磁的或光學的卡,納米系統(tǒng)(包括分子 存儲IC),或者適合存儲指令和/或數(shù)據(jù)的任何類型的介質(zhì)或器件。
存儲在任何一個機器可讀的介質(zhì)(介質(zhì))上,本發(fā)明包括軟件用于控 制通用/專用計算機或微處理器的硬件,以及用于使計算機或微處理器能與 人類用戶或使用本發(fā)明的成果的其他機制進行交流。這樣的軟件可包括但 不限于,設(shè)備驅(qū)動器、操作系統(tǒng)和用戶應(yīng)用。在通用/專用計算機或微處理器的編程(軟件)中包括了軟件模塊,用 于實現(xiàn)本發(fā)明的教導,包括但不限于提供如在此所討論的用于從未完成事 務(wù)中恢復的機制和方法。
圖4示出示例性處理系統(tǒng)400,它可包括圖1的一個或多個元素?,F(xiàn) 在轉(zhuǎn)到圖4,示出了可包括圖1的一個或多個組件的示例性計算系統(tǒng)。雖
然可使用其他的替換,但是為了清晰的緣故,假設(shè)圖1的系統(tǒng)的組件由與 其相符的一個或多個計算系統(tǒng)以硬件、軟件或一些組合的方式來實現(xiàn),除 非另外指示。
計算系統(tǒng)400包括經(jīng)由一個或多個通信信道(例如,總線401)所耦 合的組件,包括一個或多個通用或?qū)S锰幚砥?02,諸如Pentium 、 Centrino 、 Power PC 、數(shù)字信號處理器("DSP")等等。根據(jù)具體的 應(yīng)用,系統(tǒng)400組件還包括一個或多個輸入設(shè)備403 (諸如鼠標、鍵盤、 麥克風、筆等等),以及一個或多個輸出設(shè)備404,諸如合適的顯示器、 揚聲器、激勵器(actuator)等等。(將會被認識到的是,輸入或輸出設(shè)備 還可類似地包括適合由精神或身體殘疾人士使用的更專用的設(shè)備或硬件/軟 件設(shè)備的增強。)
系統(tǒng)400還包括機器可讀存儲介質(zhì)閱讀器405,它被耦合到機器可讀 存儲介質(zhì)406,諸如存儲裝置/存儲器件或硬的(hard)或可拆卸的存儲/存 儲介質(zhì);這樣的設(shè)備或介質(zhì)被進一步分離地指示為存儲器408和存儲器 409,根據(jù)具體應(yīng)用的需要,它們可包括硬盤變體、軟/光盤變體、數(shù)字通 用光盤("DVD")變體、智能卡、只讀存儲器、隨機存取存儲器、高速 緩存存儲器等等。還可包括一個或多個合適的通信接口 407,諸如調(diào)制解 調(diào)器、DSL、紅外、RF或其他合適的收發(fā)器等等,用于提供設(shè)備內(nèi)的通 信,直接地或者經(jīng)由可包括但不限于已討論的那些網(wǎng)絡(luò)或組件的、 一個或 多個合適的專用或公用網(wǎng)或其他組件而進行。
工作存儲器410還包括操作系統(tǒng)("OS" ) 411元件和其他程序 412,諸如一個或多個應(yīng)用程序、移動代碼、數(shù)據(jù)等等,用于實現(xiàn)在使用 期間可被存儲或加載于其中的系統(tǒng)400組件。具體的OS或OS們可根據(jù) 依照具體應(yīng)用(例如,Windows 、 WindowsCETM、 MacTM、 Linux、 Unix或Palm OS變體、蜂窩電話OS、專有OS、 Symbian皿等等)的具體的 設(shè)備、特征或其他方面而變化。根據(jù)具體應(yīng)用的需要,還可使用各種編程 語言或其他工具,諸如與C變體(例如,C++、 C#) 、 Java 2平臺企業(yè) 版("J2EE")或者其他編程語言相兼容的那些編程語言或工具。其他程 序412還可例如包括一個或多個活動系統(tǒng)、教育管理器、教育積分器
(integrator)、或接口、安全、其他同步、其他瀏覽器或群件代碼等等, 包括但不限于在此文件中其他地方所討論的那些程序。
當以軟件(例如,整體地或部分地作為應(yīng)用程序、對象、代理、可下 載的、小服務(wù)程序等等)方式實現(xiàn)時,學習集成系統(tǒng)或其他組件可瞬時地 或更持續(xù)地從本地的或遠程的存儲器通信到存儲器(SRAM、高速緩存存 儲器等)來用于執(zhí)行,或者可使用另一個合適的機制,并且可以以被編譯 的或解釋的形式實現(xiàn)組件。根據(jù)具體應(yīng)用,輸入數(shù)據(jù)、中間數(shù)據(jù)或結(jié)果數(shù) 據(jù)或功能元件還可更瞬時地或更持續(xù)地駐留在存儲介質(zhì)、高速緩存或其他 易失性或非易失性存儲器中(例如,存儲設(shè)備408或存儲器409)。
本發(fā)明的其他特征、方面和目的可從對附圖和權(quán)利要求的述評中得 到。將被理解的是,本發(fā)明的其他實施例可被開發(fā),并且落在本發(fā)明和權(quán) 利要求的精神和范圍內(nèi)。出于例示和描述的目的,己提供了對本發(fā)明的優(yōu) 選實施例的上述描述。它不希望是窮盡的,或者將本發(fā)明限制到所公開的 明確形式。本領(lǐng)域的技術(shù)人員將會清楚很多修改和變化。實施例被選擇并 且被描述以最佳地說明本發(fā)明的原理及其實際應(yīng)用,從而使本領(lǐng)域的技術(shù) 人員能理解用于各種實施例的、以及具有適合于所考慮的具體使用的各種 修改的本發(fā)明。希望本發(fā)明的范圍被權(quán)利要求及其等同物所限定。
權(quán)利要求
1. 一種用于從未完成事務(wù)中恢復的方法,所述方法包括創(chuàng)建偽資源,并且利用服務(wù)器崩潰前已在資源適配器的先前使用中所使用的名字向事務(wù)管理器注冊所述偽資源;由所述事務(wù)管理器檢查所述名字以確定所述名字是否被涉及在未解決的事務(wù)中;以及當所述事務(wù)管理器已確定所述名字被涉及在未解決的事務(wù)中時,調(diào)用所述偽資源以發(fā)起恢復;從而提供通知機制,通過所述通知機制使事務(wù)管理器能確定需要恢復。
2. 如權(quán)利要求1所述的方法,還包括由所述事務(wù)管理器創(chuàng)建經(jīng)由所述資源適配器的真實連接;并且將所述 恢復請求傳遞給與所述資源適配器相關(guān)聯(lián)的資源管理器。
3. 如權(quán)利要求1所述的方法,其中創(chuàng)建偽資源并且利用服務(wù)器崩潰前 已在資源適配器的先前使用中所使用的名字向事務(wù)管理器注冊所述偽資源 包括通過向所述事務(wù)管理器注冊不存在的資源適配器,使所述事務(wù)管理器 發(fā)起恢復處理。
4. 如權(quán)利要求1所述的方法,其中由所述事務(wù)管理器檢查所述名字以確定所述名字是否被涉及在未解決的事務(wù)中包括檢查事務(wù)日志以確定是否存在涉及相同名字的資源管理器的任何未解 決事務(wù)。
5. 如權(quán)利要求1所述的方法,其中當所述事務(wù)管理器已確定所述名字 被涉及在未解決的事務(wù)中時調(diào)用所述偽資源以發(fā)起恢復包括由連接器容器檢測指示需要恢復的所述通知機制;以及創(chuàng)建經(jīng)由所述資源適配器的真實連接,并且將所述恢復請求傳遞給與 所述資源適配器相關(guān)聯(lián)的資源管理器。
6. —種載有用于從未完成事務(wù)中恢復的一個或多個序列的指令的機器可讀介質(zhì),所述指令當被一個或多個處理器執(zhí)行時,使得所述一個或多個處理器執(zhí)行以下步驟創(chuàng)建偽資源,并且利用服務(wù)器崩潰前已在資源適配器的先前使用中所 使用的名字向事務(wù)管理器注冊所述偽資源;由所述事務(wù)管理器檢查所述名字以確定所述名字是否被涉及在未解決 的事務(wù)中;以及當所述事務(wù)管理器已確定所述名字被涉及在未解決的事務(wù)中時,調(diào)用所述偽資源以發(fā)起恢復;從而提供通知機制,通過所述通知機制使事務(wù)管理器能確定需要恢復。
7. 如權(quán)利要求6所述的機器可讀介質(zhì),還包括用于執(zhí)行以下步驟的指令由所述事務(wù)管理器創(chuàng)建經(jīng)由所述資源適配器的真實連接;并且將所述 恢復請求傳遞給與所述資源適配器相關(guān)聯(lián)的資源管理器。
8. 如權(quán)利要求6所述的機器可讀介質(zhì),其中用于執(zhí)行創(chuàng)建偽資源并且利用服務(wù)器崩潰前已在資源適配器的先前使用中所使用的名字向事務(wù)管理器注冊所述偽資源的步驟的指令包括用于執(zhí)行以下步驟的指令通過向所述事務(wù)管理器注冊不存在的資源適配器,使所述事務(wù)管理器 發(fā)起恢復處理。
9. 如權(quán)利要求6所述的機器可讀介質(zhì),其中用于執(zhí)行由所述事務(wù)管理器檢查所述名字以確定所述名字是否被涉及在未解決的事務(wù)中的步驟的指令包括用于執(zhí)行以下步驟的指令檢查事務(wù)日子以確定是否存在涉及相同名字的資源管理器的任何未解 決事務(wù)。
10. 如權(quán)利要求6所述的機器可讀介質(zhì),其中用于執(zhí)行當所述事務(wù)管理器已確定所述名字被涉及在未解決的事務(wù)中時調(diào)用所述偽資源以發(fā)起恢復的步驟的指令包括用于執(zhí)行以下步驟的指令由連接器容器檢測指示需要恢復的所述通知機制;以及創(chuàng)建經(jīng)由所述資源適配器的真實連接,并且將所述恢復請求傳遞給與 所述資源適配器相關(guān)聯(lián)的資源管理器。
11. 一種用于從未完成事務(wù)中恢復的裝置,所述裝置包括處理器;以及一個或多個被存儲的指令序列,所述指令當被所述處理器執(zhí)行時,使 所述處理器執(zhí)行以下步驟創(chuàng)建偽資源,并且利用在服務(wù)器崩潰前已在資源適配器的先前使 用中所使用的名字向事務(wù)管理器注冊所述偽資源;由所述事務(wù)管理器檢查所述名字以確定所述名字是否被涉及在未 解決的事務(wù)中;以及當所述事務(wù)管理器已確定所述名字被涉及在未解決的事務(wù)中時, 調(diào)用所述偽資源以發(fā)起恢復;從而提供通知機制,通過所述通知機制 使事務(wù)管理器能確定需要恢復。
全文摘要
根據(jù)實施例,提供了用于從未完成事務(wù)中恢復的機制和方法。當從服務(wù)器崩潰或其他災(zāi)難性事件中恢復時,這些機制和方法可使實施例能檢測未完成事務(wù)。當已檢測到未完成事務(wù)時,一些實施例可自動重建被中斷的連接。實施例的檢測未完成事務(wù)的能力可使恢復能在服務(wù)器重啟和適配器重新部署后就基本上立即發(fā)起。
文檔編號G06F11/00GK101438248SQ200780016039
公開日2009年5月20日 申請日期2007年1月8日 優(yōu)先權(quán)日2006年5月3日
發(fā)明者布賴恩·克里斯托弗·柴瑟布洛, 詹姆斯·威廉·吉什, 金納帕·加納帕蒂·科丹達 申請人:Bea系統(tǒng)公司