我使用的是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时是相同的,但当我尝试共享属性时在他们之间,它不起作用。
我自己找到解决方案。我成功地获得了两个域之间的共享会话,现在我的问题是识别同一个用户。当我尝试在这两个域和子域之间共享会话数据时,它不起作用,因为服务器为单个应用程序维护会话。
现在我的解决方案是:
在Tomcat服务器中有上下文,在上下文中我们可以存储Object,同一Tomcat中的每个应用程序都可以访问同一上下文。所以现在我在java.util.Map对象存储键值对中的java.util.Map对象上创建,其中键是JSESSIONID,值是登录的用户Id。所以现在我可以很容易地访问在域和所有子域中登录的用户。