关于多个域名.超时.jsessionid存在的问题,和解决方法.
测试一个网站是否session共享.1.joe.xxxx.com 2.登录,3.再访问joe.xxxxx.com.看是否登录了.4,等待超时.再登录.
第一种解决方法.
joe.xxx.com 代码.
AppSession session = (AppSession) Session.get();
String jsessionId=CookieUtil.getUserCookie((WebRequest)getRequestCycle().getRequest(),"JSESSIONID");
if (jsessionId==null || jsessionId.equals("")){
log.debug("jsessionId is null,sessionId is "+session.getId());
CookieUtil.setCookie((WebResponse)getRequestCycle().getResponse(),"JSESSIONID",session.getId());
}else{
log.debug("jsessionId is "+jsessionId+",sessionId is "+session.getId());
}
if(jsessionId!=null && !jsessionId.equals("") && !jsessionId.equals(session.getId())){
CookieUtil.setCookieWithoutDomain((WebResponse)getRequestCycle().getResponse(),"JSESSIONID",session.getId());
CookieUtil.setCookie((WebResponse)getRequestCycle().getResponse(),"JSESSIONID",session.getId());
}
登录时.
CookieUtil.resetCookie((WebResponse)getRequestCycle().getResponse(),"splashnoteid");
String jsessionId=CookieUtil.getUserCookie((WebRequest)getRequestCycle().getRequest(),"JSESSIONID");
if (jsessionId==null || jsessionId.equals("")){
log.debug("jsessionId is null,sessionId is "+session.getId());
}else{
log.debug("jsessionId is "+jsessionId+",sessionId is "+session.getId());
}
if(jsessionId!=null && !jsessionId.equals("") && !jsessionId.equals(session.getId()))
CookieUtil.setCookie((WebResponse)getRequestCycle().getResponse(),"JSESSIONID",session.getId());
第二种解决方法.
添加JAR包.放在tomcat/lib下.并且在server.xml中加入一段话.
<Engine name="Catalina" defaultHost="localhost">
<Valve className="org.three3s.valves.CrossSubdomainSessionValve"/>