專利名稱:應用程序訪問Web服務器端對象的實現(xiàn)方法和裝置的制作方法
技術領域:
本發(fā)明涉及信息技術領域,更確切地說是涉及一種應用程序訪問Web服務器端對象的實現(xiàn)方法和裝置。
背景技術:
在多層結構的web萬維網應用程序的設計中,通常使用一種運行于瀏覽器下的小應用程序(Applet)作為復雜的客戶端表示層技術。
現(xiàn)有Applet調用Web服務端資源,主要用的方案是采用遠程方法調用RMI(Remote Method Invocation)方式,如圖1所示,Applet首先調用RMI服務,由RMI進行Web服務器對象的序列化,再傳遞給Applet。
該技術方案有如下缺點1、需要在服務器端增設RMI服務,增加服務器的壓力;2、需要專門為RMI開設相應的端口,限制了其在復雜網絡結構下的使用;3、有防火墻的環(huán)境下,需要專門開相應的端口,降低整個系統(tǒng)的安全性;4、沒有對對象進行分類緩沖管理,僅僅是一個遠程調用的框架,在高并發(fā)條件下,會造成服務器端的性能急劇下降。
現(xiàn)有另一種Applet調用Web服務端資源的方案如圖2所示,Applet直接通過和web服務器端的運行在其上的服務器小程序Servlet進行套節(jié)字Socket通信,把請求格式化,服務端通過監(jiān)聽,解析具體的請求,再調用合適的對象。Applet首先需要對不同的請求進行編碼,把請求調用傳遞給服務端的Servlet,由Servlet反解析原有的請求編碼,再根據需要調用相應的對象。
該技術方案有如下缺點1、需要對調用進行編碼,容易出錯,不宜調試;2、無法滿足調用復雜的對象,工作量大;3、沒有對遠程對象進行分類緩沖管理,在高并發(fā)條件下,會造成服務端的性能急劇下降。
現(xiàn)有的Applet調用服務端的技術要么是提供的框架過于厚重,要么不適合于復雜的網絡結構。
發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提供一種應用程序訪問Web服務器端對象的實現(xiàn)方法和裝置,不需要開設專門的監(jiān)聽服務,解決單純的Applet直接調用的復雜性和難調試問題。
為達到以上目的,本發(fā)明提供以下技術方案一種應用程序訪問Web服務器端對象的實現(xiàn)方法,其中,在Applet端和Web服務器之間設置一個輕量級適配器,輕量級適配器分為客戶端樁和服務端樁,所述方法包括如下步驟A、Applet向Web服務器端發(fā)起調用請求;B、客戶端樁攔截所述Applet對服務器的請求并通過內置隧道把請求提交給服務端樁;C、服務端樁將所述請求傳遞至Web服務器,由控制器對所述請求進行調度。
步驟B進一步包括客戶端樁對請求進行編碼,將編碼后的請求提交給服務端樁;步驟C進一步包括服務端樁對所述請求進行解碼后被動觸發(fā)。
步驟C中,控制器調度請求時包括下述步驟C1、確定調用請求的對象是否在預先設置的私有對象池中,若在,則從私有對象池中獲取對象使其經由服務端樁和客戶端樁返回至小應用程序,否則進行步驟C2;C2、查找預先設置的公有對象池中是否有可用對象,若有,則使該對象通過服務端樁和客戶端樁返回至小應用程序,否則進行步驟C3;C3、直接調度Web服務器獲取可用對象,并使該對象經服務端樁和客戶端樁返回至小應用程序。
在步驟C2中,從公有池獲取可用對象后,由公有對象池直接將該可用對象經由服務端樁和客戶端樁返回至小應用程序,或者,先將該對象移到私有對象池中,由私有對象池獲取對象并經服務端樁和客戶端樁返回至小應用程序;或者,在步驟C3中,從Web服務器獲取可用對象后,將該對象初始化后放到公有對象池中,由公有對象池直接將可用對象獲取對象依次經服務端樁和客戶端樁返回至小應用程序,或直接將所述可用對象放置于私有對象池,再由私有對象池將獲取對象依次經服務端樁和客戶端樁返回至小應用程序,或直接將對象依次經服務端樁和客戶端樁返回至小應用程序。
一種智能調度器,包括客戶端請求接收模塊、對象查找模塊、公用對象池管理模塊、私用對象池管理模塊,其中,客戶端請求接收模塊用于同服務端樁相連,以接收Applet發(fā)起的調用請求,并將所述請求轉發(fā)至對象查找模塊;所述對象查找模塊用于同WEB服務器、公有對象池及私有對象池相連,接收客戶端請求接收模塊轉發(fā)的請求,依據請求查找私有對象池、公有對象池或WEB服務器,將查找結果轉發(fā)至公用對象池管理模塊、或私用對象池管理模塊;私有對象池管理模塊同對象查找模塊交互,接受查找結果進行私有對象池的操作與管理;公有對象池管理模塊同對象查找模塊交互,接受查找結果進行公有對象池的操作與管理。
一種智能調度器,包括客戶端請求接收模塊、對象查找模塊、請求處理模塊、公用對象池管理模塊、私用對象池管理模塊、調度策略模塊,其中,客戶端請求接收模塊用于同服務端樁相連,以接收Applet發(fā)起的調用請求,并將所述請求轉發(fā)至調度策略模塊;所述對象查找模塊用于同WEB服務器、公有對象池及私有對象池相連,接收調度策略模塊下發(fā)的查詢指令,依據指令查找私有對象池、公有對象池或WEB服務器,將查找結果轉發(fā)至調度策略模塊、公用對象池管理模塊、或私用對象池管理模塊;調度策略模塊用于同對象查找模塊、客戶端請求接收模塊、公用對象池管理模塊、私用對象池管理模塊、請求處理模塊相連,依據客戶端請求收接模塊發(fā)送的調用請求,確定對該請求的處理方式,將所述處理指令下發(fā)至對象查找模塊或請求處理模塊,并接受對象查找模塊或請求處理模塊返回的處理信息并發(fā)送至私有對象池管理模塊或公有對象池管理模塊;請求處理模塊同調度策略模塊相連,接受調度策略模塊下發(fā)的處理指令對所述請求進行處理;私有對象池管理模塊同對象查找模塊及調度策略模塊交互,接受查找結果及調度策略指令進行私有對象池的操作與管理;公有對象池管理模塊同對象查找模塊及調度策略模塊交互,接受查找結果及調度策略指令進行公有對象池的操作與管理。
本發(fā)明通過由于采用了輕量級的適配器,通過客戶端樁和服務端樁透明傳遞Applet對服務器對象的請求,不需要起專門監(jiān)聽服務;解決單純的Applet直接調用的復雜性和難調試;由于采用了兩級緩沖,提高了處理的速度;采用實時的緩沖對象生命周期管理,動態(tài)緩沖對象,提高框架的處理能力;請求的對象按請求的類型進行對象私有和公有的對象緩沖機制;通過公有對象的最近被調用頻率、對象的內存大小、對象的平均執(zhí)行時間和對象的初始時間進行對象的生命周期管理。
圖1為現(xiàn)有技術一所述方法的組網圖;圖2為現(xiàn)有技術二所述方法的組網圖;圖3為本發(fā)明所述方法流程圖;圖4為本發(fā)明一實施方案系統(tǒng)組網圖;圖5為本發(fā)明另一實施方案系統(tǒng)組網圖;圖6為本發(fā)明智能調度器系統(tǒng)結構圖;圖7為本發(fā)明另一種智能調度器系統(tǒng)結構圖。
具體實施例方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明白,下面結合實施例和附圖,對本發(fā)明進一步詳細說明。
參閱圖3所示,本發(fā)明在Applet端和Web服務端對象之間設置一個輕量級適配器,輕量級適配器分為客戶端樁和服務端樁;Applet向服務器發(fā)起調用請求時,由客戶端樁負責攔截該請求,并通過內置隧道把請求提交給服務端樁,該內置隧道基于Http的連接方式;服務端樁把請求傳遞給Web服務器,由控制器對所述請求進行調度,該控制器可以設置于Web服務器上或者同Web服務器相連。通過客戶端樁連接服務端樁可依據相應的調用策略進行服務端對象的調用,并且按照一定的策略管理各種對象。
客戶端樁和服務端樁是一個輕量級的樁,依據對象生成,對被訪問對象進行封裝。封裝出來的客戶端樁和被訪問對象擁有相同的接口。服務端樁屬于被動式觸發(fā),利用現(xiàn)有Web服務器端容器的監(jiān)聽,由Web容器的監(jiān)聽器來觸發(fā)調用服務端樁,無需另起端口監(jiān)聽。生成所述樁及封裝的方式很多,可以采用類似現(xiàn)有EJB樁(企業(yè)級Javabean樁)的生成方式??蛻舳藰杜c服務器端樁可以由框架配套的小工具自動生成,也可以依據請求的編碼手工寫成??蛻舳藰秾φ埱筮M行編碼,服務端樁對請求進行解碼,服務端樁本身不開設端口,完全依賴WEB服務端已有的服務器小程序Servlet控制器來調度。通過采用輕量級適配器解決了現(xiàn)有技術中需要專門開設監(jiān)聽端口及監(jiān)聽服務,及單純的Applet直接調用的復雜性和難調試的問題,同時減低了訪問WEB服務對象的復雜性和易錯性。
為了進一步提高處理速度,在服務端樁與WEB服務器間設置智能調度器、私有對象池、公有對象池,如圖4所示。
建立私有對象池存放遠程調用者相應的調取對象,一般是狀態(tài)對象,私有對象池的大小根據不同的應用決定的,私有對象池中的對象生命周期是可以配置的,根據不同的應用可以配置一個最優(yōu)的時間值。公有對象池保持Web容器被遠程調用的常用對象緩沖,相當于二級緩沖,對象池的大小和具體的應用有關,根據智能調度器來跟蹤對象的被調用頻率、對象的內存大小、對象最近被調用的頻率、對象的平均執(zhí)行時間或對象的初始化時間,決定對象是否繼續(xù)保存在對象池中。
智能調度器有兩個重要的功能,一個功能是監(jiān)控公有對象池中對象的生命周期;另一個功能是合理調度客戶端的請求,根據服務端的實際負載和配置選擇丟棄請求或者把請求透傳給其他服務器,以實現(xiàn)一個輕量級的負載均衡。
智能調度器可以為私有對象池設置超時時間,即如遠程調用在某一個時間內未對私有對象池中的對象作相關調用,則刪除所有的對象和對象池本身。智能調度器也可以依據私有對象池中的每個對象的調用屬性更新私有對象池中保存的相應對象。如智能調度器可以對私有對象池中的每個對象設置生命周期,在該生命周期內,某一對象未被遠程調用,則在私有對象池中刪除該特定對象。智能調度器定期依智能調度器返回的各被調用對象被調用的頻率或對象大小等指標更新公有對象池中的對象。
當Applet發(fā)起調用請求,所述請求攜帶要請求的目標對象,Applet的請求首先由客戶端樁攔截,客戶端樁通過連接隧道把請求傳遞給遠程的服務端樁,再通過服務端樁把請求傳遞給智能調度器;智能調度器判斷來自客戶端請求的對象是否在私有對象池中,并根據結果進行下述處理(1)若對象在私有對象池中,就從私有對象池中獲取對象返回給服務端樁,再由服務端樁通過客戶端樁將對象返回給Applet。
(2)若對象不在私有對象池中,智能調度器從公有對象池中檢測是否有可用的對象,根據檢測結果進行下述處理A、如果智能調度器發(fā)現(xiàn)公有對象池中有可用對象,則可以依據請求信息或者可用對象的信息決定處理方式。如可以將對象移到私有對象池中,由私有對象池獲取對象返回給服務端樁,再由服務端樁通過客戶端樁將對象返回給Applet;也可以由公有對象池直接將可用對象獲取對象返回給服務端樁,再由服務端樁通過客戶端樁將對象返回給Applet。
B、如果智能調度器發(fā)現(xiàn)公有對象池中也沒有可用對象,則智能調度器直接調度Web服務器,獲取可用對象后,依據請求信息或者可用對象的信息決定處理方式。可以由智能調度器將所述對象初始化后放到公有對象池中,由公有對象池直接將可用對象返回給服務端樁,再由服務端樁通過客戶端樁將對象再給Applet;也可以由調度器直接將所述可用對象放置于私有對象池,再由私有對象池將獲取對象返回給服務端樁,再由服務端樁通過客戶端樁將對象再返回給Applet;還可以由智能調度器直接將對象返回至服務端樁,再由服務端樁通過客戶端樁將對象返回給Applet。
Applet發(fā)起的調用請求可以攜帶請求類型,主要包括有狀態(tài)、無狀態(tài)和默認三種類型??蛻舳艘罁枰付▽ο鬆顟B(tài),并將所述狀態(tài)攜帶于Applet發(fā)起的調用請求中。如果請求類型是有狀態(tài),則必須將被請求的對象放入私有對象池,且進行對象查找時先查找私有對象池;如果請求類型是無狀態(tài),則必須將被請求的對象放入公用對象池;如果請求類型為默認,則根據對象本身的屬性,如對象內存大小、對象的初始化時間等來決定處理。
為了負載平衡,可以采用多臺WEB服務器,如圖5所示。圖5中由兩臺WEB服務器同智能調度器相連,每臺設置相應的對象緩沖閥值。當多個客戶端請求其中某一臺服務器,智能調度器判斷該WEB服務器的對象調度請求超過該對象緩沖閥值,則就將所述請求轉發(fā)給另一服務器處理,以達到負載均衡,從而增加整個系統(tǒng)的吞吐量。其中,所述對象緩沖閥值可以是對WEB服務器的調度請求、對WEB服務器公有對象池的調度請求或者對私有對象池的調度請求等超過某一數(shù)值。
智能調度器接受來自客戶端的請求后,還可以依據當前的實際負載和預先設置的服務器極限負載量來決定是否接受所述請求,如果服務器負載已經超過預先設置的服務器極限負載量,則將丟棄所述請求。
本發(fā)明公開一種智能調度器,如圖6所示,其包括客戶端請求接收模塊、對象查找模塊、公用對象池管理模塊、私用對象池管理模塊,其中,客戶端請求接收模塊用于同服務端樁相連,以接收Applet發(fā)起的調用請求,并將所述請求轉發(fā)至對象查找模塊;所述對象查找模塊用于同WEB服務器、公有對象池、私有對象池及服務端樁相連,接收客戶端請求接收模塊轉發(fā)的請求,依據請求查找私有對象池、公有對象池或WEB服務器,將查找結果轉發(fā)至公用對象池管理模塊、或私用對象池管理模塊;私有對象池管理模塊同對象查找模塊交互,接受查找結果進行私有對象池的操作與管理,所述操作與管理包括,將所述請求對象放入私有對象池、將對象從私有對象池移除、將所述對象傳送至服務端樁、設置所述對象的生命周期或者私有對象池的生命周期等;公有對象池管理模塊同對象查找模塊交互,接受查找結果進行公有對象池的操作與管理,所述操作與管理包括,將所述請求對象放入公有對象池、將對象從公有對象池移除、將所述對象傳送至服務端樁、設置所述對象的生命周期或者私有對象池的生命周期等。
所述對象查找模塊也可以將請求轉發(fā)至服務端樁。
本發(fā)明還公開一種智能調度器,如圖7所示,其包括客戶端請求接收模塊、對象查找模塊、請求處理模塊、公用對象池管理模塊、私用對象池管理模塊、調度策略模塊,其中,客戶端請求接收模塊用于同服務端樁相連,以接收Applet發(fā)起的調用請求,并將所述請求轉發(fā)至調度策略模塊;所述對象查找模塊用于同WEB服務器、公有對象池、私有對象池相連及服務端樁,接收調度策略模塊下發(fā)的查詢指令,依據指令查找私有對象池、公有對象池或WEB服務器,將查找結果轉發(fā)至調度策略模塊、公用對象池管理模塊、或私用對象池管理模塊;調度策略模塊用于同對象查找模塊、客戶端請求接收模塊、公用對象池管理模塊、私用對象池管理模塊、請求處理模塊相連,依據客戶端請求收接模塊發(fā)送的調用請求,根據預先設置的配置參數(shù)對該請求的處理方式,如拋棄請求、將請求透傳至其他服務器,并依據所述處理方式向對象查找模塊、請求處理模塊下發(fā)相應的查找或處理命令,并依據對象查找模塊、請求處理模塊返回的處理信息返回至私有對象池管理模塊及公有對象池管理模塊;請求處理模塊同調度策略模塊相連,接受調度策略模塊下發(fā)的處理指令對所述請求進行處理;私有對象池管理模塊同對象查找模塊及調度策略模塊交互,接受查找結果及調度策略指令進行私有對象池的操作與管理;公有對象池管理模塊同對象查找模塊及調度策略模塊交互,接受查找結果及調度策略指令進行公有對象池的操作與管理。
所述對象查找模塊也可以將請求轉發(fā)至服務端樁。
權利要求
1.一種應用程序訪問Web服務器端對象的實現(xiàn)方法,其特征在于,在小應用程序和Web服務器之間設置一個輕量級適配器,輕量級適配器分為客戶端樁和服務端樁,所述方法包括如下步驟A、小應用程序向Web服務器端發(fā)起調用請求;B、客戶端樁攔截所小應用程序對服務器的請求并通過內置隧道把請求提交給服務端樁;C、服務端樁將所述請求傳遞至Web服務器,由Web服務器端的控制器對所述請求進行調度。
2.如權利要求1所述的方法,其特征在于,步驟B進一步包括客戶端樁對請求進行編碼,將編碼后的請求提交給服務端樁;步驟C進一步包括服務端樁對所述請求進行解碼后將所述請求傳遞至Web服務器。
3.如權利要求1所述的方法,其特征在于,步驟C中,控制器調度請求時包括下述步驟C1、確定調用請求的對象是否在預先設置的私有對象池中,若在,則從私有對象池中獲取對象使其經由服務端樁和客戶端樁返回至小應用程序,否則進行步驟C2;C2、查找預先設置的公有對象池中是否有可用對象,若有,則使該對象通過服務端樁和客戶端樁返回至小應用程序,否則進行步驟C3;C3、直接調度Web服務器獲取可用對象,并使該對象經服務端樁和客戶端樁返回至小應用程序。
4.如權利要求3所述的方法,其特征在于,在步驟C2中,從公有池獲取可用對象后,由公有對象池直接將該可用對象經由服務端樁和客戶端樁返回至小應用程序,或者,先將該對象移到私有對象池中,由私有對象池獲取對象并經服務端樁和客戶端樁返回至小應用程序;或者,在步驟C3中,從Web服務器獲取可用對象后,將該對象初始化后放到公有對象池中,由公有對象池直接將可用對象獲取對象依次經服務端樁和客戶端樁返回至小應用程序,或直接將所述可用對象放置于私有對象池,再由私有對象池將獲取對象依次經服務端樁和客戶端樁返回至小應用程序,或直接將對象依次經服務端樁和客戶端樁返回至小應用程序。
5.如權利要求1所述的方法,其特征在于,步驟A所述小應用程序發(fā)起的調用請求中攜帶有客戶端指定的請求類型,步驟C進一步包括依據請求類型進行請求調度。
6.如權利要求5所述的方法,其特征在于,所述請求類型包括有狀態(tài)、無狀態(tài)、默認;步驟C所述進行請求調度進一步包括當所述請求類型是有狀態(tài)時,將被請求的對象放入私有對象池;當所述請求類型是無狀態(tài)時,將被請求的對象放入公有對象池;當所述請求類型是確認時,依據被請求對象的屬性決定處理方式。
7.如權利要求1所述的方法,其特征在于,步驟C所述進行請求調度進一步包括依據服務器的實際負載,及已經預先設置的服務器極限負載量,決定是否丟棄所述請求或者將其轉由其他服務器處理。
8.如權利要求3所述的方法,其特征在于,所述公有對象池依據Web服務端對象屬性存放相應對象進一步包括公有對象池依據Web服務器端對象最近被調用頻率、對象的內存大小、對象平均執(zhí)行時間或對象初始化的時間決定是否將對象放入公有對象池或者將其刪除。
9.如權利要求3所述的方法,其特征在于,建立私有對象池存放遠程調用者相應的調取對象進一步包括為私有對象池設置生命周期,如遠程調用在該生命周期內未對私有對象池中的對象進行調用,則刪除所有的對象,包括對象池本身;或依據私有對象池中的每個對象的調用屬性更新私有對象池中保存的相應對象。
10.如權利要求1所述的方法,其特征在于,步驟C所述控制器是指Web服務器端內部的Servlet或者獨立于Web服務器端的第三方調度器。
11.一種智能調度器,其特征在于,所述調度器包括客戶端請求接收模塊、對象查找模塊、公用對象池管理模塊、私用對象池管理模塊,其中,客戶端請求接收模塊用于同服務端樁相連,以接收Applet發(fā)起的調用請求,并將所述請求轉發(fā)至對象查找模塊;所述對象查找模塊用于同Web服務器、公有對象池及私有對象池相連,接收客戶端請求接收模塊轉發(fā)的請求,依據請求查找私有對象池、公有對象池或Web服務器,將查找結果轉發(fā)至公用對象池管理模塊、或私用對象池管理模塊;私有對象池管理模塊同對象查找模塊交互,接受查找結果進行私有對象池的操作與管理;公有對象池管理模塊同對象查找模塊交互,接受查找結果進行公有對象池的操作與管理。
12.一種智能調度器,其特征在于,所述調度器,包括客戶端請求接收模塊、對象查找模塊、請求處理模塊、公用對象池管理模塊、私用對象池管理模塊、調度策略模塊,其中,客戶端請求接收模塊用于同服務端樁相連,以接收Applet發(fā)起的調用請求,并將所述請求轉發(fā)至調度策略模塊;所述對象查找模塊用于同Web服務器、公有對象池及私有對象池相連,接收調度策略模塊下發(fā)的查詢指令,依據指令查找私有對象池、公有對象池或Web服務器,將查找結果轉發(fā)至調度策略模塊、公用對象池管理模塊、或私用對象池管理模塊;調度策略模塊用于同對象查找模塊、客戶端請求接收模塊、公用對象池管理模塊、私用對象池管理模塊、請求處理模塊相連,依據客戶端請求收接模塊發(fā)送的調用請求,確定對該請求的處理方式,將所述處理指令下發(fā)至對象查找模塊或請求處理模塊,并接受對象查找模塊或請求處理模塊返回的處理信息并發(fā)送至私有對象池管理模塊或公有對象池管理模塊;請求處理模塊同調度策略模塊相連,接受調度策略模塊下發(fā)的處理指令對所述請求進行處理;私有對象池管理模塊同對象查找模塊及調度策略模塊交互,接受查找結果及調度策略指令進行私有對象池的操作與管理;公有對象池管理模塊同對象查找模塊及調度策略模塊交互,接受查找結果及調度策略指令進行公有對象池的操作與管理。
全文摘要
本發(fā)明公開了一種應用程序訪問Web服務器端對象的實現(xiàn)方法,該方法在小應用程序和Web服務器之間設置一個輕量級適配器,輕量級適配器分為客戶端樁和服務端樁;當小應用程序向Web服務器端發(fā)起調用請求時,由客戶端樁攔截所小應用程序對服務器的請求并通過內置隧道把請求提交給服務端樁;服務端樁將所述請求傳遞至Web服務器,由控制器對所述請求進行調度。本發(fā)明所述的方法不需要開設專門的監(jiān)聽服務,解決單純的Applet直接調用的復雜性和難調試問題。
文檔編號H04L29/06GK1842071SQ20051005931
公開日2006年10月4日 申請日期2005年3月28日 優(yōu)先權日2005年3月28日
發(fā)明者黃各民 申請人:華為技術有限公司