專利名稱:頁面流會話信息的保存方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種頁面流會話信息的保存方法及裝置。
背景技術(shù):
目前,隨著電信業(yè)務(wù)的不斷發(fā)展,大量基于網(wǎng)頁Web的應(yīng)用程序需要跨頁面來保 持大量的狀態(tài)信息,例如用戶在上一個界面的錄入信息、程序在上一個頁面操作后的中間 處理等信息。過去這些信息數(shù)據(jù)大部分是通過傳統(tǒng)會話session在服務(wù)器端來保存的,這 些會話占用了大量服務(wù)器的內(nèi)存。而由于多數(shù)網(wǎng)頁應(yīng)用程序的系統(tǒng)故障根源都是內(nèi)存消 耗過大而造成的,而其中大量會話數(shù)據(jù)的存在又是造成服務(wù)器內(nèi)存消耗過大的一個重要原 因,因此減少服務(wù)器的內(nèi)存資源占用在構(gòu)建高可靠性的網(wǎng)頁應(yīng)用中具有重大的意義。在現(xiàn)有技術(shù)方案中,應(yīng)用較多的是頁面流技術(shù),例如目前電信行業(yè)大規(guī)模推廣的 WebSphere 分支轉(zhuǎn)換幵發(fā)工具包 BTT(Branch Transformation Toolkit for WebSphere Studio)體系,該體系在界面層就采用了頁面流技術(shù)。對于一個頁面流技術(shù)來說主要包括如 下的組成部分1)頁面流程的描述,這對于頁面流技術(shù)來說是必需的,因為頁面流引擎需要依賴 于頁面流的描述才能判斷一個頁面流是否已經(jīng)結(jié)束;2)頁面流會話數(shù)據(jù)管理系統(tǒng),該系統(tǒng)需要在服務(wù)器端運行一個頁面流會話數(shù)據(jù)的 管理程序,由該程序來管理各類數(shù)據(jù),并在必要的時候進(jìn)行清除,例如頁面流結(jié)束或頁面流 超時等情況下;3)專門為此類功能開發(fā)的客戶端。從上述現(xiàn)有技術(shù)的方案可以看出,現(xiàn)有技術(shù)并沒有真正解決服務(wù)器內(nèi)存資源占用 過高的問題,盡管目前的頁面流技術(shù)不再使用傳統(tǒng)會話來保持頁面流數(shù)據(jù),但由于頁面流 數(shù)據(jù)仍舊需要在服務(wù)器上保存,所以創(chuàng)建了一種新的會話機制,即頁面流會話。但該頁面流 會話機制和傳統(tǒng)的會話機制并沒有實質(zhì)的不同,在實際應(yīng)用中,服務(wù)器端的內(nèi)存消耗依然過高。
發(fā)明內(nèi)容
本發(fā)明實施例提供了一種頁面流會話信息的保存方法及裝置,能夠降低服務(wù)器的 內(nèi)存開銷,從而保證服務(wù)器穩(wěn)定可靠的運行。本發(fā)明實施例提供了一種頁面流會話信息的保存方法,包括當(dāng)客戶端對業(yè)務(wù)的處理頁面進(jìn)行操作時,將服務(wù)器端創(chuàng)建的頁面流會話信息序列 化為字符串;將序列化后的字符串輸出為在所述客戶端中預(yù)置的頁面參數(shù)。本發(fā)明實施例還提供了一種頁面流會話信息的保存裝置,包括序列化單元,用于在客戶端對業(yè)務(wù)的處理頁面進(jìn)行操作時,將服務(wù)器端創(chuàng)建的頁 面流會話信息序列化為字符串;
參數(shù)保存單元,用于將所述序列化單元序列化后的字符串輸出為在所述客戶端中 預(yù)置的頁面參數(shù)。由上述所提供的技術(shù)方案可以看出,當(dāng)客戶端對業(yè)務(wù)的處理頁面進(jìn)行操作時,首 先將服務(wù)器端創(chuàng)建的頁面流會話信息序列化為字符串;然后將序列化后的字符串輸出為在 所述客戶端中預(yù)置的頁面參數(shù)。這樣就可以將頁面流會話信息保存在客戶端的頁面中,從 而降低了服務(wù)器的內(nèi)存開銷,并保證了服務(wù)器端的穩(wěn)定可靠運行。
圖1為本發(fā)明實施例1所提供方法的流程示意圖;圖2為本發(fā)明實施例1所舉的具體例子中業(yè)務(wù)對象的嵌套結(jié)構(gòu)示意圖;圖3為本發(fā)明實施例1所舉具體例子中客戶端和服務(wù)器端進(jìn)行交互的示意圖;圖4為本發(fā)明實施例2所提供裝置的結(jié)構(gòu)示意圖。
具體實施例方式本發(fā)明實施例提供了 一種頁面流會話信息的保存方法及裝置??梢允鬼撁媪鲿?信息保存在客戶端的頁面中,從而降低了服務(wù)器的內(nèi)存開銷,保證了服務(wù)器的穩(wěn)定運行;同 時在服務(wù)器故障時,能夠在其它的服務(wù)器上重建會話信息,從而更大程度的保證了應(yīng)用程 序的可靠運行。實施例1 本發(fā)明實施例1提供了一種頁面流會話信息的保存方法,如圖1所示為 本實施例1所提供方法的流程示意圖,所述方法包括步驟11 當(dāng)客戶端對業(yè)務(wù)的處理頁面進(jìn)行操作時,將服務(wù)器端創(chuàng)建的頁面流會話 信息序列化為字符串。在該步驟11中,當(dāng)客戶端對業(yè)務(wù)的處理頁面進(jìn)行操作,也就是用戶點擊菜單或在 系統(tǒng)中新發(fā)起一個業(yè)務(wù)操作時,客戶端和服務(wù)器端會進(jìn)行相應(yīng)的交互,該服務(wù)器端中的業(yè) 務(wù)應(yīng)用程序就會創(chuàng)建相應(yīng)的頁面流會話信息。在具體實現(xiàn)過程中,該頁面流會話信息可以 頁面流會話對象的形式進(jìn)行保存。在服務(wù)器端創(chuàng)建了相應(yīng)的頁面流會話信息之后,就可以在客戶端的頁面回顯時, 將該頁面流會話信息序列化為相應(yīng)的字符串。在具體實現(xiàn)過程中,將頁面流會話信息序 列化為字符串可以有多種實現(xiàn)方式,例如可以將該頁面流會話信息編碼為基于鍵值對的格 式,以及對象數(shù)據(jù)格式的疊加,使該頁面流會話信息序列化為字符串。舉例來說,例如一個簡單的java對象(java bean)結(jié)構(gòu),其實是和如下的編程表 述Map<String,Object〉一致的,bean的屬性名就映射為Map的“鍵”,而bean的屬性值就 映射為Map的“值”,對于更復(fù)雜的對象模型,往往是此結(jié)構(gòu)的嵌套。另外,一般用于保存狀態(tài)和頁面流會話信息的業(yè)務(wù)對象中也往往用容器類型或者 數(shù)組類型來表征,因此,只要實現(xiàn)以上結(jié)構(gòu)和字符串的映射,即對象樹映射為Map格式,嵌 套的對象映射為嵌套的Map格式,各種容器類型映射為數(shù)組,那么對于通常情況下用于保 存狀態(tài)和頁面流會話信息的業(yè)務(wù)對象都可以映射為字符串。如下表1所示為定義的基本類型的序列化格式,在實際應(yīng)用中,可按下表1所示的 方式進(jìn)行映射或轉(zhuǎn)換
序列化格式 StringString對代表的字符串
i數(shù)/長整數(shù)16進(jìn)制表示的字符串 采用16進(jìn)制表示既可以降低序一
列化后的大小,還可以高效的序 列化和反序列化
其它數(shù)值類型16進(jìn)制表示的字符串
Μ16進(jìn)制表示的字· 曰期和長整型等價
布爾類型 "TVF
表1對于復(fù)雜對象來說,除上表1的方式外還需要利用如下的基本分隔符來完成序列 化的過程,具體如下表2所示
分隔符Ι
“詞分隔符分隔不同的詞,例如不同的屬性名、不同的值
行分隔符 對于數(shù)組類型,分隔不同的對象,形成對象數(shù)
組
T)層次分隔符對于多重結(jié)構(gòu),{}表示其中的一層,其對象的
數(shù)據(jù)結(jié)構(gòu)也可用同樣的方式來描述 "$對象結(jié)構(gòu)-值在對象結(jié)構(gòu)會產(chǎn)生歧義的情況下,增加該描述
分隔符信息來消除歧義
ο轉(zhuǎn)義符按照一定的轉(zhuǎn)義規(guī)則進(jìn)行變化。表 2下面以具體的序列化實例來進(jìn)行說明,首先定義如下的對象結(jié)構(gòu)(用偽碼表示的 復(fù)合對象結(jié)構(gòu))class objl{String a ;
Date d ;}class obj2{String b ;objl[]c ;}class obj3{String f ;obj2 ο ;}然后基于上面的結(jié)構(gòu),對其進(jìn)行賦值,表明如下所示的業(yè)務(wù)對象f = testl//這里“testl”定義為任一字符串,如下同ο為對象ob j2,其定義如下ο. b = test2 ;ο. c的長度為2,其中c
和c[l]分別定義如下c
. a = utestlc
.d = 2009-4-28 (定義為日期,下同)c[l]. a = utest2c[l], d = 2009-4-29經(jīng)過上述的賦值后,在本例中所表明的業(yè)務(wù)對象的嵌套結(jié)構(gòu)如圖2所示,圖2中obj3、obj2和objl是嵌套關(guān)系,越往里其嵌套層次就越深;testl、test2、utestl、utest2、 2009-4-28和2009-4-29所在位置代表對象樹上的葉子節(jié)點,該業(yè)務(wù)對象結(jié)構(gòu)可以使用對 象圖導(dǎo)航語言O(shè)GNL(Object-Graph Navigation Language)表達(dá)式來進(jìn)行表示如下f = testlο. b = test2ο. c
. a = utestlο· c
·d = 2009-4-28ο. c[l]. a = utest2o. c [1]·d = 2009-4-29然后在上述表達(dá)式的基礎(chǔ)上,用本實施例1所述的序列化方式對上述業(yè)務(wù)對象進(jìn) 行序列化,最終形成如下的形式f {testl} , o{b{test2}, c { {a {utest 1} , d {2009_4_28} } ;{a{utest2}, d{2009-4-29}}}}}通過上述的方式就可以完成頁面流會話信息的序列化過程,然后再繼續(xù)進(jìn)行后繼 的操作。步驟12 將序列化后的字符串輸出為在所述客戶端中預(yù)置的頁面參數(shù)。在該步驟12中,在將頁面流會話信息序列化成字符串之后,就可以將該字符串輸出為在所述客戶端中預(yù)置的頁面參數(shù)。這里,所述客戶端中預(yù)置的頁面參數(shù)可以是在客戶 端界面的表單中預(yù)先設(shè)置的用于保存會話信息的變量,在具體實現(xiàn)過程中,可以在客戶端 界面的表單中增加一個tag標(biāo)記參數(shù),利用該標(biāo)記參數(shù)來保存序列化后的頁面會話信息。通過上述步驟的操作,就可以將創(chuàng)建的頁面流會話信息保存在客戶端的頁面中,從而降低了服務(wù)器的內(nèi)存開銷,保證了服務(wù)器的穩(wěn)定運行。另外,當(dāng)客戶端在后繼的頁面操作中,通過所述處理頁面進(jìn)行各種用戶輸入操作 時,可以將該預(yù)置的頁面參數(shù)提交到服務(wù)器端中;然后該服務(wù)器端根據(jù)所獲取的預(yù)置的頁 面參數(shù),重建頁面流會話信息,然后根據(jù)客戶端的具體操作對所述頁面流會話信息進(jìn)行相 應(yīng)的修改操作,例如存儲屬性數(shù)據(jù)、修改原來的某些數(shù)據(jù)或刪除原來部分的會話數(shù)據(jù)等操 作;然后,再將該修改后的頁面流會話信息序列化為新的字符串,并將該新的字符串重新輸 出為所述預(yù)置的頁面參數(shù)進(jìn)行保存。當(dāng)客戶端持續(xù)操作時,可以重復(fù)上述的操作步驟,直到頁面操作結(jié)束;當(dāng)客戶端的 業(yè)務(wù)處理結(jié)束,該客戶端打開新業(yè)務(wù)的處理頁面時,上述保存在客戶端中預(yù)置的頁面參數(shù) 就會被清空,并進(jìn)行新業(yè)務(wù)的處理流程,即將新業(yè)務(wù)產(chǎn)生的頁面流會話信息進(jìn)行序列化和 保存。舉例來說,如圖3所示為客戶端和服務(wù)器端進(jìn)行交互的示意圖,圖中客戶端在業(yè) 務(wù)開始時,提交空的頁面流會話信息Context到服務(wù)器端;服務(wù)器端將需要保存的信息保 存到該頁面流會話信息Context中,并傳回到客戶端中;客戶端將該頁面流會話信息序列 化為字符串,并輸出為頁面預(yù)置的參數(shù)進(jìn)行保存。當(dāng)客戶端繼續(xù)進(jìn)行操作,提交新的請求內(nèi)容時,將保存的頁面預(yù)置參數(shù)和新的請 求內(nèi)容一起上報到服務(wù)器端,由服務(wù)器端根據(jù)該保存的頁面預(yù)置參數(shù)重建頁面流會話信 息,并根據(jù)新的請求內(nèi)容對重建的頁面流會話信息進(jìn)行修改,然后將修改后的頁面流會話 信息再返回給客戶端;該客戶端再將修改后的頁面流會話信息序列化為字符串,再輸出為 頁面預(yù)置的參數(shù)重新進(jìn)行保存;在業(yè)務(wù)結(jié)束之前,持續(xù)上述的操作過程,直到業(yè)務(wù)操作結(jié) 束,此時保存在客戶端中預(yù)置的頁面參數(shù)將會被清空,等待下一次的操作開始。另外,由于頁面流會話信息是保存在客戶端上的,為了保證安全,需要有保護(hù)機制 來防止序列化到客戶端的數(shù)據(jù)不被偽造和纂改。具體來說,可以將所述字符串采用消息摘 要算法生成哈希Hash碼,并采用加密算法對所述字符串進(jìn)行加密,所述加密用的密鑰由服 務(wù)器端按照預(yù)先制定的規(guī)則臨時生成。這樣,即使其他用戶知道了相關(guān)的算法,當(dāng)由于不清 楚密鑰,即使采用修改密文的辦法也很容易被檢測到,即解密后的Hash校驗碼錯誤,通過 上述的保護(hù)機制就可以解決安全性問題,防止對數(shù)據(jù)的篡改和非法獲取。另外,在本發(fā)明實施例1的技術(shù)方案中,由于頁面流會話信息都保存在客戶端頁 面中,這樣當(dāng)服務(wù)器端崩潰時,就可以將在客戶端中預(yù)置的頁面參數(shù)和所述處理頁面提交 到其他新的服務(wù)器端中,由該新的服務(wù)器端來重建頁面流會話信息,這樣就可以保持會話 信息的不丟失,從而實現(xiàn)了并置集群中任何一臺服務(wù)器崩潰時,用戶的會話和業(yè)務(wù)會話信 息能夠自動遷移到別的服務(wù)器,進(jìn)而不會影響到用戶的繼續(xù)操作,提高了用戶感知度。實施例2 本發(fā)明具體實施例2提供了一種頁面流會話信息的保存裝置,如圖4所 示為本實施例2所提供裝置的結(jié)構(gòu)示意圖,所述裝置包括序列化單元41和參數(shù)保存單元 42,其中
所述序列化單元41用于在客戶端對業(yè)務(wù)的處理頁面進(jìn)行操作時,將服務(wù)器端創(chuàng) 建的頁面流會話信息序列化為字符串。具體進(jìn)行序列化的方式見以上方法實施例1中所 述。所述參數(shù)保存單元42用于將所述序列化單元41序列化后的字符串輸出為在所述 客戶端中預(yù)置的頁面參數(shù)。另外,以 上所述裝置中還可包括參數(shù)設(shè)置單元43,該參數(shù)設(shè)置單元43用于在所述 客戶端界面的表單中預(yù)先設(shè)置用于保存會話信息的變量。以上所述裝置中還可包括字符串加密單元44,該字符串加密單元44用于將所述 序列化單元41序列化后的字符串采用消息摘要算法生成哈希Hash碼,并采用加密算法對 所述字符串進(jìn)行加密,所述加密用的密鑰由服務(wù)器端按照預(yù)先制定的規(guī)則臨時生成。以上所述裝置可以集成設(shè)置于客戶端中;也可以設(shè)置成單獨的功能實體,和客戶 端保持連接關(guān)系。值得注意的是,上述裝置實施例中所包括的各個單元只是按照功能邏輯進(jìn)行劃分 的,但并不局限于上述的劃分,只要能夠?qū)崿F(xiàn)相應(yīng)的功能即可;另外,各功能單元的具體名 稱也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護(hù)范圍。另外,本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分步驟是 可以通過程序來指令相關(guān)的硬件完成,相應(yīng)的程序可以存儲于一種計算機可讀存儲介質(zhì) 中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。綜上所述,本發(fā)明具體實施例可以使頁面流會話信息保存在客戶端的頁面中,從 而降低了服務(wù)器的內(nèi)存開銷,保證了服務(wù)器的穩(wěn)定運行;同時在服務(wù)器故障時,能夠在其它 的服務(wù)器上重建會話信息,從而更大程度的保證了應(yīng)用程序的可靠運行。以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護(hù)范圍并不局限于此, 任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明實施例揭露的技術(shù)范圍內(nèi),可輕易想到的變化或 替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù) 范圍為準(zhǔn)。
權(quán)利要求
一種頁面流會話信息的保存方法,其特征在于,當(dāng)客戶端對業(yè)務(wù)的處理頁面進(jìn)行操作時,將服務(wù)器端創(chuàng)建的頁面流會話信息序列化為字符串;將序列化后的字符串輸出為在所述客戶端中預(yù)置的頁面參數(shù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述將服務(wù)器端創(chuàng)建的頁面流會話信息序 列化為字符串,具體包括將服務(wù)器端創(chuàng)建的頁面流會話信息編碼為基于鍵值對的格式,以及對象數(shù)據(jù)格式的疊 加,使該頁面流會話信息序列化為字符串。
3.如權(quán)利要求2所述的方法,其特征在于,所述對象數(shù)據(jù)采用層層嵌套的關(guān)系進(jìn)行疊加。
4.如權(quán)利要求1所述的方法,其特征在于,所述客戶端中預(yù)置的頁面參數(shù),具體包括所述客戶端界面的表單中預(yù)先設(shè)置的用于保存會話信息的變量。
5.如權(quán)利要求1所述的方法,其特征在于,在將序列化后的字符串輸出為在所述客戶 端中預(yù)置的頁面參數(shù)之后,所述方法還包括當(dāng)所述客戶端通過所述處理頁面進(jìn)行各種用戶輸入操作時,將所述預(yù)置的頁面參數(shù)提 交到服務(wù)器端;所述服務(wù)器端根據(jù)所獲取的預(yù)置的頁面參數(shù),重建所述頁面流會話信息,并對所述頁 面流會話信息進(jìn)行相應(yīng)的修改操作;將修改后的頁面流會話信息序列化為新的字符串,并將該新的字符串重新輸出為所述 預(yù)置的頁面參數(shù)。
6.如權(quán)利要求5所述的方法,其特征在于,所述方法還包括當(dāng)所述業(yè)務(wù)處理結(jié)束,所述客戶端打開新業(yè)務(wù)的處理頁面時,保存在客戶端中預(yù)置的 頁面參數(shù)被清空。
7.如權(quán)利要求1所述的方法,其特征在于,在將服務(wù)器端創(chuàng)建的頁面流會話信息序列 化為字符串之后,所述方法還包括將所述字符串采用消息摘要算法生成哈希Hash碼,并采用加密算法對所述字符串進(jìn) 行加密,所述加密用的密鑰由服務(wù)器端按照預(yù)先制定的規(guī)則臨時生成。
8.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括當(dāng)所述服務(wù)器端崩潰時,將在所述客戶端中預(yù)置的頁面參數(shù)和所述處理頁面提交到新 的服務(wù)器端,由所述新的服務(wù)器端來重建頁面流會話信息。
9.一種頁面流會話信息的保存裝置,其特征在于,包括序列化單元,用于在客戶端對業(yè)務(wù)的處理頁面進(jìn)行操作時,將服務(wù)器端創(chuàng)建的頁面流 會話信息序列化為字符串;參數(shù)保存單元,用于將所述序列化單元序列化后的字符串輸出為在所述客戶端中預(yù)置 的頁面參數(shù)。
10.如權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括參數(shù)設(shè)置單元,用于在所述客戶端界面的表單中預(yù)先設(shè)置用于保存會話信息的變量。
11.如權(quán)利要求9或10所述的裝置,其特征在于,所述裝置還包括字符串加密單元,用于將所述序列化單元序列化后的字符串采用消息摘要算法生成哈希Hash碼,并采用加密算法對所述字符串進(jìn)行加密,所述加密用的密鑰由服務(wù)器端按照預(yù) 先制定的規(guī)則臨時生成。全文摘要
本發(fā)明實施例提供了一種頁面流會話信息的保存方法及裝置。具體包括當(dāng)客戶端對業(yè)務(wù)的處理頁面進(jìn)行操作時,首先將服務(wù)器端創(chuàng)建的頁面流會話信息序列化為字符串;然后將序列化后的字符串輸出為在所述客戶端中預(yù)置的頁面參數(shù)。這樣就可以將頁面流會話信息保存在客戶端的頁面中,從而降低了服務(wù)器的內(nèi)存開銷,并保證了服務(wù)器端的穩(wěn)定可靠運行。
文檔編號H04L29/08GK101883130SQ200910137698
公開日2010年11月10日 申請日期2009年5月7日 優(yōu)先權(quán)日2009年5月7日
發(fā)明者金中良 申請人:華為技術(shù)有限公司