一尘不染

在Tomcat中的两个子域之间共享会话属性

tomcat

我正在使用tomcat 7.0 和 java6* 。我想在 **examples.comabc.examples.com的**
域和子域之间共享会话
*

所以在 context.xml中 放置标签

<Context antiResourceLocking="false" privileged="true" sessionCookieDomain=".examples.com" sessionCookiePath="/" >

成功共享Cookies JSESSIONID,但是当我在 examples.com中* 设置属性时 *

    logger.info( "Demo1 : "+httpSession.getId());
    httpSession.setAttribute("data", "subhash lamba");
    logger.info(" Demo1 data"+ httpSession.getAttribute("data") );

**test.examples.com** 子域中无法访问的

    HttpSession httpSession=request.getSession();
    logger.info( "Demo3 : "+httpSession.getId());
    logger.info(" Demo3 data "+ httpSession.getAttribute("data") );

当我在域和子域中登录JSESSIONID时都相同,但是当我尝试在它们之间共享属性时,它不起作用。


阅读 247

收藏
2020-06-16

共1个答案

一尘不染

我找到了解决方案。我成功地在两个域之间进行了共享会话,现在我的问题是识别同一用户。当时我尝试在这两个域和子域之间共享会话数据时,由于服务器维护单个应用程序的会话,因此无法正常工作。

现在我的解决方案是:

在Tomcat服务器中有 context
,在上下文中我们可以存储Object,并且同一Tomcat的每个应用程序都可以访问相同的Context。因此,现在我在java.util.Map对象中的java.util.Map对象上创建键-
值对,其中键是JSESSIONID,值是登录的用户ID。因此,现在我可以轻松访问在域和所有子域中登录的用户。

2020-06-16