一種web服務器、處理用戶會話的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種web服務器、處理用戶會話的方法及系統(tǒng),該方法包括:web服務器接收客戶端發(fā)來的原始請求;所述web服務器根據預先設置的重定向策略判斷是否重定向所述原始請求,如果是,則將所述原始請求轉換為重定向請求,并根據所述重定向策略將所述重定向請求發(fā)送給應用服務器,觸發(fā)所述應用服務器根據會話信息處理所述重定向請求;其中,所述會話信息由所述web服務器和所述應用服務器實時獲取并保存到數據庫服務器里。本發(fā)明提供了一種web服務器、處理用戶會話的方法及系統(tǒng),能夠提高處理用戶會話的效率。
【專利說明】一種web服務器、處理用戶會話的方法及系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及通信【技術領域】,特別涉及本發(fā)明實施例提供了一種web服務器、處理用戶會話的方法及系統(tǒng)。
【背景技術】
[0002]用戶會話(sess1n)是一個用戶與服務器之間的不中斷的請求響應序列。對用戶的每個請求,服務器能夠識別出請求來自于同一個用戶。當一個未知的用戶向Web應用程序發(fā)送第一個請求時就開始了一個會話。當用戶明確結束會話或服務器在一個預定義的時限內不從用戶接受任何請求時,會話就結束了。
[0003]現有技術中,處理用戶會話的系統(tǒng)采用三層部署結構,由客戶端層、web服務器層和數據庫層三個部分組成。在一個用戶會話中,用戶通過客戶端向web服務器發(fā)送請求,web服務器對客戶端發(fā)來的請求進行處理,并從數據庫獲取相關數據。
[0004]通過上述描述可見,現有技術中的三層部署結構中,所有的處理邏輯都存放在web服務器上,造成應用程序的資源分布過于集中在web服務器上,處理效率較低。
【發(fā)明內容】
[0005]本發(fā)明提供提供了一種web服務器、處理用戶會話的方法及系統(tǒng),能夠提高處理用戶會話的效率。
[0006]第一方面,本發(fā)明提供了一種處理用戶會話的方法,該方法包括: web服務器接收客戶端發(fā)來的原始請求;
所述web服務器根據預先設置的重定向策略判斷是否重定向所述原始請求,如果是,則將所述原始請求轉換為重定向請求,并根據所述重定向策略將所述重定向請求發(fā)送給應用服務器,觸發(fā)所述應用服務器根據會話信息處理所述重定向請求;
其中,所述會話信息由所述web服務器和所述應用服務器實時獲取并保存到數據庫服務器里。
[0007]進一步地,所述原始請求中包括:請求類型;
所述重定向策略包括:需要重定向的請求類型、請求類型與重定向的地址的對應關系;
所述web服務器根據預先設置的重定向策略判斷是否重定向所述原始請求,包括:所述web服務器判斷所述原始請求中的請求類型是否為需要重定向的請求類型,如果是,則確定重定向所述原始請求,否則,確定不重定向所述原始請求;
所述根據所述重定向策略將所述重定向請求發(fā)送給應用服務器,包括:
根據所述原始請求中的請求類型和所述請求類型與重定向的地址的對應關系確定所述重定向的地址,根據確定的所述重定向地址將所述重定向請求發(fā)送給應用服務器。
[0008]進一步地,所述將所述原始請求轉換為重定向請求,包括:將用戶會話的標識以cookie的方式添加到所述重定向請求中,觸發(fā)所述應用服務器根據所述用戶會話的標識獲取對應的會話信息;
和/或,
在所述將所述原始請求轉換為重定向請求之后,在所述根據所述重定向策略將所述重定向請求發(fā)送給應用服務器之前,還包括:在所述重定向請求中添加SSL證書信息,觸發(fā)所述應用服務器根據所述SSL證書信息驗證所述重定向請求。
[0009]進一步地,所述重定向請求中包括:用戶會話的標識;
在所述應用服務器根據會話信息處理所述重定向請求之前,還包括:所述應用服務器根據所述重定向請求中的所述用戶會話的標識從所述數據庫服務器中獲取所述用戶會話的標識對應的會話信息。
[0010]第二方面,本發(fā)明提供了一種web服務器,包括:
接收單元,用于接收客戶端發(fā)來的原始請求;
判斷單元,用于根據預先設置的重定向策略判斷是否重定向所述原始請求,當判斷結果為是時,通知轉換單元;
所述轉換單元,用于將所述原始請求轉換為重定向請求,并根據所述重定向策略將所述重定向請求發(fā)送給應用服務器,觸發(fā)所述應用服務器根據會話信息處理所述重定向請求;
其中,所述會話信息由所述web服務器和所述應用服務器實時獲取并保存到數據庫服務器里。
[0011]進一步地,所述原始請求中包括:請求類型;
所述重定向策略包括:需要重定向的請求類型、請求類型與重定向的地址的對應關系;
所述判斷單元,用于判斷所述原始請求中的請求類型是否為需要重定向的請求類型,當判斷結果為是時,則確定重定向所述原始請求,當判斷結果為否時,則確定不重定向所述原始請求;
所述轉換單元,用于根據所述原始請求中的請求類型和所述請求類型與重定向的地址的對應關系,確定所述重定向的地址,并根據確定的所述重定向地址將所述重定向請求發(fā)送給應用服務器。
[0012]進一步地,所述轉換單元,用于將用戶會話的標識以cookie的方式添加到所述重定向請求中,觸發(fā)所述應用服務器根據所述用戶會話的標識獲取對應的會話信息。
[0013]進一步地,所述轉換單元,還用于在所述重定向請求中添加SSL證書信息,觸發(fā)所述應用服務器根據所述SSL證書信息驗證所述重定向請求。
[0014]第三方面,本發(fā)明提供了一種處理用戶會話的系統(tǒng),包括:客戶端、數據庫服務器、如第二方面任一所述的web服務器、應用服務器;
所述客戶端,用于向所述web服務器發(fā)送原始請求;
所述應用服務器,用于接收所述web服務器發(fā)來的重定向請求,從所述數據庫服務器中獲取會話信息,并根據所述會話信息處理所述重定向請求;
所述數據庫服務器,用于保存由所述web服務器和所述應用服務器實時獲取的所述會話信息。
[0015]進一步地,所述web服務器和所述應用服務器,分別按照預先設置的同一會話存儲方式,將實時獲取的會話信息存儲到所述數據庫服務器中。
[0016]本發(fā)明提供了一種web服務器、處理用戶會話的方法及系統(tǒng),將部分應用服務重定向到應用服務器上,客戶端的請求可以通過web服務器轉發(fā)到應用服務器上,應用服務器可以與web服務器共享會話信息,應用服務器根據對應的會話信息處理web服務器發(fā)來的請求,減輕了單個服務器的負荷,能夠提高處理用戶會話的效率。
【專利附圖】
【附圖說明】
[0017]為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0018]圖1本發(fā)明一實施例提供了一種處理用戶會話的方法的流程圖。
[0019]圖2本發(fā)明一實施例提供了另一種處理用戶會話的方法的流程圖。
[0020]圖3本發(fā)明一實施例提供了一種web服務器的結構示意圖。
[0021]圖4本發(fā)明一實施例提供了一種處理用戶會話的系統(tǒng)的結構示意圖。
【具體實施方式】
[0022]為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例,基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0023]本發(fā)明實施例提供了一種處理用戶會話的方法,參見圖1,該方法包括:
步驟101:web服務器接收客戶端發(fā)來的原始請求。
[0024]步驟102:所述web服務器根據所述重定向策略判斷是否重定向所述原始請求,如果是,則執(zhí)行步驟103,否則,執(zhí)行步驟104。
[0025]步驟103:所述web服務器將所述原始請求轉換為重定向請求,并根據所述重定向策略將所述重定向請求發(fā)送給應用服務器,觸發(fā)所述應用服務器根據會話信息處理所述重定向請求。
[0026]步驟104:所述web服務器根據會話信息處理所述原始請求。
[0027]其中,所述會話信息由所述web服務器和所述應用服務器實時獲取并保存到數據庫服務器里。
[0028]上述實施例提供了一種處理用戶會話的方法,將部分應用服務重定向到應用服務器上,客戶端的請求可以通過web服務器轉發(fā)到應用服務器上,應用服務器可以與web服務器共享會話信息,應用服務器根據對應的會話信息處理web服務器發(fā)來的請求,減輕了單個服務器的負荷,能夠提高處理用戶會話的效率。
[0029]針對如何確定當前的原始請求是否可以通過應用服務器來處理,可以通過以下方式來實現:所述原始請求中包括:請求類型。
[0030]所述重定向策略包括:需要重定向的請求類型。
[0031]所述web服務器根據預先設置的重定向策略判斷是否重定向所述原始請求,包括:
所述web服務器判斷所述原始請求中的請求類型是否為需要重定向的請求類型,如果是,則確定重定向所述原始請求,否則,確定不重定向所述原始請求。
[0032]舉例來說,可以將重定向策略配置在配置文件中:
所述web服務器根據所述重定向策略判斷是否重定向所述原始請求,包括:
所述服務器判斷所述請求類型是否在預先設置的配置文件中,如果是,則確定重定向所述原始請求,否則,確定不重定向所述原始請求,其中,在配置文件中配置了重定向策略。
[0033]另外,針對不同的請求類型可能需要不同的應用服務器來處理,不同的應用服務器對應不同的重定向的地址,可以通過請求類型來確定重定向的地址。舉例來說,所述重定向策略包括:請求類型與重定向的地址的對應關系。
[0034]所述根據所述重定向策略將所述重定向請求發(fā)送給應用服務器,包括:
根據所述原始請求中的請求類型和所述請求類型與重定向的地址的對應關系確定所述重定向的地址,根據確定的所述重定向地址將所述重定向請求發(fā)送給應用服務器。
[0035]為了使得應用服務器能夠獲得數據庫服務器中的當前用戶會話對應的會話信息,需要給應用服務器發(fā)送當前用戶會話的標識,用戶會話的標識可以通過cookie的方式添加到重定向請求中,可以通過以下方式實現:所述將所述原始請求轉換為重定向請求,包括:將用戶會話的標識以cookie的方式添加到所述重定向請求中,觸發(fā)所述應用服務器根據所述用戶會話的標識獲取對應的會話信息。
[0036]在重定向請求的傳輸過程中,存儲信息安全問題,為了保證信息傳輸的安全,需要對重定向請求進行加密,舉例來說,在所述將所述原始請求轉換為重定向請求之后,在所述根據所述重定向策略將所述重定向請求發(fā)送給應用服務器之前,還包括:在所述重定向請求中添加SSL (Secure Sockets Layer ,安全套接層)證書信息,觸發(fā)所述應用服務器根據所述SSL證書信息驗證所述重定向請求。
[0037]在數據庫服務器中存儲了會話信息,而每一個會話信息對應了一個用戶會話的標識,web服務器和應用服務器可以根據用戶會話的標識來獲取數據庫服務器中對應的會話信息。在應用服務器處理重定向請求時需要對應的會話信息,可以通過以下方式實現:所述重定向請求中包括:用戶會話的標識。
[0038]在所述應用服務器根據會話信息處理所述重定向請求之前,還包括:所述應用服務器根據所述重定向請求中的所述用戶會話的標識從所述數據庫服務器中獲取所述用戶會話的標識對應的會話信息。
[0039]圖2示出了本發(fā)明實施例提供了另一種處理用戶會話的方法,參見圖2,由客戶端、web服務器、應用服務器和數據庫服務器四層部署結構配合,共同完成用戶會話處理的一個流程包括:
步驟201:客戶端發(fā)起用戶會話,向web服務器發(fā)送原始請求。
[0040]步驟202:所述web服務器接收所述客戶端發(fā)來的原始請求。
[0041]步驟203:所述web服務器判斷所述原始請求中的請求類型是否為需要重定向的請求類型,如果是,則執(zhí)行步驟步驟204,否則,依次執(zhí)行步驟步驟212、步驟213,其中,所述原始請求中包括:請求類型。
[0042]步驟204:web服務器將所述原始請求轉換為重定向請求,其中,所述重定向請求中包括:用戶會話的標識。
[0043]步驟205:web服務器根據所述原始請求中的請求類型和預先設置的請求類型與重定向的地址的對應關系確定重定向的地址。
[0044]步驟206:所述web服務器根據確定的所述重定向地址將所述重定向請求發(fā)送給應用服務器。
[0045]步驟207:所述應用服務器接收所述web服務器發(fā)來的所述重定向請求。
[0046]步驟208:所述應用服務器根據所述重定向請求中的所述用戶會話的標識從所述數據庫服務器中獲取所述用戶會話的標識對應的會話信息。
[0047]步驟209:所述應用服務器根據獲取的所述會話信息處理所述重定向請求,向所述web服務器返回重定向請求結果。
[0048]步驟210:所述web服務器接收所述重定向請求結果。
[0049]步驟211:所述web服務器根據所述重定向請求結果生成第一原始請求結果,將所述第一原始請求結果發(fā)送給所述客戶端,結束當前流程。
[0050]步驟212:所述web服務器根據用戶會話的標識從所述數據庫服務器中獲取所述用戶會話的標識對應的會話信息。
[0051]步驟213:所述web服務器根據獲取的所述會話信息處理所述原始請求,向所述客戶端返回第二原始請求結果。
[0052]參見圖3,本發(fā)明實施例提供了一種web服務器,包括:
接收單元301,用于接收客戶端發(fā)來的原始請求。
[0053]判斷單元302,用于根據預先設置的重定向策略判斷是否重定向所述原始請求,當判斷結果為是時,通知轉換單元303。
[0054]所述轉換單元303,用于將所述原始請求轉換為重定向請求,并根據所述重定向策略將所述重定向請求發(fā)送給應用服務器,觸發(fā)所述應用服務器根據會話信息處理所述重定向請求。
[0055]其中,所述會話信息由所述web服務器和所述應用服務器實時獲取并保存到數據庫服務器里。
[0056]在一種可能的實現方式中,所述原始請求中包括:請求類型;
所述重定向策略包括:需要重定向的請求類型、請求類型與重定向的地址的對應關系。
[0057]所述判斷單元302,用于判斷所述原始請求中的請求類型是否為需要重定向的請求類型,當判斷結果為是時,則確定重定向所述原始請求,當判斷結果為否時,則確定不重定向所述原始請求。
[0058]所述轉換單元303,用于根據所述原始請求中的請求類型和所述請求類型與重定向的地址的對應關系,確定所述重定向的地址,并根據確定的所述重定向地址將所述重定向請求發(fā)送給應用服務器。
[0059]在一種可能的實現方式中,所述轉換單元303,用于將用戶會話的標識以cookie的方式添加到所述重定向請求中,觸發(fā)所述應用服務器根據所述用戶會話的標識獲取對應的會話信息。
[0060]在一種可能的實現方式中,所述轉換單元303,還用于在所述重定向請求中添加SSL證書信息,觸發(fā)所述應用服務器根據所述SSL證書信息驗證所述重定向請求。
[0061]參見圖4,本發(fā)明實施例提供了一種處理用戶會話的系統(tǒng),包括:客戶端401、上述實施例中任一所述的web服務器402、應用服務器403、數據庫服務器404。
[0062]所述客戶端401,用于向所述web服務器402發(fā)送原始請求。
[0063]所述應用服務器403,用于接收所述web服務器402發(fā)來的重定向請求,從所述數據庫服務器404中獲取會話信息,并根據所述會話信息處理所述重定向請求。
[0064]所述數據庫服務器404,用于保存由所述web服務器和所述應用服務器實時獲取的所述會話信息。
[0065]為了是web服務器和應用服務器能夠共享數據庫服務器中的會話信息,所述web服務器和所述應用服務器,分別按照預先設置的同一會話存儲方式,將實時獲取的會話信息存儲到所述數據庫服務器中??蛇x的,會話存儲方式為sess1n存儲方式。
[0066]在一種可能的實現方式中,所述系統(tǒng)預先配置為四層部署結構,所述系統(tǒng)包括客戶端層、web服務器層、應用服務器層、數據庫服務器層,其中,所述客戶端層包括至少一個客戶端、web服務器層包括至少一個web服務器、應用服務器層包括至少一個應用服務器、數據庫服務器層包括至少一個數據庫服務器。其中,客戶端為應用的最前端,可以是瀏覽器;web服務器為部署了 web頁面相關文件的服務器,可以部署應用供客戶端訪問;應用服務器為部署了應用的服務器,應用可以是WCF (Windows Communicat1n Foundat1n,Windows通訊接口)服務;數據庫服務器為存儲了應用的數據和會話信息的服務器。
[0067]在上述各實施例中,為了使得web服務器和應用服務器獲取當前用戶會話的各種信息,所述會話信息包括:用戶會話的標識、當前用戶會話所在的應用程序的名稱、用戶會話的創(chuàng)建時間、用戶會話過期的時間、用戶會話超時的時間、當前用戶會話內存儲的數據、用戶會話被鎖定的時間、用戶會話的鎖的唯一標識。另外,會話信息中還可以包括:當前用戶的登錄信息、當前用戶的權限信息。web服務器和應用服務器可以通過當前用戶的登錄信息來確定當前用戶是否已經登錄,web服務器和應用服務器可以通過當前用戶的權限信息確定當前用戶是否有權限獲得原始請求中所請求的數據。
[0068]另外,原始請求中可以包括:請求的路徑、請求附帶的數據。
[0069]在一個系統(tǒng)中,用不同的物理機器作為web服務器和應用服務器,web服務器和應用服務器的會話信息的存儲方式均為自定義的sess1n存儲方式,其中,sess1n存儲方式的數據庫表包括以下各項:
Sess1nID列存儲一個用戶會話的唯一標識;
Applciat1nName列存儲當前用戶會話所在的應用程序的名稱;
Created列存儲用戶會話創(chuàng)建的時間;
Expires列存儲著用戶會話過期的時間;
Timeout列表示用戶會話超時時間;
Sess1nItems列表示當前用戶會話內存儲的數據;
LockDate列表示用戶會話被鎖定的時間;
LockID列表示用戶會話的鎖的唯一標示。
[0070]在IIS環(huán)境下,基于上述的sess1n存儲方式的數據庫表,設計與之對應的用戶會話實體類和與實現用戶會話的相應管理類,用戶會話實體類和相應管理類都繼承至System.Web.Sess1nState.Sess1nStateStoreProviderBase 類,并重寫了關于 sess1n存取的相關方法,可以通過以下自定義sess1n存取操作類的代碼實現sess1n存取的方法:
//基于數據庫的Sess1n State Store實現
public class DBSess1nProvider: Sess1nStateStoreProviderBase
{
//應用名稱
private string appIicat1nName = string.Empty;
//過期時間,放入配置文件
private int timeoutDefault = 30;
#reg1n 方法
public override Sess1nStateStoreDataCreateNewStoreData(HttpContext context, int timeout)
{
timeoutDefault = timeout;
return new Sess1nStateStoreData(newSess1nStateItemCollect1n (),Sess1nStateUtiIity.GetSess1nStaticObjects(context), timeout);
}
public override void CreateUninitializedItem(HttpContext context,string id, int timeout)
{……}
}
在web服務器上部署一個web應用webdemo,該應用的訪問路徑為http://1calhost/webdemo,在該應用的配置文件的system, web配置節(jié)中添加關于數據庫服務器信息的配置節(jié):
〈sess1nState cookieless=〃false〃 regenerateExpiredSess1nId=〃true〃mode=〃Custom〃 customProvider=〃DatabaseProvider〃 timeout=〃30〃>
〈providers〉
〈add name=〃DatabaseProvider〃 type=〃Dem0.DBSess1nProvider,Demo 〃 />
〈/providers〉
</sess1nState>
在應用服務器上部署一個web應用appdemo,該應用的訪問路徑為http://192.168.1.100/appdemo,該應用的配置文件中配置與上述web服務器相同的內容。
[0071]為了信息安全,可以將該appdemo應用設置為需要證書驗證,對該應用的配置文件中設置如下配置節(jié):
<appSettings>
〈! 一 wcf服務地址,配置SSL證書驗證一>
〈add key=〃AppDomain〃 value=〃https://192.168.1.100/appdemo^ />
〈!一SSL證書CN名稱一>
〈add key=〃AppSSLCNName〃 value=〃appdemo〃 />
</appSettings>
為了將原始請求轉給對應的應用服務器,需要編寫用于重定向請求的HttpHandler,該HttpHandler能夠判斷是否將原始請求轉發(fā)給應用服務器,并且能夠將原始請求轉換為重定向請求,該HttpHandler可以通過以下代碼實現:
/// 〈summary>
///實現接口,Url重寫
/// </summary)
public void ProcessRequest(HttpContext context)
{
HttpRequest request = context.Request;
Stream stream = context.Request.1nputStream; //獲取當前傳入
Http輸入流
long length = stream.Length;
byte 口 data = context.Request.BinaryRead(Qnt) length) ;//對當前輸入流進行指定字節(jié)數的二進制讀取
string strContent = Encoding.UTF8.GetString (data) ;//角軍石馬為UTF8編碼形式的字符串
string appDomain = GSPGlobalParameter.GetItem(GSPGlobalParameterRegister.AppDomain);
string appIicat1nName = request.Applicat1nPath;
string appServerName = request.RawUrl;
string url = string.Empty;
if (applicat1nName != 〃〃 && applicat1nName != 〃/〃)
{
url = string.Format (〃 {0} {1} 〃,appDomain, appServerName.ToLower ().Replace (applicat1nName.ToLower (), 〃〃));
}
else
{
url = string.Format (〃 {0} {1} 〃,appDomain, appServerName.ToLower ());
}
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create (url);
webRequest.Method = 〃Post〃;
webRequest.ContentType = 〃applicat1n/json〃;
if (cert != null)
{
webRequest.ClientCertificates.Add (cert);
}
Cookie c = new Cookie (〃ASP.NET_Sess1nId〃,context.Sess1n.Sess1nID);
string ssIName = GSPGlobalParameter.GetItem(GSPGlobalParameterRegister.SSLCNName);
c.Domain = sslName;
webRequest.CookieContainer = new CookieContainer ();
webRequest.CookieContainer.Add(c);
StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream ());
if (!string.1sNullOrEmpty (strContent))
{
requestWriter.WriteAsync(strContent);
}
requestWriter.Close ();
requestWriter = null;
WebResponse webResponse;
try
{
webResponse = webRequest.GetResponseO ;
}
catch (WebExcept1n ex)
{
webResponse = (HttpWebResponse) ex.Response;
}
webRequest = null;
Stream myStream = webResponse.GetResponseStreamO ;
StreamReader sr = new StreamReader(myStream, Encoding.UTF8);
string responseContext = string.Empty;
if (sr != null)
{
context.Response.ContentType = 〃applicat1n/json〃;
string ss = sr.ReadToEnd ();
if (!String.1sNullOrEmpty(ss))
{
try
{
JObject joResponse = JObject.Parse (ss);
responseContext = joResponse.ToString();
}
catch
{
responseContext = ss;
}
}
}
context.Response.Write(responseContext);
sr.Close ();
}
為了將轉發(fā)規(guī)則設置為請求類型為SVC”的原始請求可以轉發(fā)給應用服務器,需要為所述的Webdemo的配置文件的“system.webServer”配置節(jié)中添加如下配置節(jié):〈handlers〉
〈add name = 〃UrlRewrite〃 verb = 〃*〃 path = "*.svc〃 type = ^dem0.UrlRewriteHandler, demo^ />
〈/handlers)
實現上述設置后,就可以通過web服務器的URL (Uniform Resource Locator,統(tǒng)一資源定位符)來訪問應用服務器上的服務資源。
[0072]通過上述描述可見,本發(fā)明實施例提供的一種處理用戶會話的方法及系統(tǒng),具有如下有益效果:
1、本發(fā)明實施例提供了一種web服務器、處理用戶會話的方法及系統(tǒng),將部分應用服務重定向到應用服務器上,客戶端的請求可以通過web服務器轉發(fā)到應用服務器上,應用服務器可以與web服務器共享會話信息,應用服務器根據對應的會話信息處理web服務器發(fā)來的請求,減輕了單個服務器的負荷,能夠提高處理用戶會話的效率;
2、本發(fā)明實施例提供了一種web服務器、處理用戶會話的方法及系統(tǒng),web服務器和應用服務器能夠使用自己的獨立緩存,可以部署在不同的硬件設備上,在處理用戶會話時可以使用更多地硬件資源,能夠提高服務器個體的效率,合理安排web服務器和應用服務器的硬件資源比例能夠帶來效率更大的提升。
[0073]上述設備內的各單元之間的信息交互、執(zhí)行過程等內容,由于與本發(fā)明方法實施例基于同一構思,具體內容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。
[0074]需要說明的是,在本文中,諸如第一和第二之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個......”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同因素。
[0075]本領域普通技術人員可以理解:實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲在計算機可讀取的存儲介質中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質中。
[0076]最后需要說明的是:以上所述僅為本發(fā)明的較佳實施例,僅用于說明本發(fā)明的技術方案,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內所做的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內。
【權利要求】
1.一種處理用戶會話的方法,其特征在于,該方法包括: web服務器接收客戶端發(fā)來的原始請求; 所述web服務器根據預先設置的重定向策略判斷是否重定向所述原始請求,如果是,則將所述原始請求轉換為重定向請求,并根據所述重定向策略將所述重定向請求發(fā)送給應用服務器,觸發(fā)所述應用服務器根據會話信息處理所述重定向請求; 其中,所述會話信息由所述web服務器和所述應用服務器實時獲取并保存到數據庫服務器里。
2.根據權利要求1所述的方法,其特征在于,所述原始請求中包括:請求類型; 所述重定向策略包括:需要重定向的請求類型、請求類型與重定向的地址的對應關系; 所述web服務器根據預先設置的重定向策略判斷是否重定向所述原始請求,包括:所述web服務器判斷所述原始請求中的請求類型是否為需要重定向的請求類型,如果是,則確定重定向所述原始請求,否則,確定不重定向所述原始請求; 所述根據所述重定向策略將所述重定向請求發(fā)送給應用服務器,包括: 根據所述原始請求中的請求類型和所述請求類型與重定向的地址的對應關系確定所述重定向的地址,根據確定的所述重定向地址將所述重定向請求發(fā)送給應用服務器。
3.根據權利要求1或2所述的方法,其特征在于, 所述將所述原始請求轉換為重定向請求,包括:將用戶會話的標識以cookie的方式添加到所述重定向請求中,觸發(fā)所述應用服務器根據所述用戶會話的標識獲取對應的會話信息; 和/或, 在所述將所述原始請求轉換為重定向請求之后,在所述根據所述重定向策略將所述重定向請求發(fā)送給應用服務器之前,還包括:在所述重定向請求中添加安全套接層SSL證書信息,觸發(fā)所述應用服務器根據所述SSL證書信息驗證所述重定向請求。
4.根據權利要求1所述的方法,其特征在于,所述重定向請求中包括:用戶會話的標識; 在所述應用服務器根據會話信息處理所述重定向請求之前,還包括:所述應用服務器根據所述重定向請求中的所述用戶會話的標識從所述數據庫服務器中獲取所述用戶會話的標識對應的會話信息。
5.—種web服務器,其特征在于,包括: 接收單元,用于接收客戶端發(fā)來的原始請求; 判斷單元,用于根據預先設置的重定向策略判斷是否重定向所述原始請求,當判斷結果為是時,通知轉換單元; 所述轉換單元,用于將所述原始請求轉換為重定向請求,并根據所述重定向策略將所述重定向請求發(fā)送給應用服務器,觸發(fā)所述應用服務器根據會話信息處理所述重定向請求; 其中,所述會話信息由所述web服務器和所述應用服務器實時獲取并保存到數據庫服務器里。
6.根據權利要求5所述的web服務器,其特征在于,所述原始請求中包括:請求類型; 所述重定向策略包括:需要重定向的請求類型、請求類型與重定向的地址的對應關系; 所述判斷單元,用于判斷所述原始請求中的請求類型是否為需要重定向的請求類型,當判斷結果為是時,則確定重定向所述原始請求,當判斷結果為否時,則確定不重定向所述原始請求; 所述轉換單元,用于根據所述原始請求中的請求類型和所述請求類型與重定向的地址的對應關系,確定所述重定向的地址,并根據確定的所述重定向地址將所述重定向請求發(fā)送給應用服務器。
7.根據權利要求5所述的web服務器,其特征在于,所述轉換單元,用于將用戶會話的標識以cookie的方式添加到所述重定向請求中,觸發(fā)所述應用服務器根據所述用戶會話的標識獲取對應的會話信息。
8.根據權利要求5-7任一所述的web服務器,其特征在于,所述轉換單元,還用于在所述重定向請求中添加安全套接層SSL證書信息,觸發(fā)所述應用服務器根據所述SSL證書信息驗證所述重定向請求。
9.一種處理用戶會話的系統(tǒng),其特征在于,包括:客戶端、數據庫服務器、如權利要求5至8中任一所述的web服務器、應用服務器; 所述客戶端,用于向所述web服務器發(fā)送原始請求; 所述應用服務器,用于接收所述web服務器發(fā)來的重定向請求,從所述數據庫服務器中獲取會話信息,并根據所述會話信息處理所述重定向請求; 所述數據庫服務器,用于保存由所述web服務器和所述應用服務器實時獲取的所述會話信息。
10.根據權利要求9所述的系統(tǒng),其特征在于, 所述web服務器和所述應用服務器,分別按照預先設置的同一會話存儲方式,將實時獲取的會話信息存儲到所述數據庫服務器中。
【文檔編號】H04L29/08GK104468804SQ201410769592
【公開日】2015年3月25日 申請日期:2014年12月15日 優(yōu)先權日:2014年12月15日
【發(fā)明者】劉彪 申請人:浪潮通用軟件有限公司