2014-04-24 45 views
1

我有兩個貓頭鷹(server1 and server2),每個人運行單獨的戰爭(war1 and war2)。我在這兩臺服務器上都添加了這個<Context sessionCookiePath="/">context.xml當瀏覽器打電話給另一臺服務器時,Tomcat會話共享不起作用

server1 : http://localhost:9090/myapp1 - spring application 
server2 : http://localhost:8080/myapp2 - grails application (version 2.3.4) 
Tomcat version 7.0.47 

在我的情況下,server1是入口點。這些是步驟。

  1. 用戶通過瀏覽器點擊server1的url。
  2. 用他的憑據登錄
  3. 現在,服務器在成功驗證後創建了新會話。上的一個按鈕
  4. 點擊鏈接到服務器2

我期望的一樣會話使用的服務器2。

,我開始我都在期待時(服務器)WAR1的UI使得呼叫服務器2將得到來自瀏覽器的現有會話的服務器。但是當調用(調試時)到達server2時,沒有會話和server2創建新的會話。 同時,如果我直接在瀏覽器地址欄中點擊server2 url,server2正在從server1創建的瀏覽器中獲取會話,這是正確的。

我的問題是爲什麼它不會發生(server1)UI調用server2 ??時! 任何幫助將不勝感激。在此先感謝

+0

這些端口是不同的,因此cookie甚至包含路徑/用於不同的主機/端口組合。 –

+0

@Joshua Moore那麼爲什麼當我直接在瀏覽器中打開url時,它能夠選擇會話呢? – user2001627

+0

對不起,我誤解了序列。 Cookie /請求來自瀏覽器並綁定到瀏覽器。因此,除非瀏覽器向兩臺服務器提出請求,否則這將是一個不同的會話。 App1到App2是不同於瀏覽器到App1的會話。我假設你在App1和App2之間使用HTTP請求,因爲你沒有指出你是否不是。 –

回答

0

我想出了爲什麼會話不可見其他服務器。從UI調用時,調用已經成爲我的ajax(相同來源)。 Ajax不會將會話cookie作爲請求的一部分發送,這使得另一臺服務器生成新的會話。

儘管戰爭部署在不同的服務器上,但所有的url都應指向同一個域。例如域名爲http://localhost:9000,應該使用應用名稱http://localhost:9000/app1, http://localhost:9000/app2來區分它。爲了達到這個目的,我配置了Apache(2.4版)服務器。然後它開始工作以解決任何問題

也可能有其他一些方法。只是想分享我找到的答案。

相關問題