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