專利名稱:實(shí)現(xiàn)有狀態(tài)網(wǎng)絡(luò)應(yīng)用的會(huì)話返回的制作方法
技術(shù)領(lǐng)域:
以下說(shuō)明涉及服務(wù)器會(huì)話管理和在有狀態(tài)服務(wù)器會(huì)話中從瀏覽器向后導(dǎo)航。
背景技術(shù):
通過(guò)入口的機(jī)理,不同的網(wǎng)上內(nèi)容可以被組合到一個(gè)或多個(gè)入口頁(yè)中,然后被傳送到客戶端并顯示在客戶端運(yùn)行的瀏覽器應(yīng)用程序中。入口頁(yè)一般從服務(wù)器根據(jù)超文本傳輸協(xié)議(HTTP)來(lái)傳送。網(wǎng)絡(luò)應(yīng)用是一個(gè)存儲(chǔ)在任何服務(wù)器上的單獨(dú)的可調(diào)用單元,并一般經(jīng)由統(tǒng)一資源定位符(URL)地址來(lái)調(diào)用。在入口級(jí)上,可調(diào)用單元及其內(nèi)容有時(shí)被稱為portlet(也稱作pagelets、iViews、webparts等等)。因此,應(yīng)用程序表現(xiàn)為一個(gè)portlet,其根據(jù)頁(yè)面布局方案被組合到一個(gè)或多個(gè)網(wǎng)頁(yè)上。頁(yè)面是入口中的導(dǎo)航單元,即用戶總是導(dǎo)航向一個(gè)頁(yè)面,然后在那個(gè)頁(yè)面上調(diào)用所有的portlet。
為簡(jiǎn)單起見(jiàn),假設(shè)portlet被隔離,即內(nèi)容運(yùn)行在被稱為IFRAME的頁(yè)面結(jié)構(gòu)的內(nèi)部。用戶可以用幾種方法圍繞portlet導(dǎo)航,比如使用鼠標(biāo)裝置和/或指針在portlet內(nèi)部″點(diǎn)擊″。對(duì)于內(nèi)部應(yīng)用程序?qū)Ш?例如導(dǎo)航到″下一屏″),用戶被認(rèn)為是在不影響圍繞portlet或應(yīng)用程序的頁(yè)面級(jí)的應(yīng)用程序的″內(nèi)部″。當(dāng)用戶在入口級(jí)上導(dǎo)航時(shí),用戶還選擇一個(gè)新的入口頁(yè)甚至與目標(biāo)相同的入口頁(yè)。當(dāng)其發(fā)生時(shí),舊的入口頁(yè)在瀏覽器中被轉(zhuǎn)移到包括應(yīng)用程序的portlet。因此,當(dāng)他或她離開(kāi)包括一個(gè)應(yīng)用程序的入口頁(yè)時(shí),該用戶″離開(kāi)了應(yīng)用程序″。
網(wǎng)絡(luò)應(yīng)用中的狀態(tài)基于網(wǎng)絡(luò)的應(yīng)用程序包括從服務(wù)器傳送到客戶端的頁(yè)面序列。當(dāng)用戶經(jīng)由頁(yè)面序列導(dǎo)航時(shí),服務(wù)器保持″狀態(tài)″,即保持用戶在先前顯示的頁(yè)面上輸入的相關(guān)數(shù)據(jù)、導(dǎo)航歷史、和應(yīng)用程序響應(yīng)用戶所需的數(shù)據(jù),等等。狀態(tài)一般由服務(wù)器保留在會(huì)話中,并由服務(wù)器產(chǎn)生的會(huì)話標(biāo)識(shí)符(″會(huì)話ID″)來(lái)識(shí)別每個(gè)會(huì)話。會(huì)話ID可以被保留在瀏覽器″cookie″(由服務(wù)器發(fā)送并被存儲(chǔ)在客戶端上以備將來(lái)之用的信息)或保留在包含在服務(wù)器響應(yīng)的URL中。所有非平凡的應(yīng)用程序都需要服務(wù)器狀態(tài)能夠快速響應(yīng)用戶請(qǐng)求。因此,網(wǎng)上大多數(shù)業(yè)務(wù)應(yīng)用軟件都是″有狀態(tài)的″。
通常,每個(gè)用戶和/或每個(gè)瀏覽器進(jìn)程只能有一個(gè)會(huì)話。當(dāng)用戶可以同時(shí)運(yùn)行相同應(yīng)用程序的兩個(gè)或多個(gè)情況時(shí),網(wǎng)絡(luò)應(yīng)用是″多會(huì)話允許″,在極端情況下它們?cè)谙嗤瑸g覽器窗口的兩個(gè)IFRAME中是并行的。多會(huì)話應(yīng)用程序從沒(méi)有會(huì)話ID的″開(kāi)始URL″開(kāi)始,然后服務(wù)器創(chuàng)建一個(gè)會(huì)話并通過(guò)把會(huì)話ID放入U(xiǎn)RL(URL重寫(xiě))或cookie中來(lái)保持會(huì)話關(guān)聯(lián)。真正實(shí)現(xiàn)多會(huì)話的應(yīng)用程序不能將cookie用于會(huì)話ID,這是因?yàn)楫?dāng)cookie共存于相同的瀏覽器窗口(進(jìn)程)之中時(shí)它們將相互覆蓋,并且服務(wù)器沒(méi)有辦法區(qū)分來(lái)自相同瀏覽器中兩個(gè)IFRAME的兩個(gè)并行請(qǐng)求。從而,多會(huì)話能力需要在URL中對(duì)會(huì)話ID進(jìn)行編碼。這使得將在下面進(jìn)一步描述的″會(huì)話返回″復(fù)雜化。
在多會(huì)話與頁(yè)面″向后″導(dǎo)航的結(jié)合中出現(xiàn)了一個(gè)問(wèn)題。為了允許多會(huì)話的能力,會(huì)話標(biāo)識(shí)符必須在URL中被編碼,這意味著入口頁(yè)包括開(kāi)始URL,然后服務(wù)器以新的會(huì)話響應(yīng)于每個(gè)應(yīng)用程序的情況。但是當(dāng)用戶″回到″相同的頁(yè)面時(shí),相同的開(kāi)始URL被解除,并且服務(wù)器還是無(wú)法區(qū)分頁(yè)面上兩個(gè)嵌入式幀中的兩個(gè)情況。
基本會(huì)話終止2000年7月11日申請(qǐng)的序號(hào)為09/614,167的相關(guān)US申請(qǐng)中描述了一個(gè)用于服務(wù)器會(huì)話終止的方法,其標(biāo)題為″Method,Apparatus and System forNetwork-Based Peer-to-Peer Business Transactions″(用于基于網(wǎng)絡(luò)的對(duì)等商務(wù)交易的方法、設(shè)備和系統(tǒng)),該申請(qǐng)?jiān)诖俗鳛閰⒖急唤Y(jié)合。該系統(tǒng)方案是調(diào)用網(wǎng)絡(luò)應(yīng)用的一個(gè)入口。
用戶進(jìn)入應(yīng)用程序并從基于服務(wù)器的應(yīng)用程序請(qǐng)求頁(yè)面/屏幕。應(yīng)用程序需要諸如″會(huì)話狀態(tài)″之類的資源來(lái)執(zhí)行所請(qǐng)求的對(duì)話或在線事務(wù),還有可能在一部分事務(wù)中需要獲取鎖定或其它的關(guān)鍵資源。因?yàn)镠TTP是無(wú)連接的,所以當(dāng)用戶在事務(wù)中途離開(kāi)應(yīng)用程序時(shí)服務(wù)器在技術(shù)上不會(huì)注意到,這種情況可能由于導(dǎo)航到另一個(gè)入口頁(yè)乃至簡(jiǎn)單地關(guān)閉瀏覽器而發(fā)生。當(dāng)用戶沒(méi)有明確地終止應(yīng)用程序時(shí),比如當(dāng)用戶從會(huì)話退出時(shí),服務(wù)器的會(huì)話狀態(tài)(并甚至可能是鎖定)被保留在服務(wù)器上,從而在超時(shí)前一直浪費(fèi)資源。因此,入口必須在用戶離開(kāi)應(yīng)用程序時(shí)通知服務(wù)器和/或應(yīng)用程序,以便服務(wù)器可以釋放與應(yīng)用程序相關(guān)的資源。
基本會(huì)話終止的工作如下所述入口提供一個(gè)對(duì)話管理程序(SM),其部分地隱藏在入口/瀏覽器中運(yùn)行。當(dāng)在入口頁(yè)內(nèi)部啟動(dòng)應(yīng)用程序時(shí),作為它在超文本標(biāo)記語(yǔ)言中的響應(yīng)的一部分,它向SM發(fā)送一個(gè)″會(huì)話終止URL″。當(dāng)當(dāng)前頁(yè)面被轉(zhuǎn)移并且SM已經(jīng)存儲(chǔ)當(dāng)前頁(yè)面的會(huì)話終止URL時(shí),會(huì)話終止URL被送回服務(wù)器以便服務(wù)器然后可以釋放會(huì)話及其所有的關(guān)聯(lián)資源。這就是服務(wù)器怎樣得到應(yīng)用程序被離開(kāi),并且應(yīng)該釋放它的資源的″通知″。
實(shí)現(xiàn)會(huì)話返回的需要在用戶離開(kāi)應(yīng)用程序之后,即當(dāng)用戶通過(guò)導(dǎo)航或通過(guò)瀏覽器捷徑等等跳轉(zhuǎn)到另一個(gè)頁(yè)面時(shí),上述的″基本會(huì)話終止″就馬上終止會(huì)話。然而,用戶一般都希望能夠探索第二個(gè)應(yīng)用程序或頁(yè)面的不同頁(yè)面,然后返回到先前訪問(wèn)的頁(yè)面/應(yīng)用程序并繼續(xù)在那里工作。根本上,用戶需要往往被暴露在入口中的有狀態(tài)的應(yīng)用程序大多根據(jù)瀏覽器中的″返回″功能來(lái)如同靜態(tài)內(nèi)容一樣運(yùn)轉(zhuǎn)。
問(wèn)題在于不知道用戶是否將回到第一頁(yè)面/應(yīng)用程序,這意味著在用戶離開(kāi)時(shí)需要立即通知服務(wù)器,然后在那個(gè)時(shí)候釋放其會(huì)話狀態(tài)。因此涉及一個(gè)修改基本會(huì)話終止的概念以允許″會(huì)話返回″的問(wèn)題,即用戶返回之前訪問(wèn)的會(huì)話的狀態(tài)能夠和用戶離開(kāi)它時(shí)相同。
從而,不允許應(yīng)用程序只是簡(jiǎn)單地″等待″返回或之后繼續(xù),而必須實(shí)際上在用戶離開(kāi)時(shí)立即終止。為了能夠返回,應(yīng)用程序需要首先存儲(chǔ)返回所必需的任何狀態(tài)部分。存儲(chǔ)全部?jī)?nèi)部狀態(tài)或其它形式的狀態(tài)是不希望的,比如存儲(chǔ)所有的用戶接口字段。此外,不能期望應(yīng)用程序在任何給定時(shí)間存儲(chǔ)其整個(gè)當(dāng)前狀態(tài),因此可以充分地保存任何工作中間狀態(tài)。從而,會(huì)話狀態(tài)的持續(xù)不變部分將被存儲(chǔ)而過(guò)渡狀態(tài)將被丟棄。被持續(xù)存儲(chǔ)的狀態(tài)被稱作″會(huì)話返回狀態(tài)″,它通常包括正在被顯示/編輯的對(duì)象ID,以及可能的一些UI狀態(tài),比如標(biāo)簽條中活動(dòng)的標(biāo)簽、樹(shù)形的開(kāi)放關(guān)閉狀態(tài)、等等。用這些從會(huì)話返回狀態(tài)再裝載的參數(shù)來(lái)重新開(kāi)始應(yīng)用程序?qū)⒔o予用戶所期望的″返回″或會(huì)話返回感受,并給予應(yīng)用程序足夠的數(shù)據(jù)以用該數(shù)據(jù)自己重新開(kāi)始。
從而,假定應(yīng)用程序能夠在它接收終止請(qǐng)求時(shí)存儲(chǔ)其會(huì)話返回狀態(tài)并能夠重新開(kāi)始,這樣它將再裝載之前的會(huì)話返回狀態(tài)來(lái)實(shí)質(zhì)上顯示與用戶離開(kāi)時(shí)相同的輸出。然而,這意味著基本會(huì)話終止概念的終止請(qǐng)求的解釋已經(jīng)從″完全終止″變?yōu)椤宕鎯?chǔ)會(huì)話返回狀態(tài)然后終止″。這個(gè)新的解釋可稱作″會(huì)話最小化″。應(yīng)用程序存儲(chǔ)在會(huì)話返回狀態(tài)中的多少是可變的并是在該應(yīng)用程序的范圍內(nèi)。在什么都沒(méi)有保留的情況中,會(huì)話最小化與常規(guī)的完全終止相同,其中應(yīng)用程序每次都從頭重新開(kāi)始。
當(dāng)應(yīng)用程序已經(jīng)被重新開(kāi)始,并且已經(jīng)加載了″會(huì)話返回狀態(tài)″時(shí),一個(gè)問(wèn)題出現(xiàn)在應(yīng)用程序的多個(gè)情況同時(shí)活動(dòng)的時(shí)候。服務(wù)器在重新開(kāi)始應(yīng)用程序時(shí)將不知道該加載哪個(gè)″會(huì)話返回狀態(tài)″。無(wú)論是在單獨(dú)的瀏覽器窗口還是在同一個(gè)瀏覽器窗口中開(kāi)始應(yīng)用程序(即入口頁(yè)中的兩個(gè)嵌入式幀之內(nèi)、等等),這個(gè)問(wèn)題都同樣存在。
發(fā)明內(nèi)容
本文檔公開(kāi)了一個(gè)方法和系統(tǒng),其使得用戶能夠在入口環(huán)境中用相干或″有狀態(tài)″方法在應(yīng)用程序之間導(dǎo)航。如果沒(méi)有這個(gè)特色,網(wǎng)絡(luò)應(yīng)用的用戶將在它們導(dǎo)航到另一個(gè)應(yīng)用程序時(shí)丟失他們留下的應(yīng)用程序狀態(tài)。在一個(gè)實(shí)施例中,一個(gè)計(jì)算系統(tǒng)被配置用于″會(huì)話返回實(shí)現(xiàn)″,即允許有狀態(tài)網(wǎng)絡(luò)應(yīng)用適度地支持″瀏覽器返回″功能或一般來(lái)說(shuō)″用任何形式返回″的一個(gè)技術(shù)。這是在入口中提供有狀態(tài)網(wǎng)絡(luò)應(yīng)用以提高整個(gè)用戶體驗(yàn)的一個(gè)重要特色。
代替服務(wù)器產(chǎn)生會(huì)話ID,客戶端調(diào)用程序,一般是入口或經(jīng)由瀏覽器,向服務(wù)器傳送一個(gè)給出的會(huì)話ID,調(diào)用程序希望用這個(gè)會(huì)話ID在起動(dòng)時(shí)間引用會(huì)話并其后用于終止和重新開(kāi)始。每次應(yīng)用程序開(kāi)始的時(shí)候,這個(gè)被稱作外部會(huì)話ID(ESID)的給定會(huì)話ID就被傳送,并優(yōu)選地用作應(yīng)用程序開(kāi)始URL中的URL參數(shù)。
如果ESID不引用返回狀態(tài)為之保留的活動(dòng)或最小化的會(huì)話,則新的會(huì)話被創(chuàng)建并與該ESID相關(guān)聯(lián)。在會(huì)話/應(yīng)用程序的過(guò)程中ESID是不相干的,因?yàn)榉?wù)器除了″新的″ESID之外仍然可以保留其″舊的″在URL或cookie中編碼的會(huì)話ID。然而當(dāng)用戶離開(kāi)頁(yè)面/應(yīng)用程序時(shí),客戶端SM通過(guò)向包括ESID的服務(wù)器發(fā)送終止URL來(lái)通知服務(wù)器這個(gè)事實(shí)。然后,服務(wù)器最小化其并將其存儲(chǔ)在ESID密匙之下。當(dāng)應(yīng)用程序開(kāi)始URL用ESID被發(fā)送到服務(wù)器,并且服務(wù)器發(fā)現(xiàn)它具有被存儲(chǔ)用于ESID的最小化會(huì)話(即會(huì)話返回狀態(tài))時(shí),應(yīng)用程序被開(kāi)始并被給予作為最初參數(shù)(″init parameters″)的會(huì)話返回狀態(tài)。
一種用于實(shí)現(xiàn)有狀態(tài)網(wǎng)絡(luò)應(yīng)用的會(huì)話返回的方法包括從與被終止的網(wǎng)絡(luò)應(yīng)用會(huì)話有關(guān)的客戶端接收終止URL,終止URL包括一個(gè)識(shí)別被終止的網(wǎng)絡(luò)應(yīng)用會(huì)話的ESID。該方法還包括存儲(chǔ)與ESID相關(guān)的被終止網(wǎng)絡(luò)應(yīng)用會(huì)話的相關(guān)狀態(tài),和從客戶端接收一個(gè)請(qǐng)求以用于新的網(wǎng)絡(luò)應(yīng)用會(huì)話。該方法還包括確定請(qǐng)求是否包括一個(gè)對(duì)應(yīng)于被終止網(wǎng)絡(luò)應(yīng)用會(huì)話的ESID的標(biāo)識(shí)符。如果該標(biāo)識(shí)符對(duì)應(yīng)于被終止網(wǎng)絡(luò)應(yīng)用會(huì)話的ESID,則方法包括根據(jù)與被終止網(wǎng)絡(luò)應(yīng)用會(huì)話相關(guān)的狀態(tài)來(lái)服務(wù)新的網(wǎng)絡(luò)應(yīng)用會(huì)話。
如果一個(gè)應(yīng)用程序用相同的ESID被不斷地調(diào)用,則當(dāng)用戶離開(kāi)時(shí)該應(yīng)用程序可以被終止,而當(dāng)它再次被開(kāi)始時(shí),應(yīng)用程序?qū)嵸|(zhì)上從其被終止時(shí)的相同點(diǎn)繼續(xù)。為了允許多個(gè)情況、會(huì)話終止、以及相同應(yīng)用程序的會(huì)話返回,ESID必須由客戶端而不是服務(wù)器來(lái)重復(fù)地產(chǎn)生和發(fā)送。
從而,ESID被用來(lái)在應(yīng)用程序啟動(dòng)時(shí)引用一個(gè)會(huì)話,并在重新開(kāi)始應(yīng)用程序時(shí)用于會(huì)話返回。這提供了一個(gè)有狀態(tài)的應(yīng)用程序,并允許服務(wù)器最小化應(yīng)用程序的狀態(tài),或換言之只保留″會(huì)話返回″狀態(tài),但是仍然充分地終止了該應(yīng)用程序。此外,ESID的使用允許應(yīng)用程序?qū)⒂糜幸饬x的方法來(lái)″繼續(xù)″。
本公開(kāi)技術(shù)的好處在于,只要應(yīng)用程序被終止,即用戶一離開(kāi),服務(wù)器就釋放所有與應(yīng)用程序相關(guān)的資源。然而,在此描述的技術(shù)允許用戶返回到應(yīng)用程序并用一個(gè)方法繼續(xù),因此用戶不用每次都重新開(kāi)始訪問(wèn)應(yīng)用程序,并允許同時(shí)區(qū)別應(yīng)用程序的多個(gè)情況。使用ESID的技術(shù)實(shí)現(xiàn)了全部這些特色。
用下面的說(shuō)明書(shū)和附圖來(lái)闡明一個(gè)或多個(gè)詳細(xì)的實(shí)施例。其它的特色、目的、以及優(yōu)點(diǎn)將通過(guò)說(shuō)明書(shū)、附圖、以及權(quán)利要求而變得明顯。
這些及其它方面現(xiàn)在將參考以下附圖被詳細(xì)描述。
圖1是一個(gè)網(wǎng)絡(luò)應(yīng)用會(huì)話的框圖。
圖2是一個(gè)實(shí)現(xiàn)有狀態(tài)網(wǎng)絡(luò)應(yīng)用的會(huì)話返回方法的流程圖。
不同附圖中的相同的附圖標(biāo)記指的是相同的元件。
具體實(shí)施例方式
在此描述的系統(tǒng)和技術(shù)涉及實(shí)現(xiàn)一個(gè)瀏覽器,它可以向后導(dǎo)航以用與在之前會(huì)話中先前訪問(wèn)時(shí)的相同狀態(tài)到達(dá)先前訪問(wèn)的應(yīng)用程序頁(yè)面。
為了允許多會(huì)話能力,區(qū)分頁(yè)面上兩個(gè)IFRAME中的兩個(gè)情況的機(jī)理包括提供一個(gè)具有″外部會(huì)話標(biāo)識(shí)符″(ESID)的入口頁(yè)的開(kāi)始URL。ESID是一個(gè)在兩種應(yīng)用情況之間(關(guān)于相同的頁(yè)面)不同的參數(shù),并在服務(wù)器中產(chǎn)生不同/獨(dú)立的會(huì)話。從而,當(dāng)用戶返回相同的頁(yè)面時(shí),ESID用單獨(dú)的應(yīng)用程序請(qǐng)求被再次傳送,并且服務(wù)器因此能夠邏輯上重新連接恰當(dāng)?shù)臅?huì)話并允許用戶繼續(xù)。
從而,代替讓服務(wù)器任意地創(chuàng)建一個(gè)會(huì)話ID,入口或調(diào)用程序在服務(wù)器上開(kāi)始(即第一次調(diào)用的時(shí)候)應(yīng)用程序時(shí)傳送一個(gè)ESID。比如在這樣的情況中,用戶離開(kāi)到另一個(gè)應(yīng)用程序然后回來(lái)之后,甚至當(dāng)用戶關(guān)閉瀏覽器并之后重新開(kāi)始應(yīng)用程序時(shí),這個(gè)ESID因此能夠被用來(lái)回到應(yīng)用程序。ESID允許將進(jìn)一步詳細(xì)描述的″會(huì)話返回″。
注意,ESID與會(huì)話管理(見(jiàn)下文)和入口無(wú)關(guān)。ESID可以在任何開(kāi)始應(yīng)用程序的URL上使用。當(dāng)服務(wù)器簡(jiǎn)單地讓會(huì)話或應(yīng)用程序等候超時(shí)(而不是終止它們)時(shí),ESID可以在應(yīng)用程序被再次開(kāi)始(開(kāi)始URL)時(shí)被使用。因此,一個(gè)懸而未決的會(huì)話/應(yīng)用程序情況被選擇,并允許用戶繼續(xù)那個(gè)會(huì)話。
ESID可以是用作選擇會(huì)話的密匙的隨機(jī)字符串,例如″page3/app1″和″page3/app2″。ESID還可以是不像之前例子一樣產(chǎn)生來(lái)表示特殊頁(yè)面環(huán)境(context)的明確的固定值,或意指應(yīng)用程序在被離開(kāi)時(shí)被充分終止的″沒(méi)有值″,并總是當(dāng)用戶再進(jìn)入時(shí)從頭開(kāi)始。這是可以按照需要被微調(diào)的配置問(wèn)題。此外,諸如″窗口ID″之類的元件可以被附加到ESID,因此可以在運(yùn)行獨(dú)立的應(yīng)用程序情況的兩個(gè)瀏覽器窗口中具有兩個(gè)頁(yè)面情況。
ESID的使用還可以擴(kuò)展基本會(huì)話終止的機(jī)理。代替于要求服務(wù)器向會(huì)話管理程序發(fā)送一個(gè)會(huì)話終止URL,客戶端/入口可以發(fā)送一個(gè)傳送ESID的標(biāo)準(zhǔn)終止通知。這具有會(huì)話管理現(xiàn)在還支持任何MIME類型的額外好處。它需要服務(wù)器明白基于ESID的終止通知,并且明白所有來(lái)到服務(wù)器(對(duì)任何用戶)的ESID都是不同的。
圖1示出一個(gè)網(wǎng)絡(luò)應(yīng)用會(huì)話100的框圖,包括顯示應(yīng)用程序104的一個(gè)或多個(gè)情況的入口頁(yè)102,即一個(gè)或多個(gè)網(wǎng)頁(yè)及其內(nèi)容,從服務(wù)器108平臺(tái)被服務(wù),即由一個(gè)應(yīng)用服務(wù)器等等來(lái)服務(wù)。應(yīng)用程序104的每個(gè)情況最終被顯示在客戶端110上運(yùn)行的瀏覽器中。網(wǎng)絡(luò)應(yīng)用會(huì)話100的應(yīng)用程序104還可以與其它網(wǎng)上內(nèi)容同時(shí)被顯示,比如來(lái)自本地客戶應(yīng)用程序或來(lái)自另一個(gè)應(yīng)用服務(wù)器的內(nèi)容。入口頁(yè)102包括會(huì)話管理程序(SM)106,該會(huì)話管理程序基于從應(yīng)用程序104的每個(gè)情況接收的會(huì)話信息來(lái)管理每個(gè)應(yīng)用程序會(huì)話100。SM106可以是頁(yè)面級(jí)的腳本代碼。在一個(gè)實(shí)施例中,SM106根據(jù)用戶導(dǎo)航以及經(jīng)由應(yīng)用程序104的不同頁(yè)面的活動(dòng)來(lái)識(shí)別一個(gè)會(huì)話。
為了使用戶訪問(wèn)先前查看的頁(yè)面,甚至當(dāng)用戶離開(kāi)應(yīng)用程序和驅(qū)使會(huì)話管理程序向應(yīng)用服務(wù)器118發(fā)送一個(gè)終止通知時(shí),服務(wù)器平臺(tái)108保留會(huì)話的一部分″狀態(tài)″,即與應(yīng)用程序的情況有關(guān)的信息。在一個(gè)實(shí)施例中,服務(wù)器平臺(tái)108包括會(huì)話存儲(chǔ)器109,用來(lái)存儲(chǔ)用戶已經(jīng)離開(kāi)的應(yīng)用程序的會(huì)話狀態(tài)。該狀態(tài)包括情況標(biāo)識(shí)符,還包括會(huì)話的每個(gè)頁(yè)面的頁(yè)面標(biāo)識(shí)符。情況標(biāo)識(shí)符可以被存儲(chǔ)用于在會(huì)話中訪問(wèn)的每個(gè)頁(yè)面,從而提供具有多個(gè)情況標(biāo)識(shí)符的一個(gè)存儲(chǔ)器。會(huì)話存儲(chǔ)器109可以是在計(jì)算機(jī)的存儲(chǔ)器中或在數(shù)據(jù)庫(kù)中。
入口服務(wù)器112包括用來(lái)生成入口頁(yè)102的頁(yè)面生成器122。入口服務(wù)器112還包括URL生成器120。當(dāng)用戶在會(huì)話內(nèi)以及在應(yīng)用程序外導(dǎo)航的時(shí)候,入口服務(wù)器112的URL生成器120提供ESID,即情況標(biāo)識(shí)符。ESID還包括在會(huì)話中訪問(wèn)的每個(gè)頁(yè)面的頁(yè)面標(biāo)識(shí)符。因此,當(dāng)用戶想要再訪問(wèn)一個(gè)會(huì)話,并想要該會(huì)話的頁(yè)面狀態(tài)像離開(kāi)它時(shí)一樣的時(shí)候,入口頁(yè)102將向服務(wù)器平臺(tái)108發(fā)送一個(gè)用于被請(qǐng)求頁(yè)面的開(kāi)始URL,以及一個(gè)與所請(qǐng)求的頁(yè)面相關(guān)的ESID。
使用這個(gè)ESID,查看狀態(tài)在用戶離開(kāi)頁(yè)面時(shí)被保存,并且在用戶再訪問(wèn)時(shí)被再次找到。ESID可以一般被格式化來(lái)包括頁(yè)面標(biāo)識(shí)符(頁(yè)面1D)。既然用戶可以經(jīng)由入口頁(yè)102或在瀏覽器/客戶端110上使用多于一個(gè)的窗口,那么ESID還可以包括一個(gè)窗口標(biāo)識(shí)符(窗口ID)。另外,產(chǎn)生會(huì)話的那個(gè)ESID可以被指定,其中,相同的頁(yè)面由許多入口頁(yè)102共享。因此,相同的ESID可以從不同位置并在多個(gè)路徑上來(lái)指定。
ESID由頁(yè)面特性來(lái)指定,并可以經(jīng)由URL被傳送到服務(wù)器平臺(tái)108。當(dāng)所請(qǐng)求的應(yīng)用程序不包括一個(gè)ESID時(shí),該應(yīng)用程序當(dāng)其每次被請(qǐng)求時(shí)都簡(jiǎn)單地最新開(kāi)始。當(dāng)服務(wù)器平臺(tái)108接收ESID和開(kāi)始URL時(shí),映射模塊116把ESID映射到特殊會(huì)話,即它檢查對(duì)應(yīng)的ESID是否已經(jīng)被存儲(chǔ)在會(huì)話存儲(chǔ)器109中。如果該ESID不存在,則服務(wù)器平臺(tái)108創(chuàng)建所請(qǐng)求的應(yīng)用程序104的一個(gè)新的會(huì)話情況。如果該ESID存在,則服務(wù)器平臺(tái)108開(kāi)始應(yīng)用程序104并把在保留狀態(tài)中的該ESID傳送到入口頁(yè)102。
在一個(gè)實(shí)施例中,ESID被保留在客戶端SM106中。入口服務(wù)器112產(chǎn)生入口頁(yè)102,包括類屬的SM106以及用于(一個(gè)或多個(gè))應(yīng)用程序104的(一個(gè)或多個(gè))FRAME。既然ESID還由入口服務(wù)器112產(chǎn)生并被添加到FRAME的開(kāi)始URL,那么對(duì)應(yīng)用程序的請(qǐng)求來(lái)自應(yīng)用程序104每個(gè)情況的內(nèi)容FRAME。入口服務(wù)器112知道該ESID,并可以把嵌入腳本產(chǎn)生到入口頁(yè)102中以把ESID輸入SM106。因?yàn)椴恍枰?yè)面ID并且它剛好攜帶了包括ESID的SM106,所以頁(yè)面102自身不知道ESID。
在另一個(gè)實(shí)施例中,ESID在開(kāi)始URL上被傳送,但是不是保留在SM106中而是只保留在入口服務(wù)器112中。這時(shí)候,入口頁(yè)102獲得一個(gè)唯一的ID,在這種情況下入口服務(wù)器112存儲(chǔ)產(chǎn)生用于這個(gè)頁(yè)面的ESID。既然用戶可以同時(shí)具有多個(gè)從入口內(nèi)容開(kāi)始的瀏覽器窗口,那么需要頁(yè)面ID。當(dāng)用戶離開(kāi)該頁(yè)面時(shí),SM106通知入口服務(wù)器112,傳送頁(yè)面ID。然后,入口服務(wù)器112用ESID產(chǎn)生一組終止請(qǐng)求,并且向客戶端110發(fā)送這個(gè)″終止頁(yè)面″,它們從客戶端110被發(fā)射到合適的服務(wù)器平臺(tái)108。
圖2是一個(gè)實(shí)現(xiàn)有狀態(tài)網(wǎng)絡(luò)應(yīng)用的會(huì)話返回方法200的流程圖。在202,客戶端調(diào)用程序(一般為入口或經(jīng)由瀏覽器)向服務(wù)器傳送一個(gè)調(diào)用程序期望在起動(dòng)時(shí)間引用會(huì)話并在其后例如終止并重新開(kāi)始的給定的BSD。每次應(yīng)用程序被開(kāi)始時(shí)ESID就被傳送,最好是作為應(yīng)用程序的開(kāi)始URL中的URL參數(shù),然而向服務(wù)器傳送ESID的其它方法也可以被使用。
服務(wù)器在204接收ESID。在每個(gè)會(huì)話/應(yīng)用程序的過(guò)程中,ESID是無(wú)關(guān)系的。實(shí)際上,除了″新的″ESID之外,服務(wù)器仍然可以在URL或cookie中保留其″舊的″編碼會(huì)話ID。然而當(dāng)用戶離開(kāi)頁(yè)面/應(yīng)用程序時(shí),客戶端SM向服務(wù)器發(fā)送一個(gè)具有ESID的終止URL,然后服務(wù)器在206最小化其狀態(tài)并將其存儲(chǔ)在ESID密匙之下。只要終止了應(yīng)用程序,即一旦用戶離開(kāi),服務(wù)器就釋放所有與應(yīng)用程序相關(guān)的資源。
在210,當(dāng)具有ESID的應(yīng)用程序開(kāi)始URL在208被發(fā)送給服務(wù)器時(shí),通過(guò)在具有一個(gè)或多個(gè)先前接收的被存儲(chǔ)的ESID請(qǐng)求中映射ESID,服務(wù)器確定它是否具有為這個(gè)ESID存儲(chǔ)的最小化會(huì)話(即會(huì)話返回狀態(tài))。在212,如果請(qǐng)求ESID不引用返回狀態(tài)為之保留的活動(dòng)或最小化的會(huì)話,則新的會(huì)話被創(chuàng)建并與請(qǐng)求ESID相關(guān)聯(lián)。在214,如果服務(wù)器具有與請(qǐng)求ESID相關(guān)的會(huì)話返回狀態(tài),則應(yīng)用程序被開(kāi)始并被給予作為最初參數(shù)(″init parameters″)的會(huì)話返回狀態(tài)。會(huì)話在216繼續(xù)。
因此,如果不斷地使用相同的ESID來(lái)調(diào)用應(yīng)用程序,則應(yīng)用程序可以在用戶離開(kāi)時(shí)被立即終止,但是可以在它被再次開(kāi)始時(shí)實(shí)質(zhì)上在相同點(diǎn)繼續(xù)。對(duì)于多個(gè)情況、會(huì)話終止、和相同應(yīng)用程序的會(huì)話返回,ESID必須由客戶端來(lái)產(chǎn)生和重復(fù)發(fā)送。從而,ESID在應(yīng)用程序啟動(dòng)時(shí)被用來(lái)引用會(huì)話,和在再開(kāi)始應(yīng)用程序時(shí)用于會(huì)話返回。
在一個(gè)實(shí)施例中,ESID是一個(gè)沒(méi)有內(nèi)部結(jié)構(gòu)的密鑰串。從而,用戶可以簡(jiǎn)單地用不同的ESID調(diào)用應(yīng)用程序X三次,例如通過(guò)http//server/X?ESID=a類型的URL。本公開(kāi)技術(shù)最好是使用客戶端SM的基本會(huì)話管理功能,每次用戶離開(kāi)應(yīng)用程序或應(yīng)用程序頁(yè)面時(shí),基本會(huì)話管理功能就向服務(wù)器發(fā)送終止通知。
在一個(gè)例子中,入口采用基本會(huì)話管理并產(chǎn)生ESID。入口包括多個(gè)具有名稱的頁(yè)面,比如″/roles/salesrep/ovw_page4″等等。現(xiàn)在,把應(yīng)用程序″orderdetail″的兩個(gè)情況考慮為相同頁(yè)面″od1″和″od2″的portlet。對(duì)服務(wù)器會(huì)話ID使用cookie,這兩個(gè)頁(yè)面都將共享相同的會(huì)話ID并從而引用相同的服務(wù)器會(huì)話。從而,用戶在od1和od2中不能獨(dú)立地瀏覽,這是因?yàn)橐粋€(gè)頁(yè)面將總是顯示其它頁(yè)面的數(shù)據(jù)。如果服務(wù)器/應(yīng)用程序使用URL編碼的會(huì)話ID,則od1和od2可以是分離的,但是它們必須在用戶離開(kāi)時(shí)被終止。當(dāng)用戶返回時(shí),因?yàn)榉?wù)器不知道請(qǐng)求來(lái)自何處,則它們將總是從頭開(kāi)始,并且開(kāi)始URL總是開(kāi)始新的會(huì)話?,F(xiàn)在,使用諸如″/roles/salesrep/ovw_page4/od1″和″roles/sales rep/ovw_page4/od2″之類的ESID,存在兩個(gè)清楚地定義的服務(wù)器會(huì)話,它們對(duì)應(yīng)于它們相應(yīng)頁(yè)面上的這些應(yīng)用程序的情況。當(dāng)用戶返回到一個(gè)或這兩個(gè)頁(yè)面的時(shí)候,兩個(gè)會(huì)話都可以在它們停止時(shí)被繼續(xù)。
ESID的值還具有另一個(gè)含意當(dāng)在兩個(gè)頁(yè)面上提供相同的應(yīng)用程序時(shí),并當(dāng)將″頁(yè)面路徑″用作上述的可仿效ESID顯示時(shí),兩個(gè)獨(dú)立的會(huì)話被提供。這樣,一個(gè)應(yīng)用程序可以在入口導(dǎo)航中在兩個(gè)位置被獨(dú)立地使用。
ESID還處理另一個(gè)標(biāo)準(zhǔn)的會(huì)話ID缺乏能力的情況。在另一個(gè)例子中,當(dāng)用戶用″ctrl-N″功能打開(kāi)一個(gè)新的瀏覽器窗口即新開(kāi)一個(gè)瀏覽器窗口時(shí),但是使用了諸如相同的共享cookie之類的相同進(jìn)程,出現(xiàn)與兩個(gè)應(yīng)用程序并行類似的情況。無(wú)論是應(yīng)用程序引用相同的服務(wù)器會(huì)話并從而混淆地相互影響,還是開(kāi)始新的會(huì)話,用戶都決不會(huì)返回其中之一。當(dāng)窗口ID被附加到ESID時(shí),新的窗口將自動(dòng)引用新的會(huì)話和/或應(yīng)用程序情況。從而,向相同的應(yīng)用程序開(kāi)啟新的并行和獨(dú)立的工作空間現(xiàn)在可以被完成。
上述ESID機(jī)理的使用需要一個(gè)提供作為先決條件的基本會(huì)話終止的環(huán)境(context)。然而,另外在一個(gè)替代方案中,ESID可以由管理員手動(dòng)地附加到應(yīng)用程序開(kāi)始URL。在入口環(huán)境中,ESID值可以被動(dòng)態(tài)地產(chǎn)生,包括作為應(yīng)用程序路徑的靜態(tài)部分(例如″/roles/salesrep/ovw_page4/od1″和諸如″<窗口ID>″之類的動(dòng)態(tài)部分。最好是,ESID用結(jié)合了不同的動(dòng)態(tài)值的URL模板來(lái)產(chǎn)生。
根據(jù)一個(gè)方法,即使當(dāng)用戶離開(kāi)應(yīng)用程序和會(huì)話管理程序發(fā)送終止通知的時(shí)候,服務(wù)器也保留一些″狀態(tài)″。這些狀態(tài)可以被保留為″只讀/瀏覽狀態(tài)″(例如已經(jīng)選擇了哪個(gè)對(duì)象、樹(shù)狀態(tài)、等等)。這些狀態(tài)一般都很小并且可以保留較長(zhǎng)時(shí)間。當(dāng)用戶再訪問(wèn)應(yīng)用程序的相同頁(yè)面時(shí),服務(wù)器再裝載″瀏覽狀態(tài)″并用與用戶離開(kāi)時(shí)相同的狀態(tài)來(lái)顯示相同的頁(yè)面。
為了實(shí)現(xiàn)會(huì)話返回特色以及SRM特色,代替剛接收的CLOSE命令,SRM概念及其服務(wù)器解釋可以接收下列更詳細(xì)的不同通知LEAVE(離開(kāi))指出用戶離開(kāi)了應(yīng)用程序,例如經(jīng)由入口由導(dǎo)航離開(kāi)。這與之前的CLOSE命令相同。然而在這種情況下,應(yīng)用程序應(yīng)該″最小化″(即最小化其資源使用)而不是終止。例如通過(guò)寫(xiě)入對(duì)話外狀態(tài)、到只讀模式、釋放所有鎖定和存儲(chǔ)器、等等,應(yīng)用程序可以最小化。應(yīng)用程序可以只須存儲(chǔ)足夠的信息來(lái)″恢復(fù)″并回到相同的狀態(tài)。應(yīng)用程序可以記錄用戶在應(yīng)用程序中的活動(dòng),例如經(jīng)由字段導(dǎo)航和輸入數(shù)據(jù),然后串行化數(shù)據(jù)。這可能只需要存儲(chǔ)器的20-30k字節(jié)。用戶可能再也不回來(lái),也可能不會(huì)再有另外的通知(直到LOGOFF)。結(jié)果狀態(tài)將能夠存在很長(zhǎng)一段時(shí)間(超時(shí)),因?yàn)樽钚∠薅鹊馁Y源正在被使用。
RESTORE(恢復(fù))在具有現(xiàn)有ESID的頁(yè)面返回之后被接收。應(yīng)用程序應(yīng)該還原″最小化″操作,即讀取返回?cái)?shù)據(jù)并恢復(fù)到之前的狀態(tài)?,F(xiàn)在,應(yīng)用程序再次處于″昂貴的″(資源-方式)狀態(tài)。
LOGOFF(注銷)在用戶實(shí)際上離開(kāi)入口的時(shí)候被發(fā)送。除了LEAVE之外這也是一個(gè)可選通知-應(yīng)用程序現(xiàn)在可以立即終止而不是最小化。
注意,LEAVE、RESTORE和LOGOFF的通知是應(yīng)用程序從服務(wù)器獲得的通知。SRM只發(fā)送CLOSE(現(xiàn)在被映射到LEAVE),和LOGOFF。服務(wù)器識(shí)別″找到存在ESID″的情況(會(huì)話返回),然后向應(yīng)用程序發(fā)送RESTORE通知。
至此,我們?yōu)槊總€(gè)ESID和應(yīng)用程序(每個(gè)用戶)收集一個(gè)′會(huì)話返回狀態(tài)′。自然出現(xiàn)一個(gè)問(wèn)題,即為了從頭開(kāi)始新的情況,在用戶完全離開(kāi)應(yīng)用程序入口的時(shí)候被發(fā)送給(一個(gè)或多個(gè))應(yīng)用程序的輔助LOGOFF事件可以怎樣來(lái)定義。當(dāng)服務(wù)器接收具有ESID的LOGOFF通知時(shí),它將丟棄用于ESID的會(huì)話返回狀態(tài)。
在此描述的系統(tǒng)和技術(shù)的不同執(zhí)行過(guò)程可以在數(shù)字電子電路、集成電路、特別在被設(shè)計(jì)的專用集成電路(專用集成電路)、計(jì)算機(jī)硬件、固件、軟件、和/或其結(jié)合中被實(shí)現(xiàn)。這些不同的執(zhí)行過(guò)程可以包括一個(gè)或多個(gè)計(jì)算機(jī)程序中的執(zhí)行過(guò)程,這些程序在至少包括一個(gè)可編程處理器的可編程系統(tǒng)上是可執(zhí)行的和/或可翻譯的,可編程系統(tǒng)可能是特殊或通用的,被連接來(lái)從存儲(chǔ)系統(tǒng)、至少一個(gè)輸入裝置、和至少一個(gè)輸出裝置接收和向那里發(fā)射數(shù)據(jù)和指令。
這些計(jì)算機(jī)程序(亦稱程序、軟件、軟件應(yīng)用程序或代碼)包括用于可編程處理器的機(jī)器指令,并且可以在高級(jí)程序上的和/或面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言、和/或在匯編/機(jī)器語(yǔ)言中被執(zhí)行。在此使用的術(shù)語(yǔ)″機(jī)器可讀媒介″指的是用來(lái)向可編程處理器提供機(jī)器指令和/或數(shù)據(jù)的任何計(jì)算機(jī)程序產(chǎn)品、設(shè)備和/或裝置(例如磁盤、光盤、存儲(chǔ)器、可編程邏輯裝置(PLD)),包括接收作為機(jī)器可讀信號(hào)的機(jī)器指令。術(shù)語(yǔ)″機(jī)器可讀信號(hào)″指的是用來(lái)向可編程處理器提供機(jī)器指令和/或數(shù)據(jù)的任何信號(hào)。
為了提供與用戶的相互作用,在此描述的系統(tǒng)和技術(shù)可以在計(jì)算機(jī)上被執(zhí)行,計(jì)算機(jī)具有用于向用戶顯示信息的顯示裝置(例如CRT(陰極射線管)或LCD(液晶顯示器)監(jiān)控器)、以及用戶可以用來(lái)向計(jì)算機(jī)提供輸入的鍵盤和定點(diǎn)設(shè)備(例如鼠標(biāo)或跟蹤球)。其它類型的裝置也可以被用來(lái)提供與用戶相互作用;例如,提供給用戶的反饋可以是任何形式的傳感反饋(例如視覺(jué)反饋、聽(tīng)覺(jué)反饋、或觸覺(jué)反饋);并且來(lái)自用戶的輸入可以用包括聲學(xué)、語(yǔ)音或觸覺(jué)輸入的任何形式來(lái)接收。
在此描述的系統(tǒng)和技術(shù)可以在計(jì)算系統(tǒng)中被執(zhí)行,計(jì)算系統(tǒng)包括后端部分(例如數(shù)據(jù)服務(wù)器)、或包括中間件部分(例如應(yīng)用服務(wù)器)、或包括前端部分(例如具有圖形用戶界面或?yàn)g覽器的客戶端計(jì)算機(jī),用戶可以經(jīng)由它們與在此描述的系統(tǒng)和技術(shù)的執(zhí)行過(guò)程相互作用),或這類后端、中間件、或前端部分的任意結(jié)合。系統(tǒng)的各個(gè)部分可以通過(guò)任何形式或數(shù)字?jǐn)?shù)據(jù)通信的媒介(例如通信網(wǎng)絡(luò))互連。通信網(wǎng)絡(luò)的例子包括局域網(wǎng)(″LAN″)、廣域網(wǎng)(″WAN″)、和互聯(lián)網(wǎng)。
計(jì)算系統(tǒng)可以包括客戶機(jī)和服務(wù)器。客戶機(jī)和服務(wù)器通常彼此遠(yuǎn)離并一般經(jīng)由通信網(wǎng)絡(luò)來(lái)交互作用。客戶機(jī)和服務(wù)器的關(guān)系根據(jù)在相應(yīng)計(jì)算機(jī)上運(yùn)行并彼此具有客戶機(jī)和服務(wù)器關(guān)系的計(jì)算機(jī)程序而發(fā)生。
盡管上面已經(jīng)詳細(xì)描述了幾個(gè)實(shí)施例,然而其它的修改也是可能的。本公開(kāi)討論的部分經(jīng)由入口來(lái)操作,但是任意數(shù)量的接入系統(tǒng)和方法可以被用來(lái)管理器網(wǎng)絡(luò)應(yīng)用會(huì)話。圖2中描述的邏輯流程不要求用所示的特殊順序、或連續(xù)順序來(lái)實(shí)現(xiàn)所希望的結(jié)果。其它實(shí)施例可以在本申請(qǐng)的權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于實(shí)現(xiàn)有狀態(tài)網(wǎng)絡(luò)應(yīng)用的會(huì)話返回的方法,包括從與被終止的網(wǎng)絡(luò)應(yīng)用會(huì)話相關(guān)的客戶端接收終止統(tǒng)一資源定位符(URL),終止URL包括用于識(shí)別被終止的網(wǎng)絡(luò)應(yīng)用會(huì)話的外部會(huì)話標(biāo)識(shí)符(ESID);存儲(chǔ)與ESID相關(guān)的被終止的網(wǎng)絡(luò)應(yīng)用會(huì)話相關(guān)的狀態(tài);從客戶端接收用于新的網(wǎng)絡(luò)應(yīng)用會(huì)話的請(qǐng)求;確定該請(qǐng)求是否包括對(duì)應(yīng)于被終止的網(wǎng)絡(luò)應(yīng)用會(huì)話的ESID的標(biāo)識(shí)符;和如果該標(biāo)識(shí)符對(duì)應(yīng)于被終止網(wǎng)絡(luò)應(yīng)用會(huì)話的ESID,則根據(jù)與被終止網(wǎng)絡(luò)應(yīng)用會(huì)話相關(guān)的狀態(tài)來(lái)服務(wù)新的網(wǎng)絡(luò)應(yīng)用會(huì)話。
2.權(quán)利要求1的方法,其中,存儲(chǔ)與被終止的網(wǎng)絡(luò)應(yīng)用相關(guān)的狀態(tài)還包括存儲(chǔ)識(shí)別被終止網(wǎng)絡(luò)應(yīng)用的ESID。
3.權(quán)利要求1的方法,還包括從客戶端所使用的入口接收ESID。
4.權(quán)利要求1的方法,還包括響應(yīng)于服務(wù)新的網(wǎng)絡(luò)應(yīng)用接收一個(gè)ESID。
5.權(quán)利要求1的方法,還包括每次新的網(wǎng)絡(luò)應(yīng)用會(huì)話開(kāi)始時(shí)接收一個(gè)ESID。
6.權(quán)利要求1的方法,其中,請(qǐng)求包括一個(gè)開(kāi)始URL。
7.權(quán)利要求1的方法,還包括如果標(biāo)識(shí)符不對(duì)應(yīng)于被終止網(wǎng)絡(luò)應(yīng)用會(huì)話的ESID,則用啟動(dòng)模式來(lái)服務(wù)新的網(wǎng)絡(luò)應(yīng)用會(huì)話。
8.權(quán)利要求1的方法,還包括最小化與被終止網(wǎng)絡(luò)應(yīng)用相關(guān)的狀態(tài)。
9.權(quán)利要求1的方法,還包括把ESID存儲(chǔ)在一個(gè)表中。
10.權(quán)利要求9的方法,其中,確定請(qǐng)求是否包括對(duì)應(yīng)于被終止網(wǎng)絡(luò)應(yīng)用會(huì)話的ESID的標(biāo)識(shí)符還包括把該標(biāo)識(shí)符映射到一個(gè)或多個(gè)存儲(chǔ)在表中的ESID。
11.權(quán)利要求3的方法,其中,ESID由入口的會(huì)話管理程序產(chǎn)生。
12.一種用于實(shí)現(xiàn)有狀態(tài)網(wǎng)絡(luò)應(yīng)用的會(huì)話返回的方法,包括從客戶端接收用于新的網(wǎng)絡(luò)應(yīng)用會(huì)話的請(qǐng)求;確定該請(qǐng)求是否包括一個(gè)對(duì)應(yīng)于存儲(chǔ)在存儲(chǔ)器中的外部會(huì)話標(biāo)識(shí)符(ESID)的標(biāo)識(shí)符并識(shí)別被終止的網(wǎng)絡(luò)應(yīng)用會(huì)話;如果標(biāo)識(shí)符對(duì)應(yīng)于被終止網(wǎng)絡(luò)應(yīng)用會(huì)話的ESID,則根據(jù)與被終止網(wǎng)絡(luò)應(yīng)用會(huì)話相關(guān)的狀態(tài)來(lái)服務(wù)新的網(wǎng)絡(luò)應(yīng)用會(huì)話;和如果該標(biāo)識(shí)符不對(duì)應(yīng)于被終止網(wǎng)絡(luò)應(yīng)用會(huì)話的ESID,則用啟動(dòng)模式來(lái)服務(wù)新的網(wǎng)絡(luò)應(yīng)用會(huì)話。
13.權(quán)利要求12的方法,還包括存儲(chǔ)與被終止網(wǎng)絡(luò)應(yīng)用會(huì)話相關(guān)的狀態(tài)。
14.權(quán)利要求12的方法,還包括從具有終止統(tǒng)一資源定位符(URL)的客戶端接收ESID。
15.權(quán)利要求13的方法,其中,該狀態(tài)是與被終止網(wǎng)絡(luò)應(yīng)用會(huì)話相關(guān)的會(huì)話返回狀態(tài)。
16.權(quán)利要求12的方法,其中,確定請(qǐng)求是否包括對(duì)應(yīng)于被終止網(wǎng)絡(luò)應(yīng)用會(huì)話的ESID的標(biāo)識(shí)符還包括把該標(biāo)識(shí)符映射到一個(gè)或多個(gè)存儲(chǔ)在表中的ESID。
17.權(quán)利要求12的方法,其中,請(qǐng)求包括一個(gè)開(kāi)始URL。
18.一種用于執(zhí)行網(wǎng)絡(luò)應(yīng)用的頁(yè)面返回的系統(tǒng),包括一入口,被配置來(lái)產(chǎn)生與網(wǎng)絡(luò)應(yīng)用會(huì)話相關(guān)的外部會(huì)話標(biāo)識(shí)符(ESID),并還被配置來(lái)向服務(wù)器發(fā)送ESID;和一服務(wù)器平臺(tái),其用于管理服務(wù)器并具有被配置來(lái)存儲(chǔ)與ESID相關(guān)的狀態(tài)的存儲(chǔ)器和被配置來(lái)把對(duì)新的網(wǎng)絡(luò)應(yīng)用會(huì)話的請(qǐng)求映射到存儲(chǔ)器中的一個(gè)或多個(gè)ESID的映射模塊,如果請(qǐng)求對(duì)應(yīng)于一個(gè)ESID,則服務(wù)器平臺(tái)還被配置來(lái)用與一個(gè)ESID相關(guān)的狀態(tài)來(lái)服務(wù)新的網(wǎng)絡(luò)應(yīng)用會(huì)話。
19.權(quán)利要求18的系統(tǒng),其中,服務(wù)器是網(wǎng)絡(luò)應(yīng)用服務(wù)器。
20.權(quán)利要求18的系統(tǒng),其中,入口還包括一個(gè)生成ESID的會(huì)話管理程序。
全文摘要
用于提供允許多會(huì)話能力和會(huì)話返回啟用有狀態(tài)web應(yīng)用的機(jī)理,其包括提供一個(gè)具有″外部會(huì)話標(biāo)識(shí)符″(ESID)的被請(qǐng)求入口頁(yè)的開(kāi)始URL。ESID是一個(gè)在兩種情況的應(yīng)用之間(關(guān)于相同頁(yè))不同的參數(shù),并在服務(wù)器中產(chǎn)生不同/獨(dú)立的會(huì)話。當(dāng)用戶返回相同頁(yè)時(shí),ESID用單獨(dú)的應(yīng)用請(qǐng)求被再次傳送,并且服務(wù)器因此能夠邏輯上重新連接恰當(dāng)?shù)臅?huì)話并允許用戶繼續(xù)。在用戶先前已經(jīng)留下來(lái)到另一個(gè)應(yīng)用并希望返回之后,或甚至當(dāng)用戶關(guān)閉瀏覽器然后之后重新開(kāi)始應(yīng)用時(shí),ESID可以被用來(lái)返回給應(yīng)用。
文檔編號(hào)G06F17/30GK1720703SQ200380104841
公開(kāi)日2006年1月11日 申請(qǐng)日期2003年12月2日 優(yōu)先權(quán)日2002年12月2日
發(fā)明者于爾根·海曼, 尤多·奧弗曼, 羅曼·海爾, 伯恩哈德·德里特勒, 雷納·布倫德?tīng)?申請(qǐng)人:Sap股份公司