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

企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法及裝置的制作方法

文檔序號:6559049閱讀:190來源:國知局
專利名稱:企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及企業(yè)應(yīng)用構(gòu)架技術(shù),尤其涉及企業(yè)應(yīng)用構(gòu)架中調(diào)用數(shù)據(jù)技術(shù)。
背景技術(shù)
目前,存在多種構(gòu)架形式的企業(yè)應(yīng)用構(gòu)架,例如J2EE中的企業(yè)應(yīng)用構(gòu)架及.net中的企業(yè)應(yīng)用構(gòu)架,每種構(gòu)架都會存在調(diào)用數(shù)據(jù)技術(shù)。以J2EE中的企業(yè)應(yīng)用構(gòu)架為例,這種構(gòu)架基本都采用了MVC(Model-View-Controller,模型-視圖-控制)的N層構(gòu)架模式,其典型模式如圖1所示。其中,Servlet是用Java編寫的Server(服務(wù)器)端程序,它與協(xié)議和平臺無關(guān),Servlet運行于Java-enabled Web Server中,Servlet可以動態(tài)地擴展Server的能力,并采用請求-響應(yīng)模式提供Web服務(wù);JSP是Java Server Page的縮寫,是Sun公司出品的Web開發(fā)語言;DAO是Data Access Object(數(shù)據(jù)接入對象)的縮寫,Business Object(業(yè)務(wù)對象)代表數(shù)據(jù)客戶端,正是該對象需要訪問數(shù)據(jù)源以獲取和存儲數(shù)據(jù),DAO是該模式的主要對象,DAO抽取該Business Object的低層數(shù)據(jù)訪問實現(xiàn),以保證對數(shù)據(jù)源的透明訪問,Business Object也可以把數(shù)據(jù)加載和存儲操作委托給DAO。
現(xiàn)在結(jié)合圖2,對基于圖1的調(diào)用數(shù)據(jù)的方法進行說明。在步驟S201中,用戶操作Web Browser(頁面瀏覽器),查看Web Layer(頁面層)中的JSP Page(JSP頁面);進入步驟S202,Web Layer調(diào)用Bussiness Layer(業(yè)務(wù)層)中的JavaBean來進行業(yè)務(wù)邏輯操作;最后進入步驟S203,JavaBean讀寫數(shù)據(jù)庫并將結(jié)果返回給Web Layer。其中,JavaBean是一種基于Java的軟件組件,用戶可以使用JavaBean將功能、處理、值、數(shù)據(jù)庫訪問和其他任何可以用Java代碼創(chuàng)造的對象進行打包,并且其他的開發(fā)者可以通過內(nèi)部的JSP Page、Servlet、其他JavaBean、applet程序或者應(yīng)用來使用這些對象,用戶可以認為JavaBean提供了一種隨時隨地的復(fù)制和粘貼的功能,而不用關(guān)心任何改變,DAO對象就是JavaBean的一種。
在一個大型的系統(tǒng)中,頻繁的操作數(shù)據(jù)庫是不可避免的,如果多次的從數(shù)據(jù)庫中取相同的數(shù)據(jù),必然會占用大量的I/O(輸入/輸出)接口和網(wǎng)絡(luò)帶寬,導(dǎo)致不必要的資源浪費,而如果在Bussiness Layer中設(shè)置一層緩沖,并將那些常用的數(shù)據(jù)存儲到緩沖中,當(dāng)JavaBean需要讀這些常用的數(shù)據(jù)時,就可避免頻繁的操作數(shù)據(jù)庫,減少不必要的資源開銷。
為此,本領(lǐng)域普通技術(shù)人員又提出了一種利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法進行說明。如圖3所示,在步驟S301中,用戶操作Web Browser,查看Web Layer(頁面層)中的JSP Page;進入步驟S302,Web Layer調(diào)用Bussiness Layer中的業(yè)務(wù)方法進行業(yè)務(wù)邏輯操作;進入步驟S303,判斷上述業(yè)務(wù)方法是否執(zhí)行過且參數(shù)是否相同,如果是,進入步驟S304,否則,進入步驟S305;在步驟S304中,從設(shè)置在Bussiness Layer中的緩沖區(qū)中提取已存儲且需要調(diào)用的數(shù)據(jù)返回給Web Layer;在步驟S305中,執(zhí)行業(yè)務(wù)方法,將得到的結(jié)果存儲到Bussiness Layer中的緩沖區(qū)中并返回給Web Layer。
在上述方法中,當(dāng)確定業(yè)務(wù)方法已執(zhí)行過且參數(shù)相同,則可直接從Bussiness Layer中的緩沖區(qū)中提取需要調(diào)用的數(shù)據(jù)返回給Web Layer,而沒有必要再次執(zhí)行業(yè)務(wù)方法進而對數(shù)據(jù)庫進行操作,從而避免了頻繁的操作數(shù)據(jù)庫,但是,這種方法還存在如下缺點1.每個需要緩沖的方法中都需要引入這樣復(fù)雜的緩沖代碼,不但會導(dǎo)致大量的代碼重復(fù),而且處理業(yè)務(wù)邏輯的代碼與緩沖的代碼混合在一起,會給代碼維護工作帶來很多困難;2.設(shè)計人員必須在開發(fā)的時候就改變原有的數(shù)據(jù)調(diào)用流程,引入和業(yè)務(wù)邏輯無關(guān)的cache(高速緩沖存儲器)對象;3.如果需要通過這樣的緩沖方法來優(yōu)化已經(jīng)運行的數(shù)據(jù)調(diào)用的流程,則必須獲得相應(yīng)的源代碼,加入緩沖的實現(xiàn),并修改所有對此方法的引用才行,這些條件在實際應(yīng)用中往往是不具備的。
4.如果Cache的性能不能滿足要求,沒有代碼也無法作出修改,如果需要在方法中去掉緩沖,則必須修改源代碼以去掉緩沖的部分,并進行重新編譯發(fā)布,這個過程違反了OCP(Open-Close Principle,開閉原則)。
從上述缺點來看,圖3所示的利用緩沖技術(shù)調(diào)用數(shù)據(jù)方法的最大缺點是每個需要緩沖的業(yè)務(wù)方法中都引入緩沖代碼,導(dǎo)致業(yè)務(wù)邏輯代碼與緩沖代碼混合在一起,不利于代碼的維護和修改,實質(zhì)上,這種方法實現(xiàn)了一種侵入式的緩沖,已違反了OCP。另外,這個缺點不是J2EE企業(yè)構(gòu)架所特有的,其他構(gòu)架中也都存在這種問題。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于提供一種利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,以實現(xiàn)在符合OCP的前提下避免頻繁操作數(shù)據(jù)庫的目的。
為解決上述問題,本發(fā)明提供了一種企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,包括A.調(diào)用業(yè)務(wù)方法的調(diào)用者觸發(fā)預(yù)先設(shè)置的攔截器;B.所述攔截器判斷所述業(yè)務(wù)方法是否執(zhí)行過,如果是,轉(zhuǎn)步驟C,否則,轉(zhuǎn)步驟D;C.所述攔截器從緩沖區(qū)中取出需要調(diào)用的數(shù)據(jù)返回給所述調(diào)用者;D.所述攔截器調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
其中,所述調(diào)用者將業(yè)務(wù)方法的參數(shù)及所述攔截器的配置文件中已配置的業(yè)務(wù)方法名稱發(fā)送給所述攔截器,以實現(xiàn)對所述攔截器的觸發(fā)。另外,可以使用正則表達式編寫所述業(yè)務(wù)方法的名稱。
步驟C還包括所述攔截器在所述緩沖區(qū)中查詢所述業(yè)務(wù)方法所在對象的名稱、所述業(yè)務(wù)方法的名稱及所述業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞對應(yīng)的數(shù)據(jù);所述攔截器將所述數(shù)據(jù)返回給所述調(diào)用者。
如果所述攔截器在所述緩沖區(qū)中沒有找到需要調(diào)用的數(shù)據(jù),則轉(zhuǎn)步驟D。
步驟D還包括所述攔截器將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果存儲到所述緩沖區(qū)中。
本發(fā)明的方法還包括所述攔截器將所述業(yè)務(wù)方法所在對象的名稱、所述業(yè)務(wù)方法的名稱及業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞、以及所述業(yè)務(wù)方法執(zhí)行后的結(jié)果分別作為哈希表的索引Key及值Value存儲到所述緩沖區(qū)中。
所述業(yè)務(wù)方法執(zhí)行后的結(jié)果為所述業(yè)務(wù)方法對所述業(yè)務(wù)方法的參數(shù)處理后的結(jié)果。
本發(fā)明還提供了一種企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,包括A.預(yù)先設(shè)置的攔截器攔截調(diào)用者對業(yè)務(wù)方法的調(diào)用;B.所述攔截器判斷所述業(yè)務(wù)方法是否執(zhí)行過,如果是,轉(zhuǎn)步驟C,否則,轉(zhuǎn)步驟D;C.所述攔截器從緩沖區(qū)中取出需要調(diào)用的數(shù)據(jù)返回給所述調(diào)用者;D.所述攔截器調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
所述攔截器攔截調(diào)用者對業(yè)務(wù)方法的調(diào)用的過程包括所述攔截器判斷所述調(diào)用者調(diào)用的業(yè)務(wù)方法的名稱是否已配置在所述攔截器的配置文件中,如果是,攔截所述調(diào)用者發(fā)出的業(yè)務(wù)方法的參數(shù)。
所述攔截器從緩沖區(qū)中取出需要調(diào)用的數(shù)據(jù)返回給所述調(diào)用者的過程還包括所述攔截器在所述緩沖區(qū)中查詢所述業(yè)務(wù)方法所在對象的名稱、所述業(yè)務(wù)方法的名稱及所述業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞對應(yīng)的數(shù)據(jù);所述攔截器將所述數(shù)據(jù)返回給所述調(diào)用者。
如果所述攔截器在所述緩沖區(qū)中沒有找到需要調(diào)用的數(shù)據(jù),則所述攔截器調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
所述攔截器調(diào)用所述業(yè)務(wù)方法、并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者的過程還包括所述攔截器將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果存儲到所述緩沖區(qū)中。
所述攔截器將所述業(yè)務(wù)方法所在對象的名稱、所述業(yè)務(wù)方法的名稱及業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞、以及所述業(yè)務(wù)方法執(zhí)行后的結(jié)果分別作為哈希表的索引Key及值Value存儲到所述緩沖區(qū)中。
本發(fā)明還提供了一種企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的裝置,包括攔截器,用于接受調(diào)用者的觸發(fā)和/或攔截調(diào)用者對業(yè)務(wù)方法的調(diào)用;緩沖區(qū),用于存儲業(yè)務(wù)方法執(zhí)行后的結(jié)果;如果所述攔截器確定所述業(yè)務(wù)方法已執(zhí)行過,則從所述緩沖區(qū)中取出需要調(diào)用的數(shù)據(jù)返回給所述調(diào)用者,否則,調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
所述攔截器還包括接受觸發(fā)及攔截單元,用于接受所述調(diào)用者的觸發(fā)和/或攔截所述調(diào)用者對業(yè)務(wù)方法的調(diào)用;判斷單元,用于判斷所述業(yè)務(wù)方法是否執(zhí)行過;調(diào)用單元,用于調(diào)用所述業(yè)務(wù)方法或所述緩沖區(qū)中的數(shù)據(jù);數(shù)據(jù)/結(jié)果返回單元,用于將從所述緩沖區(qū)中取出的數(shù)據(jù)或所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
所述判斷單元還用于判斷所述調(diào)用者調(diào)用的業(yè)務(wù)方法的名稱是否已配置在所述攔截器的配置文件中,如果所述業(yè)務(wù)方法的名稱已配置在所述配置文件中,則所述接受觸發(fā)及攔截單元攔截所述調(diào)用者發(fā)出的業(yè)務(wù)方法的參數(shù)。
如果所述攔截器在所述緩沖區(qū)中沒有找到需要調(diào)用的數(shù)據(jù),則所述攔截器調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
所述攔截器將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果存儲到所述緩沖區(qū)中,以實現(xiàn)攔截器調(diào)用所述業(yè)務(wù)方法、并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者的過程。
所述攔截器將所述業(yè)務(wù)方法所在對象的名稱、所述業(yè)務(wù)方法的名稱及業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞、以及所述業(yè)務(wù)方法執(zhí)行后的結(jié)果分別作為哈希表的索引Key及值Value存儲到所述緩沖區(qū)中。
在本發(fā)明中,調(diào)用業(yè)務(wù)方法的調(diào)用者首先觸發(fā)攔截器,或者攔截器首先攔截調(diào)用者對業(yè)務(wù)方法的調(diào)用,之后攔截器判斷業(yè)務(wù)方法是否執(zhí)行過,如果是,從緩沖區(qū)中查詢需要的結(jié)果,否則,調(diào)用業(yè)務(wù)方法,將業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給調(diào)用者,本領(lǐng)域普通技術(shù)人員都應(yīng)該知道,攔截技術(shù)一般都是掛接在正常流程之上的,即不需過多的修改原代碼和改變原有的業(yè)務(wù)流程,不但減少了開發(fā)人員和維護人員的工作量,還可以在開發(fā)期不考慮緩沖的情況下,根據(jù)系統(tǒng)實際運行后的結(jié)果來靈活調(diào)整緩沖的執(zhí)行,特別適合系統(tǒng)調(diào)優(yōu)。
本發(fā)明通過靈活的配置文件,允許將緩沖加入到任何一個業(yè)務(wù)方法中,而不需修改業(yè)務(wù)方法的代碼。
本發(fā)明的緩沖算法是由攔截技術(shù)掛接在正常流程之上,該技術(shù)可以隨時修改、更換最優(yōu)的緩沖實現(xiàn),實現(xiàn)最優(yōu)化的緩沖,而不影響任何一個客戶端的代碼。
本發(fā)明通過攔截器的正則表達式的匹配模式,可以在運行時改變攔截的方法,而不做任何編碼。
在本發(fā)明中,攔截器不但可以攔截調(diào)用者對業(yè)務(wù)方法的調(diào)用,還可以對執(zhí)行業(yè)務(wù)方法后返回的結(jié)果進行攔截,并將結(jié)果存儲到緩沖區(qū)中,進一步說,只要經(jīng)過攔截器第一次攔截的業(yè)務(wù)方法,其結(jié)果都會存儲到緩沖區(qū)中,如果攔截器再次對同樣的業(yè)務(wù)方法進行攔截,攔截器就會在緩沖區(qū)中找到需要調(diào)用的結(jié)果返回給調(diào)用者,而不必再對數(shù)據(jù)庫進行操作,一個應(yīng)用軟件中會有多個業(yè)務(wù)方法,采用本發(fā)明上述的技術(shù)手段可以進一步避免對數(shù)據(jù)庫頻繁的操作。


圖1為J2EE采用的MVC的N層構(gòu)架模式示意圖;圖2為基于圖1的調(diào)用數(shù)據(jù)方法的流程圖;圖3為現(xiàn)有的一種利用緩沖技術(shù)調(diào)用數(shù)據(jù)方法的流程圖;圖4為本發(fā)明方法的實施例的流程圖;
圖5為本發(fā)明攔截器的工作示意圖;圖6為本發(fā)明裝置的結(jié)構(gòu)示意圖。
具體實施例方式
下面我們將結(jié)合附圖,對本發(fā)明的最佳實施方案進行詳細描述。首先要指出的是,本發(fā)明中用到的術(shù)語、字詞及權(quán)利要求的含義不能僅僅限于其字面和普通的含義去理解,還包括進而與本發(fā)明的技術(shù)相符的含義和概念,這是因為我們作為發(fā)明者,要適當(dāng)?shù)亟o出術(shù)語的定義,以便對我們的發(fā)明進行最恰當(dāng)?shù)拿枋?。因此,本說明和附圖中給出的配置,只是本發(fā)明的首選實施方案,而不是要列舉本發(fā)明的所有技術(shù)特性。我們要認識到,還有各種各樣的可以取代我們方案的同等方案或修改方案。
本發(fā)明在企業(yè)應(yīng)用構(gòu)架的業(yè)務(wù)層中設(shè)置了攔截器,調(diào)用者在調(diào)用業(yè)務(wù)方法的過程中會觸發(fā)攔截器,或者攔截器在調(diào)用者對業(yè)務(wù)方法的調(diào)用過程中對調(diào)用進行攔截,,之后,攔截器首先會在緩沖區(qū)中查詢業(yè)務(wù)方法執(zhí)行后的結(jié)果,如果緩沖區(qū)中存在所述結(jié)果,則攔截器將所述結(jié)果返回給調(diào)用者,否則,攔截器調(diào)用業(yè)務(wù)方法,之后,將執(zhí)行的結(jié)果返回給調(diào)用者。
現(xiàn)在結(jié)合圖4,對本發(fā)明方法的實施例進行說明。
在步驟S401中,調(diào)用業(yè)務(wù)方法的調(diào)用者觸發(fā)攔截器。
本實施例所述的調(diào)用者可以為企業(yè)應(yīng)用構(gòu)架中的Web Layer,業(yè)務(wù)方法可以為JavaBean中的一個函數(shù)。
攔截器可以由動態(tài)代理類實現(xiàn)。Jdk1.3已開始支持動態(tài)代理類,同樣,在.net系統(tǒng)中,利用反射機制也可以實現(xiàn)相似的動態(tài)代理類。動態(tài)代理類是一種特別的類,它能在運行期間決定實現(xiàn)哪個接口,動態(tài)代理是一種強大的語言結(jié)構(gòu),它使我們可以為一個或多個接口創(chuàng)建實現(xiàn)對象,而不需要預(yù)先有一個實現(xiàn)類。本發(fā)明編寫了一個通用的Proxy類,來代理需要緩沖的業(yè)務(wù)方法,Proxy類主要包含以下內(nèi)容Protected Proxy(InvocationHandler h)構(gòu)造函數(shù),用于給內(nèi)部的調(diào)用句柄h賦值;Static Class getProxyClass(ClassLoader loader,Class[]interfaces)獲得一個代理類,其中l(wèi)oader是類裝載器,interfaces是真實類所擁有的全部接口的數(shù)組;
Static Object newProxyInstance(ClassLoader loader,Class[]intertaces,InvocationHandler h)返回代理類的一個實例,返回后的代理類可以當(dāng)作被代理類使用(可使用被代理類的在Subject接口中聲明過的方法)。
在實際應(yīng)用中,調(diào)用者其實都是調(diào)用Proxy類,這樣Proxy類就具備了攔截器的能力。本發(fā)明的緩沖操作在Proxy類中進行,不影響實際的操作流程。我們可以在配置文件中設(shè)置需要進行攔截的業(yè)務(wù)方法的名稱,調(diào)用者可以通過將業(yè)務(wù)方法的參數(shù)及業(yè)務(wù)方法的名稱發(fā)送給攔截器的方式觸發(fā)攔截器,業(yè)務(wù)方法可以對業(yè)務(wù)方法的參數(shù)進行處理,處理后的結(jié)果就是調(diào)用者需要的結(jié)果。所述業(yè)務(wù)方法的名稱可以使用正則表達式編寫,例如,<value>.*find.*</value>
<value>.*get.*</value>
上述表達式指明了攔截器需要攔截的是名稱包含find、get的業(yè)務(wù)方法,當(dāng)調(diào)用者將包含find、get的業(yè)務(wù)方法的名稱及參數(shù)發(fā)送給攔截器時,攔截器即被觸發(fā),需要說明的是,如果調(diào)用者將配置文件中未配置的業(yè)務(wù)方法的名稱發(fā)送給攔截器時,攔截器可以提示調(diào)用者此業(yè)務(wù)方法的名稱未在配置文件中配置,或者不作出任何響應(yīng)。還需要說明的是,如果攔截器發(fā)現(xiàn)調(diào)用者發(fā)送的是配置文件中未配置的業(yè)務(wù)方法的名稱,則可將所述名稱在配置文件中配置,以便以后能夠接受調(diào)用者調(diào)用所述業(yè)務(wù)方法時的觸發(fā)后者攔截調(diào)用者對所述業(yè)務(wù)方法的調(diào)用。
進入步驟S402,攔截器判斷業(yè)務(wù)方法是否執(zhí)行過,如果是,進入步驟S403,否則,進入步驟S404。在此步驟中,攔截器可以判斷業(yè)務(wù)方法是否對調(diào)用者傳送過來的參數(shù)進行過處理,如果是,確定業(yè)務(wù)方法已執(zhí)行過,否則,即使業(yè)務(wù)方法對其他參數(shù)進行過處理,也確定業(yè)務(wù)方法未執(zhí)行過。
在步驟S403中,所述攔截器從緩沖區(qū)中取出需要調(diào)用的數(shù)據(jù)返回給所述調(diào)用者。緩沖區(qū)可以是獨立于攔截器的實體,也可以設(shè)置在攔截器中。在本實施例中,可以將業(yè)務(wù)方法所在對象的名稱、業(yè)務(wù)方法的名稱及業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞、以及業(yè)務(wù)方法執(zhí)行后的結(jié)果分別作為哈希表的Key(索引)及Value(值)存儲到所述緩沖區(qū)中,例如,如果業(yè)務(wù)方法所在對象的名稱為calculator,業(yè)務(wù)方法的名稱為add,調(diào)用者傳送過來的參數(shù)為1和2,則Key可以為calculator-add(1,2)或calculator-add-1,2等形式,當(dāng)然,Key也可以為三者通過運算或處理得到的任何形式的字符串。在本步驟中,攔截器可以在緩沖區(qū)中查詢業(yè)務(wù)方法所在對象的名稱、業(yè)務(wù)方法的名稱及業(yè)務(wù)方法的參數(shù)組成的Key所對應(yīng)的數(shù)據(jù),如果在緩沖區(qū)中發(fā)現(xiàn)匹配的Key,則將Key對應(yīng)的Value返回給調(diào)用者。在實際應(yīng)用中,由于哈希表中的數(shù)據(jù)被破壞、攔截器沒有使用正確的Key查詢數(shù)據(jù)或者攔截器錯誤的確定業(yè)務(wù)方法執(zhí)行過等原因,都可能導(dǎo)致攔截器在緩沖區(qū)中沒有找到對應(yīng)的數(shù)據(jù),這時,可以通過步驟S404解決這個問題。
在步驟S404中,攔截器調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。攔截器可以通過將業(yè)務(wù)方法的參數(shù)發(fā)送給業(yè)務(wù)方法的方式調(diào)用業(yè)務(wù)方法,業(yè)務(wù)方法接收到參數(shù)后,對參數(shù)進行處理,攔截器最后將處理后的結(jié)果返回給調(diào)用者,例如,如果業(yè)務(wù)方法為add(),參數(shù)為1和2,則add()對1和2的處理結(jié)果為3,攔截器就將3返回給調(diào)用者。此外,攔截器還可將業(yè)務(wù)方法所在對象的名稱、業(yè)務(wù)方法的名稱及業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞、以及執(zhí)行后的結(jié)果分別作為哈希表的索引Key及值Value存儲到緩沖區(qū)中,以便將來調(diào)用者需要得到處理相同參數(shù)的結(jié)果時,攔截器可直接從緩沖區(qū)中提取結(jié)果。
在上述實施例中,當(dāng)調(diào)用者觸發(fā)攔截器時,攔截器才開始工作,實際上,攔截器可以在沒有被觸發(fā)的情況下,主動的對調(diào)用者對業(yè)務(wù)方法的調(diào)用進行攔截,例如,當(dāng)調(diào)用者調(diào)用業(yè)務(wù)方法時,攔截器可以主動的攔截調(diào)用者發(fā)送給業(yè)務(wù)方法的參數(shù),之后判斷參數(shù)是否被所述業(yè)務(wù)方法處理過,當(dāng)然,攔截器在攔截參數(shù)的同時,還可以進一步判斷業(yè)務(wù)方法的名稱是否已在配置文件中配置過,如果是,再繼續(xù)判斷參數(shù)是否被所述業(yè)務(wù)方法處理過,否則,攔截器將參數(shù)傳送給實際的業(yè)務(wù)方法進行處理。所述攔截器攔截調(diào)用者對業(yè)務(wù)方法的調(diào)用的過程包括所述攔截器判斷所述調(diào)用者調(diào)用的業(yè)務(wù)方法的名稱是否已配置在所述攔截器的配置文件中,如果是,攔截所述調(diào)用者發(fā)出的業(yè)務(wù)方法的參數(shù)。
為使本領(lǐng)域普通技術(shù)人員更加容易的實現(xiàn)本發(fā)明,現(xiàn)在結(jié)合圖5,進一步說明本發(fā)明采取的技術(shù)手段。
如圖5所示,步驟S501到步驟S502的流程是沒有使用緩沖技術(shù)調(diào)用數(shù)據(jù)的流程,當(dāng)然,步驟S502涉及到對數(shù)據(jù)庫的操作,例如從數(shù)據(jù)庫中讀取數(shù)據(jù)等。本發(fā)明在原有流程的基礎(chǔ)上增加了步驟S503-S507。攔截器在本發(fā)明的工作原理為執(zhí)行步驟S501后,攔截器要對調(diào)用進行攔截(即步驟S503),判斷業(yè)務(wù)方法是否執(zhí)行過(即步驟S504),如果是,從緩沖區(qū)中取出相應(yīng)的結(jié)果(即步驟S505),之后,返回步驟S501;否則,返回原有的流程。如果通過原有流程執(zhí)行業(yè)務(wù)方法(即步驟S502)后,攔截器對業(yè)務(wù)方法執(zhí)行后返回的結(jié)果進行攔截(即步驟S506),將所述結(jié)果存儲到緩沖區(qū)中(即步驟S507),最后返回原有流程,即返回步驟S501。從圖5中可以看出,攔截器只是掛接到原有的流程中,無論是攔截調(diào)用還是攔截返回均沒有破壞原有的流程,對于業(yè)務(wù)方法的調(diào)用者來說,其始終認為調(diào)用的是業(yè)務(wù)方法本身,從而實現(xiàn)了在不改變原有的流程下增加了緩沖技術(shù)。
另外,緩沖區(qū)中存儲的結(jié)果有時可能需要刪除或修改,此時就需要清除緩沖區(qū)中相應(yīng)的數(shù)據(jù)。本發(fā)明采取的手段是,在攔截器中偵聽含有update或delete名稱的方法調(diào)用,如果有相應(yīng)的方法調(diào)用則使緩沖失效。
上述實施例是實現(xiàn)本發(fā)明方法的優(yōu)選實施方式。此外,本發(fā)明還提供了一種企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的裝置。如圖6所示,企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的裝置601包括攔截器6011,用于接受調(diào)用者602的觸發(fā)和/或攔截調(diào)用者602對業(yè)務(wù)方法的調(diào)用;緩沖區(qū)6012,用于存儲業(yè)務(wù)方法執(zhí)行后的結(jié)果;如果攔截器6011確定所述業(yè)務(wù)方法已執(zhí)行過,則從緩沖區(qū)6012中取出需要調(diào)用的數(shù)據(jù)返回給調(diào)用者602,否則,調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者602。
攔截器6011還包括接受觸發(fā)及攔截單元,用于接受調(diào)用者602的觸發(fā)和/或攔截調(diào)用者602對業(yè)務(wù)方法的調(diào)用;判斷單元,用于判斷所述業(yè)務(wù)方法是否執(zhí)行過;調(diào)用單元,用于調(diào)用所述業(yè)務(wù)方法或緩沖區(qū)6012中的數(shù)據(jù);數(shù)據(jù)/結(jié)果返回單元,用于將從緩沖區(qū)6012中取出的數(shù)據(jù)或所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給調(diào)用者602。
所述判斷單元還用于判斷調(diào)用者602調(diào)用的業(yè)務(wù)方法的名稱是否已配置在攔截器6011的配置文件中,如果所述業(yè)務(wù)方法的名稱已配置在所述配置文件中,則所述接受觸發(fā)及攔截單元攔截調(diào)用者602發(fā)出的業(yè)務(wù)方法的參數(shù)。
如果攔截器6011在緩沖區(qū)6012中沒有找到需要調(diào)用的數(shù)據(jù),則攔截器6011調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給調(diào)用者602。
調(diào)用者602可以將業(yè)務(wù)方法的參數(shù)及攔截器6011的配置文件中已配置的業(yè)務(wù)方法名稱發(fā)送給攔截器6011,以實現(xiàn)對攔截器6011的觸發(fā)。在配置文件中,可以使用正則表達式編寫業(yè)務(wù)方法的名稱。
攔截器6011可以在緩沖區(qū)6012中查詢業(yè)務(wù)方法的參數(shù)與業(yè)務(wù)方法的名稱組成的關(guān)鍵詞對應(yīng)的數(shù)據(jù),之后,攔截器6012將所述數(shù)據(jù)返回給調(diào)用者602。
攔截器6011還可以將業(yè)務(wù)方法執(zhí)行后的結(jié)果存儲到緩沖區(qū)6012中,例如,攔截器6011將業(yè)務(wù)方法的參數(shù)與業(yè)務(wù)方法的名稱組成的關(guān)鍵詞、業(yè)務(wù)方法執(zhí)行后的結(jié)果分別作為哈希表的Key及Value存儲到緩沖區(qū)6012中。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于包括調(diào)用業(yè)務(wù)方法的調(diào)用者觸發(fā)預(yù)先設(shè)置的攔截器;所述攔截器判斷所述業(yè)務(wù)方法是否執(zhí)行過,如果是,所述攔截器從緩沖區(qū)中取出需要調(diào)用的數(shù)據(jù)返回給所述調(diào)用者,否則,所述攔截器調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
2.如權(quán)利要求1所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于所述調(diào)用者觸發(fā)所述攔截器的過程為所述調(diào)用者將業(yè)務(wù)方法的參數(shù)及所述攔截器的配置文件中已配置的業(yè)務(wù)方法名稱發(fā)送給所述攔截器。
3.如權(quán)利要求2所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于使用正則表達式編寫所述業(yè)務(wù)方法的名稱。
4.如權(quán)利要求1-3任意一項所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于所述攔截器從緩沖區(qū)中取出需要調(diào)用的數(shù)據(jù)返回給所述調(diào)用者的過程還包括所述攔截器在所述緩沖區(qū)中查詢所述業(yè)務(wù)方法所在對象的名稱、所述業(yè)務(wù)方法的名稱及所述業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞對應(yīng)的數(shù)據(jù);所述攔截器將所述數(shù)據(jù)返回給所述調(diào)用者。
5.如權(quán)利要求1所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于如果所述攔截器在所述緩沖區(qū)中沒有找到需要調(diào)用的數(shù)據(jù),則所述攔截器調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
6.如權(quán)利要求1或5所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于所述攔截器調(diào)用所述業(yè)務(wù)方法、并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者的過程還包括所述攔截器將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果存儲到所述緩沖區(qū)中。
7.如權(quán)利要求6所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于還包括所述攔截器將所述業(yè)務(wù)方法所在對象的名稱、所述業(yè)務(wù)方法的名稱及業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞、以及所述業(yè)務(wù)方法執(zhí)行后的結(jié)果分別作為哈希表的索引Key及值Value存儲到所述緩沖區(qū)中。
8.如權(quán)利要求7所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于所述業(yè)務(wù)方法執(zhí)行后的結(jié)果為所述業(yè)務(wù)方法對所述業(yè)務(wù)方法的參數(shù)處理后的結(jié)果。
9.一種企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于包括預(yù)先設(shè)置的攔截器攔截調(diào)用者對業(yè)務(wù)方法的調(diào)用;所述攔截器判斷所述業(yè)務(wù)方法是否執(zhí)行過,如果是,所述攔截器從緩沖區(qū)中取出需要調(diào)用的數(shù)據(jù)返回給所述調(diào)用者,否則,所述攔截器調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
10.如權(quán)利要求9所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于所述攔截器攔截調(diào)用者對業(yè)務(wù)方法的調(diào)用的過程包括所述攔截器判斷所述調(diào)用者調(diào)用的業(yè)務(wù)方法的名稱是否已配置在所述攔截器的配置文件中,如果是,攔截所述調(diào)用者發(fā)出的業(yè)務(wù)方法的參數(shù)。
11.如權(quán)利要求9或10所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于所述攔截器從緩沖區(qū)中取出需要調(diào)用的數(shù)據(jù)返回給所述調(diào)用者的過程還包括所述攔截器在所述緩沖區(qū)中查詢所述業(yè)務(wù)方法所在對象的名稱、所述業(yè)務(wù)方法的名稱及所述業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞對應(yīng)的數(shù)據(jù);所述攔截器將所述數(shù)據(jù)返回給所述調(diào)用者。
12.如權(quán)利要求9所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于如果所述攔截器在所述緩沖區(qū)中沒有找到需要調(diào)用的數(shù)據(jù),則所述攔截器調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
13.如權(quán)利要求9或12所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于所述攔截器調(diào)用所述業(yè)務(wù)方法、并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者的過程還包括所述攔截器將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果存儲到所述緩沖區(qū)中。
14.如權(quán)利要求13所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于還包括所述攔截器將所述業(yè)務(wù)方法所在對象的名稱、所述業(yè)務(wù)方法的名稱及業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞、以及所述業(yè)務(wù)方法執(zhí)行后的結(jié)果分別作為哈希表的索引Key及值Value存儲到所述緩沖區(qū)中。
15.一種企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的裝置,其特征在于包括攔截器,用于接受調(diào)用者的觸發(fā)和/或攔截調(diào)用者對業(yè)務(wù)方法的調(diào)用;緩沖區(qū),用于存儲業(yè)務(wù)方法執(zhí)行后的結(jié)果;如果所述攔截器確定所述業(yè)務(wù)方法已執(zhí)行過,則從所述緩沖區(qū)中取出需要調(diào)用的數(shù)據(jù)返回給所述調(diào)用者,否則,調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
16.如權(quán)利要求15所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于所述攔截器還包括接受觸發(fā)及攔截單元,用于接受所述調(diào)用者的觸發(fā)和/或攔截所述調(diào)用者對業(yè)務(wù)方法的調(diào)用;判斷單元,用于判斷所述業(yè)務(wù)方法是否執(zhí)行過;調(diào)用單元,用于調(diào)用所述業(yè)務(wù)方法或所述緩沖區(qū)中的數(shù)據(jù);數(shù)據(jù)/結(jié)果返回單元,用于將從所述緩沖區(qū)中取出的數(shù)據(jù)或所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
17.如權(quán)利要求16所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于所述判斷單元還用于判斷所述調(diào)用者調(diào)用的業(yè)務(wù)方法的名稱是否已配置在所述攔截器的配置文件中,如果所述業(yè)務(wù)方法的名稱已配置在所述配置文件中,則所述接受觸發(fā)及攔截單元攔截所述調(diào)用者發(fā)出的業(yè)務(wù)方法的參數(shù)。
18.如權(quán)利要求15所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于如果所述攔截器在所述緩沖區(qū)中沒有找到需要調(diào)用的數(shù)據(jù),則所述攔截器調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。
19.如權(quán)利要求15或18所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于所述攔截器將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果存儲到所述緩沖區(qū)中,以實現(xiàn)攔截器調(diào)用所述業(yè)務(wù)方法、并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者的過程。
20.如權(quán)利要求19所述的企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,其特征在于還包括所述攔截器將所述業(yè)務(wù)方法所在對象的名稱、所述業(yè)務(wù)方法的名稱及業(yè)務(wù)方法的參數(shù)組成的關(guān)鍵詞、以及所述業(yè)務(wù)方法執(zhí)行后的結(jié)果分別作為哈希表的索引Key及值Value存儲到所述緩沖區(qū)中。
全文摘要
本發(fā)明公開了一種企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的方法,包括調(diào)用業(yè)務(wù)方法的調(diào)用者觸發(fā)預(yù)先設(shè)置的攔截器;所述攔截器判斷所述業(yè)務(wù)方法是否執(zhí)行過,如果是,所述攔截器從緩沖區(qū)中取出需要調(diào)用的數(shù)據(jù)返回給所述調(diào)用者,否則,所述攔截器調(diào)用所述業(yè)務(wù)方法,并將所述業(yè)務(wù)方法執(zhí)行后的結(jié)果返回給所述調(diào)用者。本發(fā)明還公開了一種企業(yè)應(yīng)用構(gòu)架中利用緩沖技術(shù)調(diào)用數(shù)據(jù)的裝置。
文檔編號G06F17/30GK1967532SQ20061008657
公開日2007年5月23日 申請日期2006年6月30日 優(yōu)先權(quán)日2006年6月30日
發(fā)明者曹祖鵬 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1