需求:
tomcat部署一个应用,需要所有二级域名共享同一个session
例:
现有两个域名
a.abc.com
b.abc.com
a.abc.com中 session.setAttribute("test","test123");
b.abc.com中 session.getAttribute("test"); //可以获取到test123
在网上也看到了许多文章,基本上都是修改tomcat源码,或者使用 MSM (memcached持久化session),但是都不是我想要的。。。。
解决方案:
1.tomcat7中设置server.xml
<Context reloadable="false" path="/" docBase="D:\workspace\project\WebContent"
sessionCookiePath="/" sessionCookieDomain="abc.com" sessionCookieName="JSESSIONID"/>
主要是这里: path="/" sessionCookiePath="/" sessionCookieDomain="abc.com" sessionCookieName="JSESSIONID"
可以将abc.com域名下的sessionid共享
当访问a.abc.com获取sessionid时,同一个浏览器下在访问b.abc.com 不会产生新的sessionid,这样就保证了a.abc.com登陆授权的sessionid在b.abc.com下也可以使用
2.跳转请求
在a.abc.com页面a.html中加入<a href=‘http://b.abc.com/action’>action</a>
这样后台接收到的请求默认携带了sessionid,因为通过上面的设置前台的cookie作用域已经是整个abc.com了,这个没有问题
3.ajax请求
在a.abc.com页面a.html中使用ajax请求http://b.abc.com/action无法访问,每次请求都会产生新的sessionid
因为这里存在跨域访问,js跨域问题请看这里
$.ajax({
url:"http://b.abc.com/action",
dataType : "jsonp",
success:function(res){
console.log(res);
}
});
这样就可以达到二级域名共享session了。
为什么需要共享二级域名访问这样的功能?
当页面需要大量并发请求的时候,浏览器同时只能处理6个请求
比如页面上同时发送100个请求,每个请求到后台后sleep 10s
使用火狐页面看到的结果是所有请求都已发出,但是只有6个请求到达了后台,剩下94个请求都在阻挡状态,使用firebug可以看到
阻挡状态在域名解析之前,也就是说,请求根本没有发出去。
这样会大大影响我们页面的加载速度,所以我们需要借助多个二级域名来接受请求。
ps:本例中tomcat是一个,可以配合memcached+Nginx 完成tomcat的分布式设置。
使用MSM完成session的持久化,配合多个域名节点。速度杠杠的O(∩_∩)O~
淘宝加载图片使用的也是类似的方法
GET TB1wDMvGVXXXXa0XFXXUAkPJpXX-90-90.png
200 OK
gtms01.alicdn.com
13.6 KB
103.243.139.140:80
39ms
GET TB1d0iNGVXXXXXwXFXXKPOY1pXX-108-220.png
200 OK
gtms03.alicdn.com
16.6 KB
103.243.139.150:80
62ms
GET TB18PpbHXXXXXXTXXXXKPOY1pXX-108-220.png
200 OK
gtms01.alicdn.com
18.5 KB
103.243.139.140:80
89ms
GET TB1TagGGVXXXXXAXpXXKPOY1pXX-108-220.png
200 OK
gtms04.alicdn.com
43.4 KB
103.243.139.150:80
49ms
GET TB1LD5pGVXXXXbHXFXXKPOY1pXX-108-220.png
200 OK
gtms02.alicdn.com
15.2 KB
103.243.139.150:80
154ms
GET TB1hFNaHXXXXXa1XXXXwu0bFXXX.png
200 OK
gtms02.alicdn.com
14.0 KB
103.243.139.150:80
95ms
GET TB1Jq.VGVXXXXbzXXXXwu0bFXXX.png
200 OK
gtms03.alicdn.com
14.4 KB
103.243.139.150:80
41ms
GET TB22mgMbXXXXXajXXXXXXXXXXXX_!!100008692.jpg
200 OK
img03.taobaocdn.com
7.8 KB
125.39.199.40:80
64ms
GET TB1UJK1GVXXXXbGXXXXSutbFXXX.jpg
200 OK
gtms04.alicdn.com
3.1 KB
103.243.139.150:80
32ms
GET TB1OQIGGVXXXXbcXFXXAqx0TXXX-200-50.jpeg
200 OK
gtms02.alicdn.com
4.9 KB
103.243.139.150:80
52ms
GET TB154QwGVXXXXX0XXXXSutbFXXX.jpg
200 OK
gtms04.alicdn.com
2.4 KB
103.243.139.150:80
54ms
GET TB1htMZGVXXXXbjaXXXUAkPJpXX-90-90.png
200 OK
gtms01.alicdn.com
5.7 KB
103.243.139.140:80