2010-07-10 123 views
1

我們有一個正在構建的Web應用程序可以爲多個區域網站頂級域名服務。另外,該Web應用程序還支持數千個動態子域。實例包括:GlassFish v3 JSESSIONID多個子域名和頂級域名

www.example.com 
www.example.co.uk 
www.example.com.ar 
fred123.example.co.uk <== Thousands of this form 
fred123.p.example.us <== Thousands of this form 

雖然我們可以理解,不同的域的TLD導致新會話的問題開始出現與後者2個以上示例這也導致新的會話實例。例如,如果用戶:

  1. 轉到:www.example.co.uk一個新的會話創建,然後...
  2. 點擊一個鏈接:fred123.example.co.uk一個新的會話創建,然後...
  3. 點擊一個鏈接:創建sam99.example.co.uk一個新的會話...

3次點擊== >> 3屆!!!!

該問題似乎是由於GlassFish v3自動將JSESSIONID的域設置爲主機請求的FQDN。

所需要的是主機名部分至少是被剝離的域值有域值,如:

.example.com 
.example.co.uk 
.example.com.ar 
.example.co.uk <== Thousands of this form 
.p.example.us <== Thousands of this form 

有誰知道如何可以做到這一點。我發現以下是問答&一但在我們的情況下,子域名的頂級域名並不都匹配:

An issue dealing with JSP Session

人機工程學的靜態配置的sun-web.xml中,或使用一個Servlet 3.0解決方案不會出現在解決方案幫助。同時創建過濾器響應包裝器也不起作用,因爲JSESSIONID cookie分配在應用程序服務器的較低級別中,並且未暴露給Web應用程序攔截。

只有其他兩個選項,我認爲我已經是:

一)補丁,設置JSESSIONID Cookie域值FQDN了GlassFish v3的代碼,使一些發生剝離的或

B)做的事Sun Web Server 7.0反向代理層,我們必須重新編寫set-cookie頭中返回的JSESSIONID cookie域值,但是我一直無法找到關於如何執行此操作的示例。

任何人都可以幫助解決此問題?任何線索/幫助將非常感謝!

+0

是否所有這些URL映射到一個獨特的Web應用程序? – 2010-07-10 21:48:36

+0

是的。他們都映射到一個Web應用程序。 最初將會有8個區域頂級域名,隨後會增加更多,因爲我們將有6個glassfish實例的LB'd服務器,爲了允許不同的JSESSIONID域cookie值而部署單獨的webapps開始變得非常自由。另外,無論單獨的web應用程序是否仍然是動態域的問題。思考??? – nikolaosinlight 2010-07-10 23:19:36

+0

我正在看的兩個領域: 1)一些如何獲得Sun Web Server 7。0 RP來重寫從GlassFish v3服務器返回的標題響應中設置的JSESSIONID cookie域值。任何人都知道嗎? 2)在GlassFish v3中編寫該類的修改版本,該版本確定JSESSIONID cookie域值的FQDN,以便更好地設置值。事實上,這正是我們當前代碼中的cookie如何計算其cookie值域以設置所選/確定的域語言環境。 任何人都知道我應該將代碼放入哪個類中? – nikolaosinlight 2010-07-11 01:10:43

回答

0

使用Apache和mod_headers重寫cookie? Best way for allowing subdomain session cookies using Tomcat

+0

對不起 - 我應該指出,我們正在使用Oracle/Sun Web Server 7.0作爲RP層(我在帖子結尾處提到它,但應該已經更清楚了)。我們的架構全部是Oracle/Sun ......因此,爲了支持這一方面,將Apache添加到架構中不幸的是不會這樣做。道歉我沒有更清楚地在原帖中說明。抱歉。 – nikolaosinlight 2010-07-10 23:23:00