tomcat中不同应用session共享

保存session

HttpSession session=request.getSession();
				session.setAttribute("logonUser",logonuser );
				//session.setMaxInactiveInterval(15);
				
				String sessionid=session.getId();
				session.setAttribute("sessionid", sessionid);
				
				ServletContext ContextA =request.getSession().getServletContext(); 
				Map<String,HttpSession> sessions = (Map<String, HttpSession>) ContextA.getAttribute("sessions");
				if(sessions ==null){
   
					sessions = new HashMap<>();
				}
				sessions.put(session.getId(), session);
				ContextA.setAttribute("sessions",sessions);
				setLogonlog(username,request, 1);
				success("登录成功");

取值

 String sessionid = request.getParameter("sessionid");


        try {
   
            HttpSession session = request.getSession();
            ServletContext ContextB = session.getServletContext();
            ServletContext ContextA = ContextB.getContext("/WebappA");// 这里面传递的是 WebappA登录应用的虚拟路径
            Map<String, HttpSession> sessions = (Map<String, HttpSession>) ContextA.getAttribute("sessions");
            HttpSession session2 = sessions.get(request.getParameter("sessionid"));

            HashMap<String, Object> logonuser = (HashMap<String, Object>) session2.getAttribute("logonUser");
            System.err.println(logonuser.size());
            for (String key : logonuser.keySet()) {
   

                System.out.println("Key2: " + key + " Value: " + logonuser.get(key));

            }

            session.setAttribute("logonUser", logonuser);

            session.setAttribute("sessionid", sessionid);


            // 登录账号区分大小写
            User user = userMapper.getByLoginAccountIgnoreCase((String) logonuser.get("userid"));
            user.apply(user);
            SessionManager.create(request).userLogon(user);
        } catch (Exception e) {
   
            log.error("平台跳转错误。。。。");
            log.error(e.getMessage());
        }

         return "redirect:/index.html";

参考

WebappA:

HttpSession session = request.getSession();
session.setAttribute("userId", "test");
ServletContext ContextA =session .getServletContext();
ContextA.setAttribute("session", session );
 
WebappB:

HttpSession sessionB = request.getSession();  
ServletContext ContextB = sessionB.getServletContext();  
ServletContext ContextA= ContextB.getContext("/WebappA");// 这里面传递的是 WebappA的虚拟路径
HttpSession sessionA =(HttpSession)ContextA.getAttribute("session");
System.out.println("userId: "+sessionA.getAttribute("userId"));
 `

server.xml

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
			

	<Context crossContext="true" docBase="Plat" path="/Plat" reloadable="true" sessionCookiePath="/" />			
 <Context crossContext="true" docBase="SYS" path="/SYSCMS" reloadable="true" sessionCookiePath="/" />		   
 <Context crossContext="true" docBase="sydsue" path="/sydsunew" reloadable="true"  sessionCookiePath="/" />		   
 	   
			   
			   
			   
			   
			   
			   

      </Host>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
		 <distributable/>

相关推荐

  1. tomcat不同应用session共享

    2024-02-01 06:18:02       40 阅读
  2. 如何在Tomcat配置和使用Session共享

    2024-02-01 06:18:02       44 阅读
  3. 不同进程共享变量

    2024-02-01 06:18:02       56 阅读
  4. 微服务Redis-Session共享登录状态

    2024-02-01 06:18:02       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-01 06:18:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-01 06:18:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-01 06:18:02       82 阅读
  4. Python语言-面向对象

    2024-02-01 06:18:02       91 阅读

热门阅读

  1. VTK 交互事件

    2024-02-01 06:18:02       48 阅读
  2. KAFKA鉴权设计以及相关探讨

    2024-02-01 06:18:02       63 阅读
  3. 优雅管理多线程异步任务 - 永动异步任务

    2024-02-01 06:18:02       50 阅读
  4. Jenkins插件安装推荐

    2024-02-01 06:18:02       52 阅读
  5. 2024.1.31

    2024-02-01 06:18:02       38 阅读
  6. 前端Vue日常工作中--CSS变量

    2024-02-01 06:18:02       42 阅读
  7. R语言【taxlist】——subset():取taxlist对象的子集

    2024-02-01 06:18:02       48 阅读
  8. Lua脚本

    Lua脚本

    2024-02-01 06:18:02      48 阅读