專利名稱:自適應會話壓縮管理方法、壓縮管理器及會話管理系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及應用服務器中的會話管理,具體地,涉及應用服務器中的自適應會話壓縮技術。
背景技術:
隨著計算機網絡的發(fā)展,各種應用服務器應運而生。從歷史角度來看,Web應用服務器是從各種中間件產品和技術中脫化而來的。Web應用服務器(或簡稱為應用服務器)是分布式中間件軟件實施產品,其作用相當于一個接口,一端連接的是的各種類型的客戶機,而另一端連接的是各類后臺系統(tǒng)資源。它負責管理客戶請求,為業(yè)務邏輯提供宿主環(huán)境,連接數(shù)據(jù)、事務處理、目錄等后端計算資源。通常,在客戶機與應用服務器之間是通過HTTP協(xié)議來傳輸數(shù)據(jù)的,而HTTP協(xié)議是一種無狀態(tài)協(xié)議,也就是說,應用服務器將對于每一頁的每一次訪問都當作相互無關的訪問來處理,而不保留前一次訪問的任何信息,即使訪問就發(fā)生在當前訪問的幾秒鐘之前,因此,應用服務器并不了解有關同一客戶機以前請求的任何信息。
于是,為了彌補HTTP協(xié)議的這一不足,通常在應用服務器中使用會話管理器來管理所有會話狀態(tài)信息。會話管理器的作用象一個散列表,對于每個新的會話都產生一個唯一的標識符,稱為會話ID,以該會話ID作為關鍵值保存所有會話狀態(tài)信息。在客戶機對應用服務器進行訪問期間,會話管理器會對這些會話狀態(tài)信息進行維護。同時,會話ID還以Cookie的形式保存在客戶端的瀏覽器中。
會話狀態(tài)信息通??梢员4嬖趹梅掌鞯膬却?、文件或數(shù)據(jù)庫中,這樣就有三種會話管理機制基于內存的會話管理、基于文件的會話管理和基于數(shù)據(jù)庫的會話管理。
基于內存的會話管理是運行速度最快的一種機制,它一般在應用服務器的內存中專門開辟一塊共享內存區(qū)域,在這片內存區(qū)域中可直接快速地存取會話狀態(tài)信息。這種機制對應用服務器的系統(tǒng)配置要求較高,需要系統(tǒng)資源能夠承載較高的訪問量,否則不僅不能提高訪問速度,相反地還會因系統(tǒng)資源不足造成服務器負載過重。
基于文件的會話管理是使用最廣泛的一種機制,會話狀態(tài)信息一般以文本文件的形式存放在應用服務器的硬盤中。這種機制易于實現(xiàn),對服務器的系統(tǒng)配置要求不高,但是存放會話狀態(tài)信息的文件之間缺乏邏輯聯(lián)系,當并發(fā)的訪問量很大時會話管理的文件數(shù)目將增長很快,這不僅大大增加設計會話管理機制的難度,也會相應地影響存取會話信息的速度。
基于數(shù)據(jù)庫的會話管理是最容易擴展的一種機制,它需要應用服務器有一個網絡數(shù)據(jù)庫系統(tǒng)支撐,會話狀態(tài)信息全部存放在網絡數(shù)據(jù)庫中,在數(shù)據(jù)庫系統(tǒng)的支持下會話管理可以充分利用數(shù)據(jù)庫具有的事務處理、安全存取和數(shù)據(jù)完整性檢驗等機制,有效地管理所有的會話狀態(tài)信息。
會話管理技術的采用,不僅解決了會話狀態(tài)信息的存取問題,而且大大方便了應用服務器應用程序的開發(fā)。
但是,無論采用哪一種會話管理機制,當用戶經常需要建立較多或較大的會話對象時,將會占用應用服務器的大量存儲空間。尤其是在會話關系密切和持續(xù)環(huán)境下或在系統(tǒng)負載繁重環(huán)境下,應用服務器的性能和能力將會極大地降低。大對象的序列化/反序列化及I/O將成為應用服務器的瓶頸。
因此,需要有一種技術能夠有效地減輕用戶會話狀態(tài)信息為系統(tǒng)帶來的負擔。
發(fā)明內容
為了解決上述問題,本發(fā)明提出一種應用服務器中的自適應會話壓縮管理方法和壓縮管理器,通過根據(jù)需要保存的會話狀態(tài)信息的大小和系統(tǒng)資源狀況(如CPU、內存)自動選擇最優(yōu)的壓縮器和壓縮方式,對用戶的會話狀態(tài)信息進行自適應壓縮,從而提升了應用服務器的性能。
根據(jù)本發(fā)明的一個方面,提供了一種應用服務器中的自適應會話壓縮管理器,包括壓縮判斷部件,用于根據(jù)會話狀態(tài)信息以及與系統(tǒng)資源狀況有關的配置信息,判斷是否需要對所述會話狀態(tài)信息進行壓縮;壓縮方式決策部件,用于在需要對所述會話狀態(tài)信息進行壓縮的情況下,根據(jù)應用服務器的系統(tǒng)資源狀況,確定最優(yōu)的壓縮器和壓縮方式,并通知相應的壓縮器;以及壓縮器,用于根據(jù)來自壓縮方式決策部件的命令,對會話狀態(tài)信息進行壓縮。
根據(jù)本發(fā)明的另一方面,提供了一種應用服務器中的自適應會話壓縮管理方法,包括獲取來自應用服務器中的會話管理器的被指示為需要保存的會話狀態(tài)信息;根據(jù)該會話狀態(tài)信息以及與系統(tǒng)資源狀況有關的配置信息確定是否對該會話狀態(tài)信息進行壓縮;在需要對該會話狀態(tài)信息進行壓縮時,根據(jù)該應用服務器的系統(tǒng)資源狀況確定最優(yōu)的壓縮器和最優(yōu)的壓縮方式,對該會話狀態(tài)信息進行壓縮;以及將所述會話狀態(tài)信息存儲在會話管理器的指定位置,在該會話狀態(tài)信息經過壓縮的情況下,將對其進行壓縮的壓縮器的類型信息隨同該會話狀態(tài)信息一起存儲。
根據(jù)本發(fā)明的另一方面,提供了一種自適應會話管理系統(tǒng),包括會話管理器,用于對用戶與應用的會話狀態(tài)信息進行管理和維護;會話狀態(tài)信息呈遞部件,用于在上述會話管理器與應用之間傳遞用戶的會話狀態(tài)信息;接口單元,用戶或該應用服務器的系統(tǒng)管理員通過該接口在配置文件中設置配置信息;以及上述的應用服務器中的自適應會話壓縮管理器。
本發(fā)明的優(yōu)點在于1.根據(jù)本發(fā)明的應用服務器中的自適應會話壓縮,可以在會話信息中有大對象時提高系統(tǒng)性能。由于Java程序在大對象序列化和反序列化時需要花費大量的時間,而將大的對象壓縮后可以大大減少這個時間,從而能夠提升系統(tǒng)性能。
2.根據(jù)本發(fā)明的應用服務器中的自適應會話壓縮,可以增加應用服務器中能夠承載的用戶數(shù)量。通過對系統(tǒng)資源更有效的使用,可以使得CPU和內存等資源都得到比較平均的負載,從而增加系統(tǒng)容量。
3.根據(jù)本發(fā)明的應用服務器中的自適應會話壓縮,通過對會話信息的壓縮和管理,能夠提高系統(tǒng)容錯性。
相信通過以下結合附圖對本發(fā)明具體實施方式
的說明,能夠使人們更好地了解本發(fā)明上述的特點、優(yōu)點和目的。
圖1是根據(jù)本發(fā)明一個實施例的自適應會話管理系統(tǒng)的示意圖;圖2是根據(jù)本發(fā)明一個實施例的應用服務器中的自適應會話壓縮管理器的方框圖;圖3是根據(jù)本發(fā)明一個實施例的應用服務器中的自適應會話壓縮管理方法中壓縮過程的流程圖;以及圖4是根據(jù)本發(fā)明一個實施例的應用服務器中的自適應會話壓縮管理方法中解壓縮過程的流程圖。
具體實施例方式
首先,在對本發(fā)明優(yōu)選實施方式進行詳細描述之前,先來了解一下應用服務器中的會話管理機制。下面以Servlet的會話管理機制為例進行說明。
如上所述,HTTP是一種無狀態(tài)的協(xié)議。這意味著Web應用并不了解有關同一用戶以前請求的信息。維持會話信息的方法之一是使用Servlet或者JSP容器提供的會話跟蹤功能。Servlet API規(guī)范定義了一個簡單的HttpSession接口,通過它可以方便地實現(xiàn)會話跟蹤。
HttpSession接口提供了存儲和返回標準會話屬性的方法。標準會話屬性如會話標識符、應用數(shù)據(jù)等,都以“名字-值”對的形式保存。簡而言之,HttpSession接口提供了一種將對象保存到內存、在同一用戶的后繼請求中提取這些對象的標準方法。在會話中保存數(shù)據(jù)的方法是setAttribute(Strings,Object o),從會話提取原來所保存對象的方法是getAttribute(String s)。
要獲得HttpSession對象,可以調用HttpServletRequest對象的getSession方法。為了正確地維持會話狀態(tài),必須在發(fā)送任何應答內容之前調用getSession方法。
每當新用戶請求一個使用了HttpSession對象的JSP頁面,JSP容器除了發(fā)回應答頁面之外,它還要向瀏覽器發(fā)送一個特殊的數(shù)字。這個特殊的數(shù)字稱為“會話標識符”,它是一個唯一的用戶標識符。此后,HttpSession對象就駐留在內存之中,等待同一用戶返回時再次調用它的方法。
在客戶端,瀏覽器保存會話標識符,并在每一個后繼請求中將這個會話標識符發(fā)送給服務器。會話標識符告訴JSP容器當前請求不是用戶發(fā)出的第一個請求,服務器以前已經為該用戶創(chuàng)建了HttpSession對象。此時,JSP容器不再為用戶創(chuàng)建新的HttpSession對象,而是尋找具有相同會話標識符的HttpSession對象,然后建立該HttpSession對象和當前請求的關聯(lián)。
會話標識符以Cookie的形式在服務器和瀏覽器之間傳送。如果瀏覽器不支持Cookie,則用戶對服務器的后繼請求將不會帶有會話標識符。結果,JSP容器認為該請求來自一個新用戶,它會再創(chuàng)建一個HttpSession對象,而以前創(chuàng)建的HttpSession對象仍舊駐留在內存中,但該用戶以前的會話信息卻丟失了。
在HTTP協(xié)議中,當用戶不再活動時不存在顯式的終止信號。由于這個原因,應用服務器不知道用戶是否還要再次返回,如果不采取某種方法解決這個問題,內存中會積累起大量的HttpSession對象。
因此,用戶會話既可以用手工方法作廢,也可以自動作廢。作廢會話意味著從內存中刪除HttpSession對象以及它的數(shù)據(jù)。例如,如果一定時間之內(默認30分鐘)用戶不再發(fā)送請求,Java Web Server自動地作廢該用戶的會話。
Servlet/JSP會話跟蹤機制有著一定的局限,即會話對象保存在應用服務器的內存之中,占用了可觀的資源。
因此,本發(fā)明的主要思想是增強應用服務器中的會話管理系統(tǒng),使之能夠根據(jù)需要保存的會話狀態(tài)信息的大小、系統(tǒng)資源狀況(如CPU或內存)來自動選擇最優(yōu)的壓縮器和壓縮方式來對會話狀態(tài)信息進行自適應壓縮,以達到增強會話管理系統(tǒng)的性能、提高應用服務器能承載的會話數(shù)、提高系統(tǒng)容錯性的目的。
下面結合附圖對本發(fā)明的優(yōu)選實施例進行詳細的說明。
根據(jù)本發(fā)明的一個方面,提供了一種自適應會話管理系統(tǒng)。下面就結合附圖對該系統(tǒng)進行詳細說明。
圖1是根據(jù)本發(fā)明一個實施例的自適應會話管理系統(tǒng)的示意圖。本實施例的自適應會話管理系統(tǒng)對應用服務器中的會話狀態(tài)信息進行自適應的管理和維護。
如圖1所示,本實施例的自適應會話管理系統(tǒng)110駐留在應用服務器100上,包括會話狀態(tài)信息呈現(xiàn)部件120和130、會話管理器140、自適應會話壓縮管理器150和接口單元160。
會話狀態(tài)信息呈現(xiàn)部件120,用于獲取用戶與應用交互過程中的會話狀態(tài)信息,并通過與會話管理器140之間的接口傳遞給會話管理器,以在會話管理器140中對此會話狀態(tài)信息進行管理和維護。
會話狀態(tài)信息呈現(xiàn)部件130,用于接收對在會話管理器中進行維護的會話狀態(tài)信息的檢索請求,根據(jù)該請求通過與會話管理器140的接口從會話管理器140中提取相應的會話狀態(tài)信息,并在經過自適應會話壓縮管理器150的自適應解壓縮之后呈現(xiàn)給應用。
會話管理器140用于對會話狀態(tài)信息進行保存和管理。在會話管理器140中,優(yōu)選地將會話狀態(tài)信息作為會話狀態(tài)對象,在會話ID的索引下進行維護。在會話管理器140中,可采用基于內存的會話管理機制、基于文件的會話管理機制或基于數(shù)據(jù)庫的會話管理機制中的任何一種。在本實施例中,會話管理器140可采用現(xiàn)有的任何類型的會話管理器。會話管理器140接收到來自應用的新建會話的會話狀態(tài)信息、或應用對已建立的會話進行了更新之后的會話狀態(tài)信息時,會話管理器140首先將該會話狀態(tài)信息傳遞給自適應會話壓縮管理器150,同時指示該會話狀態(tài)信息是新建或更新后需要保存的會話狀態(tài)信息,以對其進行自適應壓縮,然后再將壓縮后的會話狀態(tài)信息保存在指定位置。此外,在某一應用向會話管理器140請求讀出已有會話狀態(tài)信息時,會話管理器140從指定位置提取出所請求的已有會話狀態(tài)信息,并將其傳遞給自適應會話壓縮管理器150,同時指示該會話狀態(tài)信息是需要呈現(xiàn)給應用的會話狀態(tài)信息,以對其進行自適應解壓縮,然后再通過會話狀態(tài)信息呈現(xiàn)部件130將其呈現(xiàn)給應用。會話管理器140與自適應會話壓縮管理器150之間通過接口互相傳遞會話狀態(tài)信息等有關信息。
自適應會話壓縮管理器150,一方面,用于根據(jù)需要保存的會話狀態(tài)信息的大小和系統(tǒng)資源狀況(如CPU、內存)自動選擇最優(yōu)的壓縮器和壓縮方式對來自會話管理器140的被指示為需要保存的會話狀態(tài)信息進行自適應壓縮,并將所使用的壓縮器的類型信息與壓縮后的會話狀態(tài)信息一起傳遞給會話管理器140,以便進行保存。另一方面,對于被指示為要從會話管理器140呈現(xiàn)給應用的已有會話狀態(tài)信息,判斷是否需要對其進行解壓縮,以及在需要對其進行解壓縮時,根據(jù)與該會話狀態(tài)信息一起存儲的壓縮器的類型信息,以相應的解壓縮器對其進行解壓縮,并將解壓縮后的會話狀態(tài)信息返回給會話管理器140,以便呈現(xiàn)給請求該信息的應用。
用戶或該應用服務器的系統(tǒng)管理員通過接口單元160在配置文件中設置壓縮閾值、壓縮器和壓縮方式等配置信息。
圖2是根據(jù)本發(fā)明一個實施例的應用服務器中的自適應會話壓縮管理器的方框圖。
如圖所示,該自適應會話壓縮管理器150包括會話狀態(tài)信息緩存部件1510、配置信息獲取部件1520、壓縮/解壓縮判斷部件1530、壓縮/解壓縮方式決策部件1540及壓縮/解壓縮器1550。
會話狀態(tài)信息緩存部件1510用于緩存來自應用服務器的會話管理器的新創(chuàng)建或更新后的被指示為需要保存的會話狀態(tài)信息、或會話管理器從指定位置讀出的被指示為要呈現(xiàn)給請求該信息的應用的會話狀態(tài)信息,以由該自適應會話壓縮管理器對其進行自適應壓縮/解壓縮。會話狀態(tài)信息緩存部件1510與會話管理器140之間具有可傳遞會話狀態(tài)信息及其相關信息的接口。
配置信息獲取部件1520用于從一配置文件中獲取由用戶或該應用服務器的系統(tǒng)管理員設置的配置信息,例如,壓縮閾值、壓縮器和壓縮方式等。以下示出了一個配置文件的例子[閾值]//會話狀態(tài)信息大小超過多少開始壓縮,例如500kSize=500,000[壓縮器]//用戶可以在這里指定所希望使用的壓縮器Zip=ZipcompressorRar=Rarcompressor…[CPU]//用戶在這里可以指定CPU使用率與對應的壓縮方式之間的關系,如最大、或不壓縮等,數(shù)字表示百分比20=Best50=Normal70=Fast80=None[內存]//用戶在這里可以指定內存使用率與壓縮方式之間的關系,數(shù)字表示百分比20=Fast50=Normal70=Best
…在本實施例中,一方面,壓縮/解壓縮判斷部件1530將會話狀態(tài)信息緩存部件1510中被指示為需要保存到會話管理器140中的會話狀態(tài)信息的大小與配置文件中的壓縮閾值進行比較,判斷是否對該會話狀態(tài)信息進行壓縮。當該會話狀態(tài)信息的大小超過該閾值時,通知壓縮方式決策部件1540選取最優(yōu)的壓縮方式。另一方面,壓縮/解壓縮判斷部件1530判斷會話狀態(tài)信息緩存部件1510中被指示為需要呈現(xiàn)給請求該信息的應用的已有會話狀態(tài)信息是否經過了壓縮。如果該信息經過了壓縮,則將此情況通知給壓縮/解壓縮方式決策部件1540。
壓縮/解壓縮方式決策部件1540,一方面,根據(jù)壓縮/解壓縮判斷部件1530的指示,基于配置文件中設置的希望使用的壓縮器和對壓縮方式的要求、以及該應用服務器的系統(tǒng)資源狀況,選取最優(yōu)的壓縮器和最優(yōu)的壓縮方式,并通知壓縮/解壓縮器1550中該最優(yōu)的壓縮器對會話狀態(tài)信息緩存部件1510中當前被指示為需要壓縮的會話狀態(tài)信息進行壓縮。另一方面,壓縮/解壓縮方式決策部件1540,根據(jù)壓縮/解壓縮判斷部件1530的指示,獲取與會話狀態(tài)信息緩存部件1510中當前被指示為需要解壓縮的會話狀態(tài)信息一起存儲的壓縮器的類型信息,確定與該壓縮器對應的解壓縮器,并通知給壓縮/解壓縮器1550中該相應的解壓縮器對其進行解壓縮。在本實施例中,與上面所述的壓縮器對應的解壓縮器為Zipdecompressor和Rardecompressor。
需要說明的是,在本實施例中,即使壓縮/解壓縮判斷部件1530根據(jù)會話狀態(tài)信息的大小與配置文件中的壓縮閾值,判斷應對會話狀態(tài)信息進行壓縮,壓縮/解壓縮方式決策部件1540也可能根據(jù)應用服務器的系統(tǒng)資源狀況做出不進行壓縮的決定。例如,在CPU使用率超過80%時,壓縮/解壓縮方式決策部件1540選取的最優(yōu)壓縮器和最優(yōu)的壓縮方式將是“None”,即不進行壓縮。在此情況下,壓縮/解壓縮方式決策部件1540不激活任何壓縮/解壓縮器,會話狀態(tài)信息緩存部件1510會將原始會話狀態(tài)信息返回給會話管理器140。
壓縮/解壓縮器1550中由壓縮/解壓縮方式決策部件1540確定的壓縮/解壓縮器在壓縮/解壓縮方式決策部件1540的指示下,以所確定的最優(yōu)壓縮/解壓縮方式對會話狀態(tài)信息緩存部件1510中的會話狀態(tài)信息進行壓縮/解壓縮。在壓縮的情況下,將對會話狀態(tài)信息進行壓縮操作的壓縮器的類型信息與該壓縮后的會話狀態(tài)信息一起存儲在會話狀態(tài)信息緩存部件1510中。而該會話狀態(tài)信息緩存部件1510則將壓縮后的會話狀態(tài)信息與壓縮器的類型信息一起返回給會話管理器140。在解壓縮的情況下,對指定會話狀態(tài)信息進行解壓縮操作的解壓縮器將解壓縮后的信息存儲在會話狀態(tài)信息緩存部件1510中,進而,會話管理器140將其通過會話狀態(tài)信息呈現(xiàn)部件130呈現(xiàn)給請求的應用。
需要指出的是,在壓縮/解壓縮判斷部件1530確定不需要對被指示為將要保存在會話管理器140中的會話狀態(tài)信息進行壓縮的情況下,會話狀態(tài)信息緩存部件1510將該信息直接返回給會話管理器140。此外,在不需要對被指示為要呈現(xiàn)給應用的會話狀態(tài)信息進行解壓縮的情況下,自適應會話壓縮管理器150可以將該信息通過會話狀態(tài)信息呈現(xiàn)部件130直接返回給請求的應用。
此外還需要指出的是,盡管在以上實施例中,將與解壓縮有關的部件也包括在自適應會話壓縮管理器150中,但是對于本領域一般技術人員來說很明顯,這些與解壓縮有關的部件也可以從自適應會話壓縮管理器150中分離出去,集成為一個單獨的部件。
與此相應,根據(jù)本發(fā)明的另一方面,提出了一種應用服務器中的自適應會話壓縮管理方法。該方法包括兩方面一方面是對新建或更新后需要保存在會話管理器中的會話狀態(tài)信息進行的自適應壓縮過程,另一方面是對會話管理器從指定位置讀出需要呈現(xiàn)給請求應用的會話狀態(tài)信息進行的自適應解壓縮過程。圖3是根據(jù)本發(fā)明一個實施例的應用服務器中的自適應會話壓縮管理方法中壓縮過程的流程圖。
如圖所示,在步驟310,獲取來自應用服務器的會話管理器的被指示為新創(chuàng)建或更新后需要保存的會話狀態(tài)信息。
在步驟320,判斷該會話狀態(tài)信息的大小是否超過預設的壓縮閾值。其中,該閾值由用戶或應用服務器的系統(tǒng)管理員在配置文件中設定。該配置文件如上面所描述的那樣。在該步驟中,如果該會話狀態(tài)信息的大小超過配置文件中的壓縮閾值,則該過程轉到步驟330,否則,該過程轉到步驟350。
在步驟330,根據(jù)配置文件中設置的希望使用的壓縮器和對壓縮方式的要求,并根據(jù)該應用服務器的系統(tǒng)資源狀況確定最優(yōu)的壓縮器和最優(yōu)的壓縮方式。
然后,在步驟340,利用上述步驟中確定的最優(yōu)的壓縮器和壓縮方式,對該會話狀態(tài)信息進行壓縮。
然后,在步驟350,將該會話狀態(tài)信息與壓縮器的類型信息一起存儲在會話管理器中。若該信息未經壓縮,則直接存儲該會話狀態(tài)信息,而無壓縮器類型信息。
將上述會話狀態(tài)信息存儲在會話管理器的指定位置,在該會話狀態(tài)信息經過壓縮的情況下,將對其進行壓縮的壓縮器的類型信息隨同該會話狀態(tài)信息一起存儲。
對于上述過程,可通過使用應用服務器的公共接口HttpSession的setAttribute(java.lang.String,java.lang.Object)函數(shù)將會話狀態(tài)信息作為會話狀態(tài)對象,來實現(xiàn)用戶自定義的會話狀態(tài)信息的保存。下面是具體的代碼實現(xiàn)public class xHttpSession{//保存的會話狀態(tài)對象HttpSession session=null;//自適應會話壓縮管理器AdaptiveSessionManager asm=AdaptiveSessionManager.getInstance();
//構造函數(shù)public xHttpSession(HttpSession session){this.session=session;}//保存會話信息public setAttribute(String key,object value){//檢查是否需要壓縮if(asm.check(value)==true){//如果需要壓縮,那么由自適應會話壓縮管理器選擇合適的壓縮//器進行壓縮,并將壓縮后的值放入原本的會話管理器object newValue=asm.getCompressor().compress(value);session.setAttribute(key,newValue);}}與此相應,在經上述壓縮過程進行了自適應壓縮的會話狀態(tài)信息需要再次呈現(xiàn)時,需要對其進行解壓縮。因此,在本發(fā)明的應用服務器中的自適應會話壓縮管理方法中還存在相應的自適應解壓縮過程,該過程的操作對象是經歷了上述自適應壓縮過程的會話狀態(tài)信息。圖4是根據(jù)本發(fā)明一個實施例的應用服務器中的自適應壓縮管理方法中解壓縮過程的流程圖。
如圖所示,在步驟410,獲取會話管理器從指定位置中提取出的被指示為要呈現(xiàn)給請求應用的會話狀態(tài)信息。
在步驟420,判斷該會話狀態(tài)信息是否經過壓縮。如果該信息經過壓縮,則該過程前進到步驟430,否則,該過程結束。
在步驟430,提取出在會話管理器中與該會話狀態(tài)信息一起存儲的壓縮器的類型信息。
在步驟440,根據(jù)在步驟430中提取出的壓縮器的類型信息,確定相應的解壓縮器。
在步驟450,利用在步驟440中確定的解壓縮器,對該會話狀態(tài)信息進行解壓縮。
在步驟460,將解壓縮后的該會話狀態(tài)信息通過該應用服務器的呈現(xiàn)邏輯返回給請求該會話狀態(tài)信息的應用。
對于上述方法,可通過使用應用服務器的公共接口HttpSession的getAttribute(java.lang.String)函數(shù)來實現(xiàn)用戶自定義的會話狀態(tài)信息的讀取。下面是具體的代碼實現(xiàn)//讀取會話狀態(tài)對象public Object getAttribute(String key){//通過系統(tǒng)會話管理器獲取值Object value=session.getAttribute(key);//檢查是否壓縮過的valueif(asm.isCompressed(value)){value=asm.uncompress(value);}return value;}以上,結合實施例對本發(fā)明的應用服務器中的自適應會話壓縮管理方法、壓縮管理器及會話管理系統(tǒng)進行了描述。應當指出,這些實施例只是示例性的,本領域的技術人員可以在此基礎上做出各種改變。
權利要求
1.一種應用服務器中的自適應會話壓縮管理器,包括壓縮判斷部件,用于根據(jù)會話狀態(tài)信息以及與系統(tǒng)資源狀況有關的配置信息,判斷是否需要對所述會話狀態(tài)信息進行壓縮;壓縮方式決策部件,用于在需要對所述會話狀態(tài)信息進行壓縮的情況下,根據(jù)應用服務器的系統(tǒng)資源狀況,確定最優(yōu)的壓縮器和壓縮方式,并通知相應的壓縮器;以及壓縮器,用于根據(jù)來自壓縮方式決策部件的命令,對會話狀態(tài)信息進行壓縮。
2.權利要求1所述的自適應會話壓縮管理器,還包括配置信息獲取部件,用于從一配置文件中獲取由用戶或系統(tǒng)管理員設置的配置信息。
3.權利要求2所述的自適應會話壓縮管理器,其中所述配置信息包括壓縮閾值、壓縮器和壓縮方式。
4.權利要求3所述的自適應會話壓縮管理器,其中所述壓縮閾值包括關于會話狀態(tài)信息大小的閾值和關于應用服務器的系統(tǒng)資源的閾值。
5.權利要求3所述的自適應會話壓縮管理器,其中所述壓縮方式根據(jù)該應用服務器中CPU的使用率設定為最佳壓縮、正常壓縮或不進行壓縮。
6.權利要求3所述的自適應會話壓縮管理器,其中所述壓縮方式根據(jù)該應用服務器中內存的使用率設定為快速壓縮、正常壓縮或最佳壓縮。
7.權利要求1所述的自適應會話壓縮管理器,還包括會話狀態(tài)信息緩存部件,用于緩存來自會話管理器的被指示為需要保存的會話狀態(tài)信息。
8.權利要求7所述的自適應會話壓縮管理器,其中所述會話狀態(tài)信息緩存部件與所述會話管理器之間通過接口傳遞會話狀態(tài)信息及其相關信息。
9.權利要求1所述的自適應會話壓縮管理器,其中所述壓縮器包括Zipcompressor和Rarcompressor。
10.權利要求1-9中任何一項所述的自適應會話壓縮管理器,還包括解壓縮判斷部件,用于獲取來自所述會話管理器的被指示為要呈現(xiàn)給應用的會話狀態(tài)信息,判斷該會話狀態(tài)信息是否經過壓縮,以及在該會話狀態(tài)信息經過壓縮時,通知相應的解壓縮器;以及解壓縮器,用于對會話狀態(tài)信息進行解壓縮。
11.一種應用服務器中的自適應會話壓縮管理方法,包括獲取來自應用服務器中的會話管理器的被指示為需要保存的會話狀態(tài)信息;根據(jù)該會話狀態(tài)信息以及與系統(tǒng)資源狀況有關的配置信息確定是否對該會話狀態(tài)信息進行壓縮;在需要對該會話狀態(tài)信息進行壓縮時,根據(jù)該應用服務器的系統(tǒng)資源狀況確定最優(yōu)的壓縮器和最優(yōu)的壓縮方式,對該會話狀態(tài)信息進行壓縮;以及將所述會話狀態(tài)信息存儲在會話管理器的指定位置,在該會話狀態(tài)信息經過壓縮的情況下,將對其進行壓縮的壓縮器的類型信息隨同該會話狀態(tài)信息一起存儲。
12.權利要求11所述的方法,還包括從一配置文件中獲取由用戶或系統(tǒng)管理員設置的配置信息。
13.權利要求12所述的方法,其中所述配置信息包括壓縮閾值、壓縮器和壓縮方式。
14.權利要求13所述的方法,其中所述壓縮閾值包括關于會話狀態(tài)信息大小的閾值和關于應用服務器的系統(tǒng)資源的閾值。
15.權利要求13所述的方法,其中,所述壓縮方式根據(jù)該應用服務器中CPU的使用率設定為最佳壓縮、正常壓縮或不進行壓縮。
16.權利要求13所述的方法,其中,所述壓縮方式根據(jù)該應用服務器中內存的使用率設定為快速壓縮、正常壓縮或最佳壓縮。
17.權利要求11-16中任何一項所述的方法,還包括獲取來自所述會話管理器的被指示為要呈現(xiàn)給應用的會話狀態(tài)信息;判斷該會話狀態(tài)信息是否經過壓縮;以及在該會話狀態(tài)信息經過壓縮時,根據(jù)與該會話狀態(tài)信息一起存儲的壓縮器的類型信息,利用相應的解壓縮器對該會話狀態(tài)信息進行解壓縮。
18.一種自適應會話管理系統(tǒng),包括會話管理器,用于對用戶與應用的會話狀態(tài)信息進行管理和維護;會話狀態(tài)信息呈遞部件,用于在上述會話管理器與應用之間傳遞用戶的會話狀態(tài)信息;接口單元,用戶或該應用服務器的系統(tǒng)管理員通過該接口在配置文件中設置配置信息;以及權利要求1-10中任一項的應用服務器中的自適應會話壓縮管理器。
全文摘要
本發(fā)明提供了一種應用服務器中的自適應會話壓縮管理方法及壓縮管理器,該壓縮管理方法包括獲取來自應用服務器的會話管理器的被指示為需要保存的會話狀態(tài)信息;根據(jù)該會話狀態(tài)信息以及與系統(tǒng)資源狀況有關的配置信息確定是否對該會話狀態(tài)信息進行壓縮;在需要對該會話狀態(tài)信息進行壓縮時,根據(jù)該應用服務器的系統(tǒng)資源狀況確定最優(yōu)的壓縮器和最優(yōu)的壓縮方式,對該會話狀態(tài)信息進行壓縮;以及,將所述會話狀態(tài)信息存儲在會話管理器的指定位置,在該會話狀態(tài)信息經過壓縮的情況下,將對其進行壓縮的壓縮器的類型信息隨同該會話狀態(tài)信息一起存儲。本發(fā)明確定適當?shù)臅r間和適當?shù)姆绞綄捫畔⑦M行壓縮,能夠極大地提高應用服務器的性能和能力。
文檔編號H04L29/06GK1901537SQ20051008530
公開日2007年1月24日 申請日期2005年7月22日 優(yōu)先權日2005年7月22日
發(fā)明者唐威鋒 申請人:國際商業(yè)機器公司