GlassFish v3 JSESSIONID多个子域和顶级域名

时间:2010-07-10 21:19:15

标签: glassfish jdk1.6 session-cookies jsessionid

我们正在构建一个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创建一个新会话......
  4. 3次点击==&gt;&gt; 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
    

    有谁知道如何实现这一目标。我发现了以下Q&amp; A但是在我们的案例中,子域TLD并不都匹配:

    An issue dealing with JSP Session

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

    我认为我唯一的两个选择是:

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

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

    任何人都可以帮忙解决此问题吗?任何线索/帮助将非常感谢!

1 个答案:

答案 0 :(得分:0)

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