tomcat7共享二级域名session设置

需求:

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
 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值