適用于遠(yuǎn)程程序呼叫的逾時(shí)控制單元與遠(yuǎn)程程序呼叫方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明是有關(guān)于一種逾時(shí)控制單元,且特別是有關(guān)于一種適用于遠(yuǎn)程程序呼叫的逾時(shí)控制單元及遠(yuǎn)程程序呼叫方法。
【背景技術(shù)】
[0002]遠(yuǎn)程程序呼叫(Remote Procedure Call ;RPC)是分散式應(yīng)用系統(tǒng)運(yùn)作上重要特性,個(gè)別系統(tǒng)在運(yùn)作中透過(guò)RPC可調(diào)用其他系統(tǒng)的程序,待其他系統(tǒng)運(yùn)算結(jié)果返回后再繼續(xù)原有進(jìn)程(thread)。雖然RPC有同步和非同步的運(yùn)作方式,但基于商業(yè)邏輯需求,RPC經(jīng)常以同步方式運(yùn)作。然而這些分散進(jìn)程會(huì)因會(huì)談?dòng)鈺r(shí)(sess1n timeout)而造成系統(tǒng)對(duì)于運(yùn)行結(jié)果的認(rèn)知不同,嚴(yán)重影響商業(yè)邏輯的正確性。
[0003]同步RPC經(jīng)常用于企業(yè)交易活動(dòng),會(huì)談?dòng)鈺r(shí)的時(shí)間大多是由請(qǐng)求方設(shè)定,且該設(shè)定無(wú)法根據(jù)對(duì)象不同做變更。因此,當(dāng)會(huì)談?dòng)鈺r(shí)的時(shí)間過(guò)短時(shí),遠(yuǎn)程程序尚未完成,請(qǐng)求方就主動(dòng)中斷,容易造成請(qǐng)求方與回應(yīng)方的狀態(tài)不一致。而當(dāng)會(huì)談?dòng)鈺r(shí)的時(shí)間過(guò)長(zhǎng)時(shí),由于當(dāng)系統(tǒng)進(jìn)入等待狀態(tài)時(shí),使用者及相關(guān)資源都被鎖定不能釋放,容易造成死結(jié)(deadlock)。
[0004]面對(duì)上述問(wèn)題,現(xiàn)行普遍的作法包含使用共同技術(shù)平臺(tái),例如請(qǐng)求方與回應(yīng)方雙方均采用Java的Sess1n Bean,保證系統(tǒng)程序與sess1n的生命周期相同,然而面對(duì)異質(zhì)技術(shù)平臺(tái)時(shí),此作法無(wú)法適用。另一種作法為請(qǐng)求方與回應(yīng)方雙方均采用符合交易規(guī)范(transact1n)的技術(shù),并在異常狀況時(shí)進(jìn)行補(bǔ)償動(dòng)作,但是補(bǔ)償動(dòng)作也是另一個(gè)RPC調(diào)用程序,也同樣存在著失敗的風(fēng)險(xiǎn),如此可能會(huì)造成無(wú)窮補(bǔ)償回圈。因此,如何設(shè)計(jì)一種系統(tǒng)或方法以解決上述問(wèn)題實(shí)屬當(dāng)前重要研發(fā)課題之一,亦成為當(dāng)前相關(guān)領(lǐng)域亟需改進(jìn)的目標(biāo)。
【發(fā)明內(nèi)容】
[0005]因此,本發(fā)明的一方面是在提供一種適用于遠(yuǎn)程程序呼叫(RemoteProcedureCall)的逾時(shí)控制單元。逾時(shí)控制單元包含一阻斷器、一訊息代理(message agent)模塊以及一會(huì)談控制(sess1n control)模塊。逾時(shí)控制單元在接收到一請(qǐng)求方單元所發(fā)送的一處理請(qǐng)求時(shí),將處理請(qǐng)求傳送至一回應(yīng)方單元,使得回應(yīng)方單元處理處理請(qǐng)求,而會(huì)談控制模塊用以在一預(yù)設(shè)時(shí)間到達(dá)時(shí)判斷回應(yīng)方單元是否回傳一處理結(jié)果,并于處理結(jié)果未被回傳至請(qǐng)求方單元時(shí),會(huì)談控制模塊控制阻斷器發(fā)送一阻斷請(qǐng)求至回應(yīng)方單元,使得回應(yīng)方單元根據(jù)阻斷請(qǐng)求中斷上述處理請(qǐng)求的處理,且訊息代理模塊傳送一會(huì)談?dòng)鈺r(shí)(sess1ntimeout)訊息至請(qǐng)求方單元。
[0006]依據(jù)本發(fā)明一實(shí)施例,上述阻斷器更用以判斷回應(yīng)方單元是否成功中斷上述處理請(qǐng)求的處理。若否,則訊息代理模塊傳送一保留狀態(tài)訊息至請(qǐng)求方單元,并在回應(yīng)方單元回傳處理結(jié)果時(shí),訊息代理模塊傳送一回呼(callback)訊息至請(qǐng)求方單元。
[0007]依據(jù)本發(fā)明另一實(shí)施例,上述阻斷器是根該回應(yīng)方單元所回傳的一阻斷狀態(tài)訊息,判斷回應(yīng)方單元是否成功中斷上述處理請(qǐng)求的處理。
[0008]依據(jù)本發(fā)明又一實(shí)施例,上述逾時(shí)控制單元還包含一計(jì)時(shí)器(timer),且會(huì)談控制模塊更用以在逾時(shí)控制單元接收到處理請(qǐng)求時(shí),啟動(dòng)計(jì)時(shí)器,并在計(jì)時(shí)器到達(dá)預(yù)設(shè)時(shí)間時(shí),判斷回應(yīng)方單元是否回傳上述處理結(jié)果。
[0009]依據(jù)本發(fā)明再一實(shí)施例,上述會(huì)談控制模塊更用以儲(chǔ)存回應(yīng)方單元所回傳至逾時(shí)控制單元的一對(duì)應(yīng)于上述處理請(qǐng)求的處理程序識(shí)別碼。
[0010]依據(jù)本發(fā)明另又一實(shí)施例,上述阻斷請(qǐng)求包含上述處理程序識(shí)別碼,且回應(yīng)方單元根據(jù)阻斷請(qǐng)求中的處理程序識(shí)別碼,中斷上述處理請(qǐng)求的處理。
[0011]依據(jù)本發(fā)明另再一實(shí)施例,上述逾時(shí)控制單元還包含一請(qǐng)求訊息隊(duì)列(requestmessage queue)。請(qǐng)求訊息隊(duì)列用以接收并暫存上述處理請(qǐng)求,且會(huì)談控制模塊更用以控制請(qǐng)求訊息隊(duì)列將上述處理請(qǐng)求傳送至回應(yīng)方單元。
[0012]依據(jù)本發(fā)明再又一實(shí)施例,上述逾時(shí)控制單元還包含一回應(yīng)訊息隊(duì)列(responsemessage queue)?;貞?yīng)訊息隊(duì)列用以接收并暫存上述處理結(jié)果。
[0013]依據(jù)本發(fā)明另具有一實(shí)施例,上述逾時(shí)控制單元為一獨(dú)立于該請(qǐng)求方單元以及該回應(yīng)方單元的中間裝置。
[0014]依據(jù)本發(fā)明又具有一實(shí)施例,上述逾時(shí)控制單元是以軟件的方式整合至該請(qǐng)求方單元或是該回應(yīng)方單元中。
[0015]依據(jù)本發(fā)明再具有一實(shí)施例,上述逾時(shí)控制單元為一包含于該請(qǐng)求方單元或是該回應(yīng)方單元中的系統(tǒng)芯片。
[0016]本發(fā)明的另一方面是在提供一種遠(yuǎn)程程序呼叫方法,包含下列步驟:利用一逾時(shí)控制單元接收一請(qǐng)求方單元所發(fā)送的一處理請(qǐng)求;利用逾時(shí)控制單元將上述處理請(qǐng)求傳送至一回應(yīng)方單元,使得回應(yīng)方單元處理上述處理請(qǐng)求;在一預(yù)設(shè)時(shí)間到達(dá)時(shí),判斷回應(yīng)方單元是否回傳一處理結(jié)果至逾時(shí)控制單元;若是,則利用逾時(shí)控制單元將上述處理結(jié)果回傳至請(qǐng)求方單元;以及若否,則利用逾時(shí)控制單元發(fā)送一阻斷請(qǐng)求至回應(yīng)方單元,使得回應(yīng)方單元根據(jù)阻斷請(qǐng)求中斷上述處理請(qǐng)求的處理,并利用逾時(shí)控制單元傳送一會(huì)談?dòng)鈺r(shí)訊息至請(qǐng)求方單元。
[0017]依據(jù)本發(fā)明一實(shí)施例,上述遠(yuǎn)程程序呼叫方法還包含:利用逾時(shí)控制單元判斷回應(yīng)方單元是否成功中斷上述處理請(qǐng)求的處理;若否,則利用逾時(shí)控制單元傳送一保留狀態(tài)訊息至請(qǐng)求方單元,并在回應(yīng)方單元回傳上述處理結(jié)果至逾時(shí)控制單元時(shí),利用逾時(shí)控制單元傳送一回呼訊息至請(qǐng)求方單元。
[0018]依據(jù)本發(fā)明另一實(shí)施例,于上述遠(yuǎn)程程序呼叫方法中,于利用逾時(shí)控制單元判斷回應(yīng)方單元是否成功中斷處理請(qǐng)求的處理的步驟中,逾時(shí)控制單元是根據(jù)回應(yīng)方單元所回傳至逾時(shí)控制單元的一阻斷狀態(tài)訊息,判斷回應(yīng)方單元是否成功中斷上述處理請(qǐng)求的處理。
[0019]依據(jù)本發(fā)明又一實(shí)施例,上述遠(yuǎn)程程序呼叫方法還包含:接收并儲(chǔ)存回應(yīng)方單元所回傳至逾時(shí)控制單元的一對(duì)應(yīng)于上述處理請(qǐng)求的處理程序識(shí)別碼。
[0020]依據(jù)本發(fā)明再一實(shí)施例,于上述遠(yuǎn)程程序呼叫方法中,阻斷請(qǐng)求包含上述處理程序識(shí)別碼,且回應(yīng)方單元根據(jù)阻斷請(qǐng)求中的處理程序識(shí)別碼,中斷上述處理請(qǐng)求的處理。
[0021]應(yīng)用本發(fā)明的優(yōu)點(diǎn)在于通過(guò)在執(zhí)行遠(yuǎn)程程序呼叫的系統(tǒng)中,利用一逾時(shí)控制單元來(lái)對(duì)遠(yuǎn)程程序呼叫的互動(dòng)過(guò)程進(jìn)行監(jiān)控與管理,特別是判斷程序是否逾時(shí),并在逾時(shí)發(fā)生時(shí)提供相對(duì)應(yīng)處理,如此一來(lái),可確保系統(tǒng)交易結(jié)果的一致性。于本發(fā)明中,用以判斷是否逾時(shí)的時(shí)間可依據(jù)不同的調(diào)用對(duì)象各自指定,具有高度彈性。另外,現(xiàn)有的遠(yuǎn)程程序呼叫系統(tǒng)只需小幅修改相關(guān)程序碼即可執(zhí)行本發(fā)明的技術(shù)手段,且本發(fā)明通用于各種不同技術(shù)平臺(tái)。本技術(shù)可通過(guò)請(qǐng)求方以及回應(yīng)方間的一中間裝置實(shí)現(xiàn),亦即請(qǐng)求方以及回應(yīng)方不需要修改程序的主要邏輯。本發(fā)明所提出的裝置可自我獨(dú)立控制與管理,且具有可自由調(diào)整Timeout時(shí)間長(zhǎng)短等優(yōu)點(diǎn),并通用于各種不同技術(shù)平臺(tái)。
【附圖說(shuō)明】
[0022]圖1為本發(fā)明一實(shí)施例中,一種適用于遠(yuǎn)程程序呼叫的逾時(shí)控制單元的方塊示意圖;
[0023]圖2為本發(fā)明一實(shí)施例中,一種適用于遠(yuǎn)程程序呼叫的逾時(shí)控制單元的方塊示意圖;
[0024]圖3為本發(fā)明一實(shí)施例中,一種遠(yuǎn)程程序呼叫方法的流程示意圖;
[0025]圖4為本發(fā)明一實(shí)施例中,一種遠(yuǎn)程程序呼叫方法的流程示意圖;
[0026]圖5為本發(fā)明一實(shí)施例中,一種遠(yuǎn)程程序呼叫方法的流程示意圖。
【具體實(shí)施方式】
[0027]下文是舉實(shí)施例配合所附附圖作詳細(xì)說(shuō)明,但所提供的實(shí)施例并非用以限制本發(fā)明所涵蓋的范圍,而結(jié)構(gòu)運(yùn)作的描述非用以限制其執(zhí)行的順序,任何由元件重新組合的結(jié)構(gòu),所產(chǎn)生具有均等功效的裝置,皆為本發(fā)明所涵蓋的范圍。此外,附圖僅以說(shuō)明為目的,并未依照原尺寸作圖。為使便于理解,下述說(shuō)明中相同元件將以相同的符號(hào)標(biāo)示來(lái)說(shuō)明。
[0028]在全篇說(shuō)明書(shū)與權(quán)利要求書(shū)所使用的用詞(terms),除有特別注明外,通常具有每個(gè)用詞使用在此領(lǐng)域中、在此揭露的內(nèi)容中與特殊內(nèi)容中的平常意義。某些用以描述本發(fā)明的用詞將于下或在此說(shuō)明書(shū)的別處討論,以提供本領(lǐng)域技術(shù)人員在有關(guān)本發(fā)明的描述上額外的引導(dǎo)。
[0029]于本文中,除非內(nèi)文中對(duì)于冠詞有所特別限定,否則“一”與“該”可泛指單一個(gè)或多個(gè)。將進(jìn)一步理解的是,本文中所使用的“包含”、“包括