【问题标题】:GlassFish v3 JSESSIONID Multiple Subdomains and TLDsGlassFish v3 JSESSIONID 多个子域和 TLD
【发布时间】:2011-03-14 08:21:26
【问题描述】:

我们正在构建一个 Web 应用程序来服务于多个区域网站 TLD。此外,Web 应用程序还支持数以千计的动态子域。示例包括:

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 会导致新会话,但上述后两个示例开始出现问题,这也会导致新会话实例。例如,如果用户:

  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

有谁知道如何实现这一点。我发现了以下问答,但在我们的案例中,子域 TLD 并不完全匹配:

An issue dealing with JSP Session

Ergo 静态配置 sun-web.xml 或使用 Servlet 3.0 解决方案的解决方案似乎没有帮助。此外,创建过滤器响应包装器也不起作用,因为 JSESSIONID cookie 是在应用程序服务器的较低级别分配的,并且不会暴露给 Web 应用程序以进行拦截。

我认为我仅有的另外两个选择是:

a) 修补将 JSESSIONID cookie 域值设置为 FQDN 的 GlassFish v3 代码,以便进行一些剥离或

b) 在 Sun Web Server 7.0 反向代理层中做一些事情,我们必须重写 set-cookie 标头中返回的 JSESSIONID cookie 域值,但是我无法找到有关如何执行此操作的示例

谁能帮助解决这个问题?任何线索/帮助将不胜感激!

【问题讨论】:

  • 所有这些 URL 是否都映射到一个唯一的 web 应用程序?
  • 是的。它们都映射到一个 web 应用程序。最初将有 8 个区域性 TLD,稍后将添加更多,因为我们将有 2 个服务器 LB'd 和 6 个 glassfish 实例,为了允许不同的 JSESSIONID 域 cookie 值而部署单独的 web 应用程序开始变得非常不合适。同样,无论单独的 webapps 仍然是动态域的问题。想法???
  • 我正在研究的两个方面:1) 一些如何让 Sun Web Server 7.0 RP 重写从 GlassFish v3 服务器返回的标头响应中设置的 JSESSIONID cookie 域值。有谁知道怎么做? 2) 在 GlassFish v3 中编写一个修改版本的类,确定 JSESSIONID cookie 域值的 FQDN,以便更好地设置该值。事实上,这正是我们当前代码中的 cookie 计算其 cookie 域值以设置选定/确定的域区域设置的方式。有人知道我应该将代码中的哪个类归零吗?

标签: glassfish jdk1.6 session-cookies jsessionid


【解决方案1】:

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

【讨论】:

  • 对不起 - 我应该指出我们正在使用 Oracle / Sun Web Server 7.0 作为 RP 层(我在帖子末尾顺便提到了它,但应该更清楚)。我们的架构都是 Oracle / Sun ......因此,不幸的是,将 Apache 添加到架构中只是为了支持这一方面是行不通的。抱歉,我在原始帖子中没有更清楚地说明这一点。对不起。
猜你喜欢
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 2012-10-29
  • 2010-12-28
  • 2013-09-25
  • 2011-09-20
相关资源
最近更新 更多