J2EE同域中跨项目session共享实现

来源:互联网 发布:免费php人才招聘系统 编辑:程序博客网 时间:2024/05/01 13:34
有时开发项目时或实施的项目有需要同域不同J2EE项目之间session共享,所以现将自己使用的方案共享给大家,本文是原创。

J2EE同域中跨项目session共享实现

1、 背景

一个tomcat下跑两个web项目:appA,appB

2、 目的

appA项目中的session设置值能被appB项目获取,反之亦然。

3、 实现思路(以下假设项目appA的session被项目appB共享获取)

1)      设置servlet容器(即tomcat)全局变量,封装项目的session对象集合(是对象,非属性值),一个项目一个全局变量,便于其他项目能获取此全局变量。使用ServletContext对象;

2)      配置servlet容器各项目上下文允许交叉访问,即tomcat\conf\server.xml文件;

3)      Session对象集合使用map封装,map集合对象设置进ServletContext全局变量中;

4)      设置Cookie对象,域设置为“/”(即根目录,不能是/appA),保存各登陆用户的sessionID;便于在map集合中能得到该id对应的session对象;

5)      项目appB中利用容器的ServletContext对象获得map集合;

6)    项目appB中读取用户端使用appA项目设置的Cookie集合,找到设置的cookie,得到appA设置的sessionID;

7)    利用从cookie中获得的sessionID遍历map集合,得到appA项目中的session对象;

8)    项目appB完成对项目appA的session共享。

4、 主要代码及设置(以纯jsp方式实现)

1)      server.xml


2)      项目结构


3)      项目appA设置session及cookie




4)      项目appB从cookie间接获得appA的session对象及值



5)      效果图

用户1:user_1




用户2:user_2




完成session共享(以上IE不同用户均使用自己的IE)。

作者:xcg9593

0 0
原创粉丝点击