首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

SNA议案之session炒冷饭

2012-10-29 
SNA方案之session炒冷饭SNA方案中,session的处理是一个重要方面。原帖见这里:http://www.iteye.com/topic/2

SNA方案之session炒冷饭


SNA方案中,session的处理是一个重要方面。

原帖见这里:http://www.iteye.com/topic/200611

原帖里提到的两种方案都需要hack代码。

下面是我的方案:

1、使用会话cookie保存web服务器产生的sessionid
?? 为什么是sessionid而不是userid,原因在于谁也不知道除去登录外其他人会在httpsession里干些什么

2、自定义SessionMap<String,Serializable>同步保存httpsession内的信息
?? 自定义SessionMap同步httpsession,在操作httpsession时不用改变调用接口,不用东张西望

3、使用分布式缓存memcached保存自定义SessionMap<String,Serializable>

4、会话胶粘
?? 未失败转发的情况下没必要在memcached和httpsession之间复制来复制去,眉来眼去

5、使用SnaFilter处理失败转发

6、使用HttpSessionListener实现SessionMap<String,Serializable>的过期
?? 利用容器session 机制的好处,httpsession过期的时候干掉memecached里的SessionMap

?

下面根据web请求的过程分情况讨论该方案:

A、登录

SNA议案之session炒冷饭

<!---->

根据请求的url判断是否是登录请求

在线人数保存在memcached里

B、?正常请求

SNA议案之session炒冷饭

<!---->

C、?失败转发

SNA议案之session炒冷饭

<!---->

D、登出

SNA议案之session炒冷饭

<!---->

根据请求的url判断是否是登出请求

E、HttpSession过期

不hack memcached,使用HttpSessionListener,sessionDestroyed事件时根据sessionid删除memcached里的sessionMap(如果存在)

?

关于在线人数的统计:在线人数存储在memcached里,将在线人数与sessionMap绑定,往memcached里增加sessionMap时在线人数+1,删除时-1.


5 楼 dknypxt 2008-09-05   为什么不简单的用mem的过期时间,而要这样复制呢?
用mem过期时间的话,即使tomcat宕掉,session同样存在mem中.跨多个tomcat就更没问题了.

热点排行