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

时间:2013-11-30 04:18:47

标签: java spring tomcat spring-mvc session-cookies

我正在使用tomcat 7.0和java 6。 我想在 examples.com abc.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是相同但当我尝试共享属性时 他们之间没有用。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。 我成功地在两个域之间共享会话,现在我的问题是识别同一个用户。 当我尝试在那两个域和子域之间共享会话数据时,它不起作用,因为服务器维护单个应用程序的会话。

现在我的解决方案是:

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