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



我使用的是tomcat 7.0和java 6。我想在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时是相同的,但当我尝试共享属性时在他们之间,它不起作用。

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

现在我的解决方案是:

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

最新更新