亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

對門戶中的導(dǎo)航狀態(tài)進(jìn)行有效地串行化的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品的制作方法

文檔序號:6570004閱讀:223來源:國知局
專利名稱:對門戶中的導(dǎo)航狀態(tài)進(jìn)行有效地串行化的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品的制作方法
對門戶中的導(dǎo)航狀態(tài)進(jìn)行有效地 串行化的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品技術(shù)領(lǐng)域方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品,并且特別涉及減小門戶頁面的標(biāo)記大小、減小URL長度、以及減小生成作為門戶頁面的一部分的URL所 需的處理時(shí)間。
背景技術(shù)
本發(fā)明使用的導(dǎo)航狀態(tài)描述了 "作為特定客戶端的全部導(dǎo)航交互 的結(jié)果的門戶當(dāng)前視圖"。客戶端可以通過與門戶頁面交互,例如通 過導(dǎo)航到新頁面,來請求(查詢)不同的視圖。這種類型的用戶交互 不改變服務(wù)器側(cè)的狀態(tài),而是僅請求服務(wù)器的新視圖;因此就HTTP 方面而言這是"安全的"操作。該用戶交互的特性在于客戶端可以 使用其瀏覽器的向后和向前按鈕對其近期的視圖進(jìn)行向后和向前導(dǎo) 航,以及客戶端可以對視圖設(shè)置書簽并在稍后的時(shí)間點(diǎn)通過調(diào)用瀏覽 器書簽返回該視圖。HTTP的主要特征之一在于它是無狀態(tài)協(xié)議,也即,在HTTP中 不存在跨越多個(gè)請求/響應(yīng)交互的會話概念。但是,由于幾乎所有的應(yīng) 用情境都需要一些機(jī)制在請求中保存其狀態(tài),因此出現(xiàn)了 一些允許創(chuàng) 建(邏輯的)有狀態(tài)會話的機(jī)制,可以將其確定地視為目前現(xiàn)有技術(shù) 的狀態(tài)。兩個(gè)最為流行的狀態(tài)保存機(jī)制是Cookies (RFC 2109)和隱 藏輸入字段。然而,這兩種方法在可設(shè)置書簽性、高速緩存、向后/向前按鈕以 及由搜索引擎索引(可爬性)方面都具有一些主要的不足。因此,出 現(xiàn)了新的導(dǎo)航狀態(tài)保存方法,其將導(dǎo)航狀態(tài)編碼到URL中。不同的導(dǎo)航狀態(tài)導(dǎo)致不同的URL。 Web應(yīng)用在以前僅僅是基于表單的應(yīng)用, 但目前卻變得越來越復(fù)雜,特別是在這樣的門戶環(huán)境中,其中多個(gè)組 件(門戶組件(portlet))組合到較大門戶應(yīng)用中。這導(dǎo)致了這樣的問題"描述"門戶的某個(gè)視圖的導(dǎo)航狀態(tài)變得 十分龐大,因?yàn)殚T戶必須聚合用戶所交互的所有門戶組件的導(dǎo)航狀 態(tài)。因此,必須將把導(dǎo)航狀態(tài)有效地串行化(以及分別解串行化)到 URL中的能力視為滿足當(dāng)今日益迫切的性能需求("更快"、"更少 的存儲")的關(guān)鍵能力。現(xiàn)有技術(shù)在門戶應(yīng)用中,導(dǎo)航狀態(tài)通常表示為層級化樹型文檔,其包含描 述當(dāng)前導(dǎo)航狀態(tài)的全部信息。層級化文檔的有效結(jié)構(gòu)在狀態(tài)模型(通 常是文檔類型定義(DTD)或者XML才莫式定義(XSD))中定義。 為了能夠?qū)?dǎo)航狀態(tài)編碼到新門戶頁面的頭部中或者URL中(也即, HTML基礎(chǔ)標(biāo)簽中),需要對該層級化狀態(tài)文檔進(jìn)行串行化。用于對層級化對象結(jié)構(gòu)進(jìn)行串行化的現(xiàn)有技術(shù)通常基于XML串 行化技術(shù)或者Java對象串行化。在門戶領(lǐng)域中,這些技術(shù)是不夠的, 因?yàn)樗鼈儧]有考慮門戶特定的導(dǎo)航狀態(tài)的特性。門戶將若干應(yīng)用(所 謂的門戶組件)組合到較大的門戶應(yīng)用中。因此,門戶還需要管理所 有這些門戶組件的導(dǎo)航狀態(tài)。換言之,描述具體門戶視圖的導(dǎo)航狀態(tài) 需要包含所有門戶組件的導(dǎo)航狀態(tài)。通常通過由門戶組件編程者定義的所謂的繪制參數(shù)來表示門戶 組件的導(dǎo)航狀態(tài)。因此,門戶不能控制門戶組件的導(dǎo)航狀態(tài)。門戶組 件編程者可以根據(jù)其期望隨意定義任意多個(gè)和任意復(fù)雜的繪制參數(shù)。 在導(dǎo)航狀態(tài)串行化期間忽視這一事實(shí)將很可能導(dǎo)致過長的URL,其甚 至超過HTTP特定的URL長度限制,即2KB。除了門戶組件特定的 狀態(tài)之外,門戶的導(dǎo)航狀態(tài)還必須包括頁面導(dǎo)航控件、管理工具欄以 及門戶用戶界面的任何其他元素的狀態(tài)。因此,某個(gè)門戶視圖的導(dǎo)航 狀態(tài)變得非常復(fù)雜。發(fā)明目的本發(fā)明的目的是提供一種用于對門戶的導(dǎo)航狀態(tài)進(jìn)行有效地串 行化以避免現(xiàn)有技術(shù)中的缺點(diǎn)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。發(fā)明內(nèi)容本發(fā)明使用完全基于流的串行化,其將導(dǎo)航狀態(tài)的層級化對象表示(輸入)轉(zhuǎn)換為最小長度的無層級的(flat )基于字符(character-based ) 的表示(輸出)。基本上,本發(fā)明將基于流的串行化劃分為兩個(gè)子處 理。第一基于流的串行化子處理是面向?qū)蛹壍模涫褂脤?dǎo)航狀態(tài)的層 級化對象表示,并將其轉(zhuǎn)換為一系列事件。該事件用作用于壓縮與這 些事件相關(guān)聯(lián)的信息的各種策略的輸入。在子處理的末尾,將接收到 的事件所攜帶的經(jīng)過壓縮的導(dǎo)航狀態(tài)信息轉(zhuǎn)換為基于字符的表示,并 且根據(jù)接收的事件的順序推導(dǎo)出導(dǎo)航狀態(tài)的層級化結(jié)構(gòu)并將其轉(zhuǎn)換 為附加的基于字符的表示,將二者直接流傳輸給第二子處理。第二基于流的串行化子處理是獨(dú)立于層級的,其使用第一子處理 的結(jié)果并應(yīng)用進(jìn)一步的壓縮和字符編碼策略,此后將經(jīng)過壓縮和字符 編碼的信息流傳輸?shù)剿鲂麻T戶頁面的頭部或URL。兩個(gè)子處理無縫 地鏈接在一起。此創(chuàng)造性的基于流的串行化是高效的,因?yàn)槠渥钚』松蒛RL 所需的整個(gè)處理時(shí)間,并且還是有效的,因?yàn)槠浯_保串行化結(jié)果盡可 能的短,以滿足URL長度和標(biāo)記大小方面的要求。在本發(fā)明的優(yōu)選實(shí)施方式中,面向?qū)蛹壍牡谝蛔犹幚硎歉鶕?jù)基于 事件的過濾器鏈,該過濾器鏈負(fù)責(zé)提到的導(dǎo)航狀態(tài)信息的壓縮。這些 過濾器的每一個(gè)對在該子處理開始處生成的接收事件應(yīng)用特定的策 略。在處理事件之后,過濾器將包括相關(guān)聯(lián)的(現(xiàn)在經(jīng)過壓縮的)狀 態(tài)信息的事件傳遞給作為該過濾器鏈的一部分的下一個(gè)過濾器。優(yōu)選地使用基于字符的記錄器鏈來實(shí)現(xiàn)獨(dú)立于層級的第二子處理。這允許將在第 一 串行化子處理的范圍內(nèi)被壓縮的狀態(tài)信息直接流 傳輸至該記錄器鏈,以便立即壓縮接收的信息。此創(chuàng)造性的串行化方法允許添加任意的策略或者是基于事件的 過濾器鏈中包括的過濾器,或者是基于字符的記錄器鏈中包括的記錄 器。在本發(fā)明的優(yōu)選實(shí)施方式中,基于事件的過濾器鏈包括兩個(gè)過濾器,其實(shí)現(xiàn)以下兩個(gè)策略所謂的繪制參數(shù)映射策略關(guān)注門戶組件的導(dǎo)航狀態(tài),特別是門戶 組件的繪制參數(shù)。繪制參數(shù)映射策略按照參數(shù)名稱和值的長度來監(jiān)控 特定門戶組件的繪制參數(shù)的復(fù)雜性。如果參數(shù)名稱或者值超過了特定 的預(yù)定義閾值,該策略將把完整的參數(shù)映射到只包含一個(gè)字符的短 鍵。通過過濾表示繪制參數(shù)的事件并對其進(jìn)行相應(yīng)的處理來實(shí)踐該策 略。所謂的標(biāo)志映射策略負(fù)責(zé)處理可以根據(jù)導(dǎo)航狀態(tài)模型(提至'j的 DTD或者XSD)直接推導(dǎo)出的預(yù)定義的門戶特定的狀態(tài)標(biāo)志(名稱、 狀態(tài)值)。其將所有這些名稱和值映射到短的單字符表示。通過過濾 每個(gè)事件并隨后相應(yīng)地處理相關(guān)聯(lián)的信息(上面提到的名稱和值)來 實(shí)踐該策略。


通過下面的詳細(xì)描述,本發(fā)明的上述以及其他目的、特征和優(yōu)點(diǎn) 將變得顯而易見。本發(fā)明的新穎特征在所附權(quán)利要求中闡述。然而,通過參考下面 結(jié)合附圖對示例性實(shí)施方式的詳細(xì)描述,將最好地理解本發(fā)明本身以 及使用的優(yōu)選模式、其他目的及其優(yōu)點(diǎn),其中圖1以簡化的方式示出了創(chuàng)造性的基于流的串行化方法,并具體 示出了優(yōu)選的兩步方法將層級化導(dǎo)航狀態(tài)文檔轉(zhuǎn)換為無層級的基于 字符的表示,此后進(jìn)一步壓縮該基于字符的表示;圖2示出了根據(jù)本發(fā)明的借助于示例性導(dǎo)航狀態(tài)文檔進(jìn)行的給定層級化導(dǎo)航狀態(tài)文檔到一系列事件的轉(zhuǎn)換;是基于事件的過濾器鏈和基于字符的記錄器鏈的具體實(shí)施方式
;圖4示出了與圖l中所示的串行化處理相對應(yīng)的創(chuàng)造性的解串行 化處理,并且具體示出了優(yōu)選的兩步方法對無層級的基于字符的表 示解壓縮,此后將該無層級的表示轉(zhuǎn)換回原始層級化對象表示;圖5示出了本發(fā)明優(yōu)選使用的繪制參數(shù)過濾器的內(nèi)部結(jié)構(gòu),包括 在狀態(tài)串行化期間執(zhí)行的內(nèi)部交互;圖6示出了本發(fā)明優(yōu)選使用的繪制參數(shù)過濾器的內(nèi)部結(jié)構(gòu),包括 在狀態(tài)解串行化期間執(zhí)行的內(nèi)部交互;圖7示出了本發(fā)明優(yōu)選使用的使用DTD的示例性狀態(tài)模型定義 以及可以從其推導(dǎo)出的映射表;有預(yù)定義標(biāo)志映射到短的單字符表示的標(biāo)志映射過濾器;以及 圖9示出了實(shí)現(xiàn)本發(fā)明的門戶結(jié)構(gòu)。
具體實(shí)施方式
圖1示出了創(chuàng)造性的基于流的串行化方法。串行化方法被劃分成各自都基于流的兩個(gè)子處理。第 一基于流的 串行化子處理是面向?qū)蛹壔模涫褂脤?dǎo)航狀態(tài)的層級化對象表示并 將其轉(zhuǎn)換為一系列事件,其中,事件用作用于壓縮與這些事件相關(guān)聯(lián) 的信息的各種策略的輸入,其中,在所述子處理的末尾,將所接收的 事件攜帶的經(jīng)過壓縮的導(dǎo)航狀態(tài)信息轉(zhuǎn)換為基于字符的表示,并根據(jù) 所接收事件的順序推導(dǎo)出所述導(dǎo)航狀態(tài)的層級化結(jié)構(gòu),將該層級化結(jié) 構(gòu)轉(zhuǎn)換為附加的基于字符的表示,二者都被直接流傳輸至所述第二子 處理。第二基于流的串行化子處理是獨(dú)立于層級的,其使用所述第一子 處理的結(jié)果并應(yīng)用進(jìn)一步的壓縮和字符編碼策略,此后將經(jīng)過壓縮和 字符編碼的信息流傳輸?shù)剿鲂麻T戶頁面的URL或頭部中。這兩個(gè)子處理無縫地鏈接在一起。在優(yōu)選實(shí)施方式中,使用基于事件的過濾器鏈來實(shí)現(xiàn)第一面向?qū)?級的子處理,所述過濾器鏈包括過濾器F卜.Fn的集合,該過濾器負(fù)責(zé) 對將要串行化的層級化對象表示中包含的狀態(tài)信息進(jìn)行壓縮。每個(gè)過濾器Fj實(shí)現(xiàn)對實(shí)現(xiàn)該目的有所貢獻(xiàn)的某個(gè)策略。過濾器鏈獲得一 系列事件,這些事件反映輸入導(dǎo)航狀態(tài)的層級化 結(jié)構(gòu)。每個(gè)事件攜帶層級化結(jié)構(gòu)中特定節(jié)點(diǎn)的具體狀態(tài)信息,也即, 節(jié)點(diǎn)的名稱、值和屬性。因此,過濾器能夠檢查從相應(yīng)事件處取回的 狀態(tài)信息并相應(yīng)地反應(yīng)。通常,過濾器集中在狀態(tài)信息的一個(gè)特定方 面,例如,門戶組件特定的導(dǎo)航狀態(tài)。換言之,過濾器截獲其感興趣 的事件(例如,借助于該事件的名稱)、相應(yīng)地處理這些事件、并繼 而將其傳遞給鏈中的下一個(gè)過濾器。與所需標(biāo)準(zhǔn)不匹配的所有其他事 件都不變地委托給接下來的過濾器。在執(zhí)行過濾器鏈之前,串行化組件必須生成一系列事件,其對應(yīng) 于將要串行化的給定層級化對象表示。負(fù)責(zé)該轉(zhuǎn)換步驟的組件是所謂 的串行化中介器(參見圖1)。如圖2所示,串行化中介器遍歷層級化狀態(tài)文檔(使用虛線箭頭 所示的廣度優(yōu)先搜索算法),以便初始化事件流。對于每個(gè)被訪問節(jié) 點(diǎn),串行化中介器創(chuàng)建具有節(jié)點(diǎn)名稱以及節(jié)點(diǎn)屬性(如果有)的startNode事件、具有節(jié)點(diǎn)值(如果有)的nodeValue事件、以及指示 節(jié)點(diǎn)處理完成的endNode事件。注意,所生成事件的順序,特別是 startNode事件的嵌套,反映了輸入文檔的層級。在其創(chuàng)建之后,串行化中介器將事件發(fā)送給鏈中的第一事件處理 過濾器F!。圖2還示出了對應(yīng)于所描述的示例性導(dǎo)航狀態(tài)文檔的事件 流。用來表示各個(gè)事件的名稱追溯到與XML處理技術(shù)相關(guān)的術(shù)語(例 如,JAVA SAX API)。借助于與事件相關(guān)聯(lián)的信息(例如,與startNode事件一起傳送 的節(jié)點(diǎn)名稱),每個(gè)過濾器能夠截獲其感興趣的事件種類,并在將事 件傳遞給下一個(gè)過濾器之前修改所攜帶的信息(例如,節(jié)點(diǎn)值或者甚至節(jié)點(diǎn)名稱)。在事件通過所有過濾器之后,其到達(dá)所謂的串行化處理機(jī)(參見 圖2),該處理機(jī)負(fù)責(zé)將攜帶已壓縮的狀態(tài)信息的所接收事件轉(zhuǎn)換為 無層級的字符表示上。為了對其實(shí)現(xiàn),串行化處理機(jī)逐步地將名稱、 值和屬性附加到基于字符的表示,并繼而將得到的字符串傳遞給第二 串行化子處理以用于進(jìn)一步的壓縮和字符編碼。在處理所有事件之 后,串行化處理機(jī)移交反映導(dǎo)航狀態(tài)文檔的層級的附加信息片段。需 要該信息片段以用于在稍后的解串行化期間恢復(fù)狀態(tài)文檔的層級。為了對層級信息進(jìn)行編碼,串行化處理機(jī)對與先前處理的startNode事 件的嵌套相對應(yīng)的位表示進(jìn)行編碼。第二子處理是完全基于流的,其借助于上面提到的基于字符的記 錄器鏈W卜..Wn (參見圖1)來處理接收到的字符串。每個(gè)記錄器對 接收到的字符串應(yīng)用特定的壓縮或字符編碼策略,而后將其傳遞給鏈 中的下一個(gè)記錄器。注意,這些記錄器不能對接收到的字符串進(jìn)行任 何假設(shè),既不能對所包含的信息的語義進(jìn)行假設(shè),也不能對其內(nèi)部結(jié) 構(gòu)進(jìn)行假設(shè)。因此,它們只能應(yīng)用一般的字符壓縮和編碼技術(shù),例如 現(xiàn)有壓縮技術(shù)的狀態(tài),例如GZIP。在各個(gè)記錄器已經(jīng)應(yīng)用了其壓縮 (例如,GZIP)和字符編碼(例如,UTF-8)策略之后,將得到的字 符表示寫入特定的數(shù)據(jù)槽。數(shù)據(jù)槽通常是URL,其繼而攜帶導(dǎo)航狀態(tài) 的串行化形式。當(dāng)點(diǎn)擊這樣的URL時(shí),必須從該URL中取回導(dǎo)航狀 態(tài)部分以用于狀態(tài)的解串行化。在解串行化期間,如下文所解釋的那 樣,必須撤銷所有的串行化策略。圖2中示出了基于事件的過濾器鏈和基于字符的記錄器鏈的優(yōu)選 實(shí)施方式。漸變顏色強(qiáng)調(diào)從左邊基于事件的過濾器鏈到右邊基于字符 的記錄器鏈的無縫過渡。如圖所示,基于事件的過濾器鏈包括在發(fā)明內(nèi)容中已經(jīng)概括的兩 個(gè)過濾器(除了系統(tǒng)特定的串行化中介器和串行化處理機(jī)之外)。第 一事件處理過濾器實(shí)現(xiàn)門戶組件繪制參數(shù)映射策略,而第二過濾器應(yīng) 用導(dǎo)航狀態(tài)文檔中包含的所有預(yù)定義標(biāo)志(名稱和值)的一般映射。對于這些具體過濾器的細(xì)節(jié),參考解串行化部分之后的部分。基于字 符的記錄器鏈包括(除了僅將結(jié)果流傳輸?shù)教囟〝?shù)據(jù)槽的槽記錄器之外)執(zhí)行GZIP壓縮的記錄器和執(zhí)行Base 64字符編碼的另 一記錄器。 對應(yīng)的解串行化處理負(fù)責(zé)將導(dǎo)航狀態(tài)的給定無層級的字符表示 轉(zhuǎn)換回導(dǎo)航狀態(tài)的原始層級化的樹型對象表示。圖4示出了解串行化 處理。如所示的那樣,由本創(chuàng)造性的解串行化方法處理的輸入數(shù)據(jù)是最 小長度無層級的字符表示。解串行化結(jié)果是導(dǎo)航狀態(tài)的層級對象表 示,該導(dǎo)航狀態(tài)等同于在對其串行化之前的導(dǎo)航狀態(tài)。作為串行化的 對應(yīng)者,解串行化處理也被劃分為兩個(gè)子處理。第一,基于字符的讀 取器鏈通過應(yīng)用對應(yīng)的解壓縮和字符解碼技術(shù)RV..R,p撤銷在串行 化期間應(yīng)用的壓縮和字符編碼策略。在該子處理之后,在再次應(yīng)用基 于事件的過濾器鏈FV..F,,之前,恢復(fù)導(dǎo)航狀態(tài)文檔的層級,以便撤 銷在串行化期間進(jìn)行的信息壓縮策略。注意,F(xiàn)、表示應(yīng)用與過濾器 Fi相對應(yīng)的策略相反的策略的過濾器。以下的段落詳細(xì)描述如圖4所 示的解串行化。解串行化中涉及的第 一組件是所謂的源讀取器。源讀取器是對給 定的數(shù)據(jù)源進(jìn)行操作的字符讀取器。在本發(fā)明的情況中,其從URL 中讀取經(jīng)過串行化的導(dǎo)航狀態(tài),并將讀取的字符串提交給讀取器鏈 RV..RV讀取器鏈通過應(yīng)用相應(yīng)的字符解碼和解壓縮技術(shù)來撤銷串 行化期間執(zhí)行的字符編碼和壓縮。串行化解析器用作基于字符的讀取 器鏈和基于事件的過濾器鏈之間的適配器,串行化解析器緩沖接收到 的字符串,以便最終將其轉(zhuǎn)換回與串行化期間的事件流等同的一 系列 事件。為了對其實(shí)現(xiàn),串行化解析器必須考慮經(jīng)過編碼的層級信息, 以生成按照具有正確嵌套的正確順序的事件。注意,串行化解析器可 以容易地執(zhí)行該任務(wù),因?yàn)樗撬龃谢幚頇C(jī)的對應(yīng)組件,因此 具有關(guān)于如何解釋串行化層級信息所需的知識。此后,事件流通過基于事件的過濾器鏈FV..F,"將串行化期間 執(zhí)行的信息壓縮進(jìn)行反向。在基于事件的過濾器鏈的末尾,所謂的解串行化中介器(串行化中介器的對應(yīng)組件)直接將接收到的事件映射到控制器操作,以通過創(chuàng)建節(jié)點(diǎn)并將其彼此連接來恢復(fù)層級化對象表示。在所有這些之后,已經(jīng)恢復(fù)了整個(gè)原始的導(dǎo)航狀態(tài)文檔。該步驟 結(jié)束解串行化處理。繪制參數(shù)映射過濾器繪制參數(shù)映射過濾器關(guān)注門戶組件的導(dǎo)航狀態(tài),特別是門戶組件的繪制參數(shù)。該過濾器實(shí)現(xiàn)的策略按照參數(shù)名稱和值的長度監(jiān)控具體 門戶組件的繪制參數(shù)的復(fù)雜性。如果參數(shù)名稱或值超過了某個(gè)預(yù)定義 閾值,該策略將把表示完整參數(shù)的事件映射到攜帶僅包含一個(gè)字符的短鍵(key)的事件,而將具體的參數(shù)名稱和值串行化到用戶的HTTP 會話中。圖5示出了在狀態(tài)串行化期間使用的繪制參數(shù)過濾器的內(nèi)部結(jié)構(gòu) (在稍后討論的解串行化期間需要逆向過濾器)。首先,過濾器檢查接收到的startNode事件是否指示門戶組件繪 制參數(shù)(借助于節(jié)點(diǎn)名稱"參數(shù)")。如果過濾器檢測到這樣的事件 ("是"分支),其將該事件傳遞給執(zhí)行復(fù)雜性檢查的內(nèi)部參數(shù)映射 器組件。否則("否,,分支),其只是將事件委派給過濾器鏈中的下 一個(gè)過濾器。參數(shù)映射器按照繪制參數(shù)的名稱和值的長度來對其進(jìn)行評估,從 而執(zhí)行復(fù)雜性檢查。如果超過了配置的長度閾值,其將參數(shù)映射到短 鍵(字符)上并僅將攜帶該鍵的事件發(fā)送給下一個(gè)過濾器。將實(shí)際的 繪制參數(shù)以及生成的鍵串行化到HTTP會話中。注意,該過程具有 HTTP會話過大的風(fēng)險(xiǎn)。因此,必須使用過期策略來管理鍵-參數(shù)映射, 該過期策略根據(jù)近期最少使用(LRU)的策略去除所存儲的映射。圖6示出了在解串行化期間撤銷該映射的對應(yīng)過濾器的內(nèi)部結(jié) 構(gòu)。在這種情況下,過濾器僅截獲代表這種鍵的事件。如果檢測到這 種事件,過濾器將該鍵事件重新路由到內(nèi)部參數(shù)映射器組件,該組件 使用接收到的鍵來查找HTTP會話中的具體參數(shù)名稱和值。只要恢復(fù)了攜帶實(shí)際繪制參數(shù)的事件,就將其傳遞至鏈中的下一個(gè)過濾器。 標(biāo)志映射過濾器標(biāo)志映射過濾器實(shí)現(xiàn)旨在壓縮盡可能多的標(biāo)志的一般策略。因 此,其不截獲匹配特定標(biāo)準(zhǔn)(例如,特定的節(jié)點(diǎn)名稱)的事件,而是 試圖映射每個(gè)所接收事件的所有標(biāo)志,也即名稱、值和屬性。為了執(zhí) 行該映射,其重復(fù)使用從狀態(tài)模型定義中取回的信息。如先前已經(jīng)提 到的,狀態(tài)模型定義指定導(dǎo)航狀態(tài)文檔的有效結(jié)構(gòu)(也即,節(jié)點(diǎn)名稱以及節(jié)點(diǎn)值和屬性值的數(shù)據(jù)類型之間的關(guān)系),并且通常在DTD或 者XSD文件中描述狀態(tài)模型定義?;谠摱x,標(biāo)志映射過濾器推 導(dǎo)出映射表,其為所包含的每個(gè)預(yù)定義標(biāo)志指派單字符替代。預(yù)定義 標(biāo)志包括節(jié)點(diǎn)和屬性的名稱(其在狀態(tài)模型定義中完全指定)以及在 狀態(tài)模型定義中顯式指定的所有節(jié)點(diǎn)和屬性的值。圖7示出了使用類似DTD語法的示例狀態(tài)模型定義,包括根據(jù) 該定義推導(dǎo)出的標(biāo)志映射表。所描述的映射表是無層級的,也即,不 反映狀態(tài)模型的層級。在狀態(tài)模型更為復(fù)雜的典型情境中,也推薦利 用狀態(tài)模型的層級。在這種情況下,根據(jù)DTD而不是無層級的映射 表推導(dǎo)出所謂的映射樹。在映射樹中,映射僅在特定樹級別的范圍內(nèi) 必須是唯一的。圖8示出了如何在示例事件流上應(yīng)用無層級的映射表。注意,標(biāo) 志映射過濾器必須是基于事件的過濾器鏈中最后的過濾器,因?yàn)槠湫?改文檔節(jié)點(diǎn)的名稱,該文檔節(jié)點(diǎn)的名稱通常用作其他過濾器的過濾器 標(biāo)準(zhǔn)(否則,在標(biāo)志映射過濾器之后執(zhí)行的所有其他過濾器將需要了 解映射表)。沒有在狀態(tài)模型定義中指定的所有節(jié)點(diǎn)和屬性值不能映射到短 單字符表示。這特別應(yīng)用于門戶組件繪制參數(shù)的名稱和值。 圖9示出了實(shí)現(xiàn)本發(fā)明的門戶結(jié)構(gòu)。組件以及為了提供創(chuàng)造性的功能性而新添加的組件。作為每個(gè)門戶的 一 部分的現(xiàn)有技術(shù)功能組件如下 Servlet 10Servlet 10是接收傳入的HTTP請求的前端控制器。其通常準(zhǔn)備 請求處理引擎20,以用于通過初始化涉及的組件來處理接收到的 HTTP請求。在此之后,servlet 10將對請求的處理委派給請求處理引 擎20。請求處理引擎20請求處理引擎20也是負(fù)責(zé)控制對傳入請求的處理的前端控制器 的一部分。通常其定義包括若干請求處理階段的請求處理生命周期。 在門戶中,請求必須經(jīng)歷4個(gè)階段。首先,在初始階段,執(zhí)行請求特 定的初始化任務(wù),隨后是負(fù)責(zé)認(rèn)證和動作執(zhí)行的動作階段(門戶組件 動作以及命令)。在動作階段之后,通過調(diào)用聚合處理來執(zhí)行繪制階 段。最終階段通過執(zhí)行請求特定的清除任務(wù)來結(jié)束請求處理。聚合組件60在請求處理生命周期的繪制階段期間調(diào)用聚合組件60。其負(fù)責(zé)將 請求頁面的布局模型(描述門戶組件在頁面上如何布置)轉(zhuǎn)換為呈送 樹以及將對應(yīng)于該呈送樹的標(biāo)記寫到響應(yīng)中。認(rèn)證組件50認(rèn)證組件50負(fù)責(zé)-驗(yàn)證用戶身份。每個(gè)傳入請求必須通過認(rèn)證。 門戶2使用用戶身份來確定該用戶授權(quán)訪問的內(nèi)容以及要執(zhí)行的命 令。門戶組件容器30門戶組件容器30提供對門戶組件的統(tǒng)一訪問。特別地,其允許 收集特定門戶組件的標(biāo)記或者執(zhí)行門戶組件動作。門戶組件容器借助 于門戶組件API來調(diào)用門戶組件。命令A(yù)PI 40命令A(yù)PI40 (應(yīng)用編程接口 )提供門戶特定的命令的抽象層。特 別地,其允許經(jīng)由統(tǒng)一的接口執(zhí)行命令。命令可以用來執(zhí)行管理任務(wù), 例如創(chuàng)建和/或刪除門戶頁面、向門戶頁面添加門戶組件和/或從門戶頁面移除門戶組件、將門戶組件布置到已有頁面上等等。 導(dǎo)航狀態(tài)管理組件70導(dǎo)航狀態(tài)管理組件70具有以下責(zé)任定義導(dǎo)航狀態(tài)的生命周期,以及提供允許請求處理引擎20將已 定義的狀態(tài)處理任務(wù)包含到整個(gè)請求處理生命周期中的接口 ;定義對象模型來表示導(dǎo)航狀態(tài),以及提供允許讀和寫/修改導(dǎo)航狀 態(tài)的應(yīng)用編程接口 (API);提供這樣的框架,其允許將導(dǎo)航狀態(tài)的對象表示有效地串行化到 URL中以及從(傳入的)URL中解串行化導(dǎo)航狀態(tài)以便恢復(fù)內(nèi)部對 象表示。該框架需要包括可以被URL生成組件調(diào)用的接口 ,以創(chuàng)建 攜帶導(dǎo)航狀態(tài)的URL。URL生成API 80如名稱所隱含的,URL生成API 80提供允許針對多種使用情況 來創(chuàng)建URL的API。其支持編程者將導(dǎo)航狀態(tài)與所創(chuàng)建的URL相關(guān) 聯(lián),以及將URL寫入給定的目的地流。該寫操作涉及對與所創(chuàng)建URL 相關(guān)聯(lián)的狀態(tài)信息進(jìn)行串行化。除了可編程地創(chuàng)建URL之外,URL 生成API通常提供一些URL標(biāo)簽從而在JSP內(nèi)創(chuàng)建URL。默認(rèn)地,通過請求特定的導(dǎo)航狀態(tài)對所創(chuàng)建的URL進(jìn)行初始化, 以確認(rèn)沒有丟失先前交互的導(dǎo)航狀態(tài)。為了確定URL的特定語義, 可以僅針對該具體URL改變該導(dǎo)4元狀態(tài)。新添加的提供創(chuàng)造性功能性的功能組件細(xì)化了導(dǎo)航狀態(tài)管理組 件70:狀態(tài)串行化框架70A狀態(tài)串行化框架70A是導(dǎo)航狀態(tài)管理組件70的子組件,其實(shí)現(xiàn) 發(fā)明的基于流的串行化方法。其特別負(fù)責(zé)提供面向?qū)蛹壍牡?一基于流的串行化子處理,使用所述導(dǎo)航狀態(tài)的層 級化對象表示,并將其轉(zhuǎn)換為一系列事件,其中所述事件用作用于壓 縮與這些事件相關(guān)聯(lián)的信息的各種策略的輸入,其中在所述子處理的 末尾,將所接收事件攜帶的經(jīng)過壓縮的導(dǎo)航狀態(tài)信息轉(zhuǎn)換為基于字符的表示,并根據(jù)所接收的事件的順序推導(dǎo)出所述導(dǎo)航狀態(tài)的層級化結(jié) 構(gòu),并將該層級化結(jié)構(gòu)轉(zhuǎn)換為附加的基于字符的表示,二者都被直接 流傳輸至所述第二子處理;第二基于流的串行化子處理是獨(dú)立于層級的,其使用所述第一子 處理的結(jié)果并應(yīng)用進(jìn)一步的壓縮和字符編碼策略,并最終將經(jīng)過壓縮和字符編碼的信息流傳輸至所述新門戶頁面的URL或頭部,其中,兩個(gè)子處理無縫地鏈接在一起,將多個(gè)串行化策略(以及對應(yīng)的解串行化策略)組裝為(解)串行化鏈;提供插入點(diǎn),以便在將來插入進(jìn)一步的策略;提供應(yīng)用編程接口 (API),該應(yīng)用編程接口允許在URL生成期 間執(zhí)行組裝的串行化鏈、以及在URL解碼期間執(zhí)行解串行化鏈。組件的輸入數(shù)據(jù)是用于串行化的層勁 解串行化的導(dǎo)航狀態(tài)的串行化字符表示
權(quán)利要求
1.一種用于對門戶中的導(dǎo)航狀態(tài)進(jìn)行有效地串行化的方法,其中,所述門戶在服務(wù)器系統(tǒng)中運(yùn)行,其中,所述服務(wù)器系統(tǒng)包括通信組件,其允許在所述門戶和客戶端瀏覽器之間經(jīng)由通信通道的通信,其中,所述門戶確定請求的門戶頁面的布局,調(diào)用屬于所述門戶頁面的各種頁面元素的繪制,并且將所述門戶頁面?zhèn)魉徒o客戶端的瀏覽器以用于顯示,其中,所述門戶頁面的至少一個(gè)頁面元素提供鏈接功能,用于發(fā)起由所述門戶進(jìn)行的繪制新頁面或新頁面元素,其中,通過點(diǎn)擊所述頁面元素處的所述鏈接,每個(gè)用戶交互在所述門戶側(cè)生成新的導(dǎo)航狀態(tài),其中,所述導(dǎo)航狀態(tài)將所述門戶的當(dāng)前視圖作為特定客戶端的所有先前導(dǎo)航交互的結(jié)果進(jìn)行描述,其中,響應(yīng)于對新門戶頁面的客戶端請求,將所述導(dǎo)航狀態(tài)以串行化形式編碼到新門戶頁面的頭部中和/或每個(gè)URL中,其中,所述方法包括以下兩個(gè)子處理面向?qū)蛹壍牡谝换诹鞯拇谢犹幚恚涫褂盟鰧?dǎo)航狀態(tài)的層級化對象表示并將其轉(zhuǎn)換為一系列事件,其中,所述事件用作用于壓縮與這些事件相關(guān)聯(lián)的信息的各種策略的輸入,其中,在所述子處理的末尾,將由所接收的事件攜帶的經(jīng)過壓縮的導(dǎo)航狀態(tài)信息轉(zhuǎn)換為基于字符的表示,并且根據(jù)所接收的事件的順序推導(dǎo)出所述導(dǎo)航狀態(tài)的層級化結(jié)構(gòu)并將所述導(dǎo)航狀態(tài)的層級化結(jié)構(gòu)轉(zhuǎn)換為附加的基于字符的表示,將兩者直接流傳輸至所述第二子處理,獨(dú)立于層級的第二基于流的串行化子處理,其使用所述第一子處理的結(jié)果并應(yīng)用進(jìn)一步的壓縮和字符編碼策略,并最終將經(jīng)過壓縮和字符編碼的信息流傳輸至所述新門戶頁面的頭部或URL,其中,這兩個(gè)子處理無縫地鏈接在一起。
2. 根據(jù)權(quán)利要求1所述的方法,其中,所述第一子處理是根據(jù)基 于事件的過濾器鏈,其中,每個(gè)過濾器對特別指派的事件子集進(jìn)行操 作,并應(yīng)用用于壓縮與所述事件相關(guān)聯(lián)的導(dǎo)航狀態(tài)信息的特定策略。
3. 根據(jù)權(quán)利要求2所述的方法,其中,所述第一子處理通過遍歷 導(dǎo)航狀態(tài)的層級化對象表示來生成針對基于事件的過濾器鏈的事件流,并針對所述對象表示的每個(gè)被訪問的節(jié)點(diǎn)生成具有節(jié)點(diǎn)名稱以及節(jié)點(diǎn)屬性的startNode事件、具有節(jié)點(diǎn)值的nodeValue事件、以及指示 節(jié)點(diǎn)結(jié)束的endNode事件。
4. 根據(jù)權(quán)利要求3所述的方法,其中,按照反映導(dǎo)航狀態(tài)對象表 示的層級化沖對型結(jié)構(gòu)的順序來生成所述生成的startNode、 nodeValue 和endNode事件,其中,直到處理了相應(yīng)節(jié)點(diǎn)的完整子樹,才生成所 述endNode事件。
5. 根據(jù)權(quán)利要求4所述的方法,其中,在所述基于事件的過濾器 鏈的末尾,使用特殊的過濾器來編碼層級化結(jié)構(gòu),所述層級化結(jié)構(gòu)按 照接收的事件的順序并在接收的startNode事件的嵌套中建立。
6. 根據(jù)權(quán)利要求2所述的方法,其中,所述第二子處理使用基于 字符的記錄器鏈,其中,每個(gè)記錄器對接收到的、在所述第一子處理 末尾處生成的字符信息執(zhí)行特定壓縮或字符編碼策略。
7. 根據(jù)權(quán)利要求6所述的方法,其中,在所述基于字符的記錄器 鏈的末尾,使用特殊的記錄器,其將經(jīng)過壓縮的字符信息直接流傳輸 至門戶頁面的頭部或指派的URL。
8. —種用于對門戶中的導(dǎo)航狀態(tài)進(jìn)行有效地串行化的系統(tǒng),其中, 所述門戶在所述系統(tǒng)中運(yùn)行,其中,所述系統(tǒng)包括通信組件,其允許 在所述門戶和客戶端瀏覽器之間經(jīng)由通信通道的通信,其中,所述門 戶確定請求的門戶頁面的布局,調(diào)用屬于所述門戶頁面的各種頁面元其中,所述;戶頁面的至少二個(gè)頁面元;提供鏈接功:用于發(fā)起由所述門戶進(jìn)行的繪制新頁面和新頁面元素,其中,所述門戶包括導(dǎo)航 狀態(tài)管理組件,如果在所述頁面元素處點(diǎn)擊所述鏈接,所述導(dǎo)航狀態(tài) 管理組件針對每個(gè)用戶交互生成新的導(dǎo)航狀態(tài),其中,所述導(dǎo)航狀態(tài) 將所述門戶的當(dāng)前視圖作為特定客戶端的所有先前導(dǎo)航交互的結(jié)果 進(jìn)行描述,其中,響應(yīng)于對新門戶頁面的客戶端請求,所述導(dǎo)航狀態(tài) 管理組件將所述導(dǎo)航狀態(tài)以串行化形式編碼到新門戶頁面的頭部中 和/或每個(gè)URL中,所述系統(tǒng)包括進(jìn)一步的功能組件提供面向?qū)蛹壍牡谝换诹鞯拇谢犹幚淼墓δ芙M件,所述第使用所述導(dǎo)航狀態(tài)的層級化對象表示并將 其轉(zhuǎn)換為一系列事件,其中,所述事件用作用于壓縮與這些事件相關(guān) 聯(lián)的信息的各種策略的輸入,其中,在所述子處理的末尾,將由所接 收的事件攜帶的經(jīng)過壓縮的導(dǎo)航狀態(tài)信息轉(zhuǎn)換為基于字符的表示,并 且根據(jù)所接收的事件的順序推導(dǎo)出所述導(dǎo)航狀態(tài)的層級化結(jié)構(gòu)并將 所述導(dǎo)航狀態(tài)的層級化結(jié)構(gòu)轉(zhuǎn)換為附加的基于字符的表示,將兩者直 接流傳輸至所述第二子處理,以及提供獨(dú)立于層級的第二基于流的串行化子處理的功能組件,所述 第二子處理使用所述第一子處理的結(jié)果并應(yīng)用進(jìn)一步的壓縮和字符 編碼策略,并最終將經(jīng)過壓縮和字符編碼的信息流傳輸至所述新門戶 頁面的頭部或URL,其中,所述功能組件提供的兩個(gè)子處理無縫地鏈接在 一起。
9. 根據(jù)權(quán)利要求8所述的系統(tǒng),其中,所述功能模塊是所述導(dǎo)航 狀態(tài)管理組件的集成部分。
10. 根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述導(dǎo)航狀態(tài)管理組件 是所述門戶的一部分。
11. 根據(jù)權(quán)利要求8所述的系統(tǒng),其中,提供所述第一子處理的 所述功能組件通過遍歷導(dǎo)航狀態(tài)的層級化對象表示來生成針對基于 事件的過濾器鏈的事件流,并針對所述對象表示的每個(gè)被訪問的節(jié)點(diǎn) 生成具有節(jié)點(diǎn)名稱以及節(jié)點(diǎn)屬性的startNode事件、具有節(jié)點(diǎn)值的 node Value事件、以及指示節(jié)點(diǎn)結(jié)束的endNode事件,其中,按照反 映導(dǎo)航狀態(tài)對象表示的層級化樹型結(jié)構(gòu)的順序來生成所述生成的 startNode 、 node Value和endNode事件,其中,直到處理了相應(yīng)節(jié)點(diǎn) 的完整子樹,才生成所述endNode事件,其中,在所述基于事件的過 濾器鏈的末尾,使用特殊的過濾器來編碼層級化結(jié)構(gòu),所述層級化結(jié) 構(gòu)按照接收的事件的順序并在接收的startNode事件的嵌套中建立。
12. —種計(jì)算機(jī)程序產(chǎn)品,包含用于執(zhí)行權(quán)利要求1到7所述方 法的計(jì)算機(jī)可執(zhí)行指令。
全文摘要
本發(fā)明提供用于通過使用被劃分為兩個(gè)基于流的子處理的完全基于流的串行化來將導(dǎo)航狀態(tài)有效地串行化到新門戶頁面的頭部或URL中的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。面向?qū)蛹壍牡谝换诹鞯拇谢犹幚硎褂脤?dǎo)航狀態(tài)的層級化對象表示并將其轉(zhuǎn)換為一系列事件。在該子處理的末尾,將接收事件攜帶的經(jīng)過壓縮的導(dǎo)航狀態(tài)信息轉(zhuǎn)換為基于字符的表示,并根據(jù)接收事件的順序推導(dǎo)出導(dǎo)航狀態(tài)的層級化結(jié)構(gòu)并將其轉(zhuǎn)換為附加的基于字符的表示,將二者直接流傳輸至第二子處理。獨(dú)立于層級的第二基于流的串行化子處理使用第一子處理的結(jié)果并應(yīng)用進(jìn)一步的壓縮和字符編碼策略,并最終將經(jīng)過壓縮和字符編碼的信息流傳輸?shù)剿鲂麻T戶頁面的頭部或URL中。兩個(gè)子處理無縫地鏈接在一起。
文檔編號G06F17/30GK101331486SQ200680047153
公開日2008年12月24日 申請日期2006年10月18日 優(yōu)先權(quán)日2005年12月14日
發(fā)明者C·洛伊厄, F·波施, S·貝爾 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1