码迷,mamicode.com
首页 > 其他好文 > 详细

同一个Tomcat下不同项目之间的session共享

时间:2017-11-03 19:01:04      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:ati   text   虚拟   检查   共享   http   做了   取出   ext.get   

  最近发现项目运行过程中经常会抛出一个 NullPointerException的异常,经检查发现异常出现的地方是日志模板,一阵检查,正常无误

  (把所有记录日志的地方都点了一遍,心里是崩溃的),万念俱灰下突然想起来还有一个项目的业务也连接到这个项目,抱着试试的心态去那里

  执行了下方法,果然,异常出现了,项目A里获取不到项目B的session。无奈,根据资料做了个session共享,具体方法如下:

  项目名称 A:testA,B:testB

  1 : 修改Tomcat---conf----server.xml文件

     把 <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false"></Host> 修改为:

 <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">

      <Context path="/testA" reloadable="false" crossContext="true"></Context> 
      <Context path="/testB" reloadable="false" crossContext="true"></Context>

  </Host>

 2:  在项目A中,写入以下代码:

   //以下内容用于测试同一tomcat下不同项目之间共享session 
      HttpSession session = req.getSession();

   session.setAttribute("test", "testA");

        // session失效时间,单位毫秒

   session.setMaxInactiveInterval(6000);

     ServletContext contextA = req.getSession().getServletContext();

       contextA.setAttribute("session", req.getSession());

 

3.在项目B中,使用以下代码取出 session

  HttpSession session = req .getSession();  

        ServletContext context = session.getServletContext();  

  // 这里面传递的是项目a的虚拟路径

        ServletContext context1= context.getContext("/testA");

         System.out.println(context1);

        HttpSession session2 = (HttpSession) context1.getAttribute("session");

        System.out.println("项目A传过来的值 : "+session2.getAttribute("test"));

同一个Tomcat下不同项目之间的session共享

标签:ati   text   虚拟   检查   共享   http   做了   取出   ext.get   

原文地址:http://www.cnblogs.com/zhuangfei/p/7779355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!