tomcat 站内session共享
在server.xml 中设置<Context docBase="web1" path="/web1" reloadable="true" source="org.eclipse.jst.jee.server:web1" crossContext="true"/>
<Context docBase="web2" path="/web2" reloadable="true" source="org.eclipse.jst.jee.server:web2" crossContext="true"/>
利用cookie及tomcat context 来对session对象存取
ServletContext context = session.getServletContext().getContext("/web1");
Map<String,Object> s_map = null;
if( context.getAttribute("session_MAP") == null) {
out.print("session create sessionMap");
s_map = new HashMap<String,Object>();
}else{
out.print("session get sessionMap");
s_map = (HashMap<String,Object>)context.getAttribute("session_MAP");
}
String session_id = session.getId();
session.setAttribute("web1","web1");
s_map.put(session_id, session);
//session.setAttribute("ubiId", session.getId());
Cookie cookie = new Cookie("sessionId", session.getId());
cookie.setMaxAge(-1);
cookie.setPath("/");
context.setAttribute("session_MAP", s_map);
response.addCookie(cookie);
ServletContext context = session.getServletContext().getContext("/web1");
HashMap<String,Object> s_map1 =(HashMap<String,Object>)context.getAttribute("session_MAP");
//out.print(s_map1);
context = session.getServletContext().getContext("/web2");
HashMap<String,Object> s_map =(HashMap<String,Object>)context.getAttribute("session_MAP");
//out.print(s_map);
String get_sessionId = "";
String cookieName = "sessionId";
Cookie[] cookies = request.getCookies();
int len = cookies.length;
for(int i=0; i<len; i++) {
Cookie cookie = cookies;
String c_name = cookie.getName();
if(c_name.equals(cookieName)) {
get_sessionId = cookie.getValue();
HttpSession s = (HttpSession)s_map1.get(get_sessionId);
out.println(s.getAttribute("web1"));
//out.println("old sessionId:" + get_sessionId + "<br/>");
//out.println("current sessionId:" + session.getId() + "<br/>");
}
}
if(s_map == null) {
System.out.println("session_MAP is null");
s_map = new HashMap();
} else {
System.out.println("session_MAP is not null");
}
页:
[1]