2016-09-14 57 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); 

应该在域属性没有拒绝。