Tomcat多应用共享Session 使用crossContext

1. 新建两个应用:

test1

|——WEB-INF

|              |——web.xml

|——test.jsp

test.jsp代码

  1. <%
  2.     session.setAttribute(“test1Session”,“test1Session”);
  3.     session.getServletContext().setAttribute(“t1_session”,session);
  4.     out.println(“Application /test1 is ok!<br>”);
  5.     if(session.getServletContext().getContext(“/test2”)!=null){
  6.         HttpSession t2_session = (HttpSession)session.getServletContext().getContext(“/test2”).getAttribute(“t2_session”);
  7.         if(t2_session!=null){
  8.             String str = (String)t2_session.getAttribute(“test2Session”);
  9.             String path = request.getContextPath();
  10.             out.println(“Application “+path +“:”+str+“<br>”);
  11.         }else{
  12.             out.println(“Application /test2 no data!”);
  13.         }
  14.     }
  15. %>

test2

|——WEB-INF

|              |——web.xml

|——test.jsp

test.jsp代码

  1. <%
  2.     session.setAttribute(“test2Session”,“test2Session”);
  3.     session.getServletContext().setAttribute(“t2_session”,session);
  4.     out.println(“Application /test2 is ok!<br>”);
  5.     if(session.getServletContext().getContext(“/test1”)!=null){
  6.         HttpSession t1_session = (HttpSession)session.getServletContext().getContext(“/test1”).getAttribute(“t1_session”);
  7.         if(t1_session!=null){
  8.             String str = (String)t1_session.getAttribute(“test1Session”);
  9.             String path = request.getContextPath();
  10.             out.println(“Application “+path +“:”+str+“<br>”);
  11.         }else{
  12.             out.println(“Application /test1 no data!”);
  13.         }
  14.     }
  15. %>

2. 配置tomcat,设置crossContext = true,让两个应用可以在tomcat中交叉使用上下文环境。

<Context path=”/test1″ docBase=”C:/test1″ reloadable=”true” crossContext=”true”></Context>

<Context path=”/test2″ docBase=”C:/test2″ reloadable=”true” crossContext=”true”></Context>

3. 启动Tomcat,访问http://localhost:8080/test1/test.jsp

页面输出:Application /test1 is ok!————————test1存储session成功
Application /test2 no data!——————–test2还没有被访问,所以test2的session中没有数据

访问http://localhost:8080/test2/test.jsp

页面输出:Application /test2 is ok!————————test2存储session成功
Application /test2:test1Session————-test1Session来自test1应用中session

刷新http://localhost:8080/test1/test.jsp

页面输出:Application /test1 is ok!————————test1存储session成功
Application /test1:test2Session————-test2Session来自test2应用中session

应用test1和test2成功共享session,可以互相访问另一个应用中的session和session中的数据。

此条目发表在服务器相关分类目录,贴了, 标签。将固定链接加入收藏夹。