2016-09-14 58 views
0

我已經兩戰部署我的Web服務器上可以說,A.war和B.war &我的web應用程序既是戰爭即A的組合和B.warJava的餅乾在兩戰

現在我想在A war服務的java端生成cookie,並且希望在訪問B war的服務器時獲得相同的cookie。

我用

response.addCookie(新的Cookie( 「鍵」, 「值」))

在A.war服務

嘗試過。 Definaltly它會被存儲在cookie的

&我得到在B.war serices餅乾作爲request.getCookie()

做我需要做任何事情從這個額外的開?

+0

這只是因爲在HTTP響應中設置了cookie而另一個請求正從同一客戶端發送給B。這種味道是錯誤的,但是爲了共享cookie,這個*可能會起作用* – christopher

+0

可以請給出任何鏈接或例子,其中cookie可以從java一方本身共享。 – ashishl

+0

定義共享。 Cookie是一種HTTP構造,因此請牢記這一點。 – christopher

回答

0

Cookie默認爲每個域。通常情況下,負載均衡器將擁有公共URL,並且Web服務器將位於服務器的靜態內容之後。像Java這樣的應用程序服務器可以直接位於負載均衡器之後,也可以通過Web服務器。所以基本上,只要所有部署的應用程序託管在同一個域中,瀏覽器將默認將所有的Cookie發送到所有應用程序。所以是的,在你的情況下,它會工作。

+0

據我所知,setPath(「/」)會給你所有戰爭服務器上的cookie數據託管同一個Web服務器。但是如果我的A戰在不同的服務器上而B戰在不同的服務器上會發生什麼?意思是它如何在集羣/節點上工作?它會按預期工作嗎? – ashishl

0

Cookies是返回到matches如有餅乾domain attribute任何host,否則只是設置它的主機。 如果您不使用Cokie::setDomain,則未設置屬性域。

此外,用戶代理將僅發送具有作爲path attribute的子目錄的路徑的唯一請求的cookie。如果您不使用Cokie::setDomain,則路徑屬性會自動設置爲請求路徑。

所以共享上下文中的Cookie,你只需要設置path屬性相同的主機:

Cookie c = new Cookie("name", "value"); 
c.setPath("/"); 

request.addCookie(c); 

應該在域屬性沒有拒絕。