GlassFish v3 JSESSIONID多个子域名和*域名

问题描述:

我们有一个正在构建的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

使用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