跨war包session同步解决方案
【功能点】
不同war包间session共享
【关键需求理解】
多系统间实现统一登陆(单点登陆),对用户屏蔽多个独立系统的存在,给用户提供一个整体统一的系统。
【实现逻辑描述】
用一个类的静态hashmap域来存放公共session信息,我们可以称之为session容器,其中key为sessionID,value为一个简单SessionUser对象。
对各个系统的访问都通过filter过滤,在filter中根据当前的sessionID判断容器是否存在该sessionID,如果不存在,则重定向到统一登陆页面,如果存在,而且当前session中不存在登陆信息,则在SessionManager中增加有效session个数,并在当前session中添加登陆信息。
当用户在一个系统中退出时,在SessionManager中删除该session信息。
当系统1超时时(通过EBossUserSessionListener监听session是否超时),在SessionManager中减少该sessionID对应的session的有效个数,当有效个数<1时,在容器中删除.
各个war的web.xml中添加如下节点:
<filter></filter>
<filter-name></filter-name>EBossUserFilter
<filter-class></filter-class>com.sitechasia.sessionResearch.ebossUser.EBossUserFilter
<filter-mapping></filter-mapping>
<filter-name></filter-name>EBossUserFilter
<url-pattern></url-pattern>/*
<listener></listener> <listener-class></listener-class> com.sitechasia.sessionResearch.ebossUser.EBossUserSessionListener
在war上级的lib中添加ssosession.jar。
【代码实现的优点】
通过一个hashMap实现session的统一管理,通过sessionUser中的有效session数来记录当前用户已经登陆的系统个数,当某个系统的session失效时,不影响整个系统的访问(只要有一个系统的session没有失效就可以访问全部系统),当所有系统的session都失效时,则不能访问任何一个系统。
通过EBossUserSessionListener实现session会话的监听。
【代码实现中的一些缺点】
此实现只能针对在同一个应用服务器下发布的各个系统,要求各个系统的域名相同,系统使用java语言。各个系统是通过页面的链接实现统一访问的。
需要基于以下条件:在一个浏览器窗口中访问相同域名内的各个系统时,生成的sessionID是相同的,在这个窗口中通过点链接打开的新窗口访问相同域名内的各个系统时,生成的sessionID也是相同的。
【如何改进】
为克服以上缺点,可以考虑通过程序控制sessionID的生成,编写一个sessionID生成算法;
将静态类容器的实现扩展为数据库方案的实现,这样可以脱离具体语言的限制,但使
用数据库方案时,因为访问任何一个页面都需要得到用户的登陆信息,势必会引发性能问题,应该针对可能引起的性能问题寻找一个适当的解决方案。
【功能点】
不同war包间session共享
【关键需求理解】
多系统间实现统一登陆(单点登陆),对用户屏蔽多个独立系统的存在,给用户提供一个整体统一的系统。
【实现逻辑描述】
用一个类的静态hashmap域来存放公共session信息,我们可以称之为session容器,其中key为sessionID,value为一个简单SessionUser对象。
对各个系统的访问都通过filter过滤,在filter中根据当前的sessionID判断容器是否存在该sessionID,如果不存在,则重定向到统一登陆页面,如果存在,而且当前session中不存在登陆信息,则在SessionManager中增加有效session个数,并在当前session中添加登陆信息。
当用户在一个系统中退出时,在SessionManager中删除该session信息。
当系统1超时时(通过EBossUserSessionListener监听session是否超时),在SessionManager中减少该sessionID对应的session的有效个数,当有效个数<1时,在容器中删除.
各个war的web.xml中添加如下节点:
<filter></filter>
<filter-name></filter-name>EBossUserFilter
<filter-class></filter-class>com.sitechasia.sessionResearch.ebossUser.EBossUserFilter
<filter-mapping></filter-mapping>
<filter-name></filter-name>EBossUserFilter
<url-pattern></url-pattern>/*
<listener></listener> <listener-class></listener-class> com.sitechasia.sessionResearch.ebossUser.EBossUserSessionListener
在war上级的lib中添加ssosession.jar。
【代码实现的优点】
通过一个hashMap实现session的统一管理,通过sessionUser中的有效session数来记录当前用户已经登陆的系统个数,当某个系统的session失效时,不影响整个系统的访问(只要有一个系统的session没有失效就可以访问全部系统),当所有系统的session都失效时,则不能访问任何一个系统。
通过EBossUserSessionListener实现session会话的监听。
【代码实现中的一些缺点】
此实现只能针对在同一个应用服务器下发布的各个系统,要求各个系统的域名相同,系统使用java语言。各个系统是通过页面的链接实现统一访问的。
需要基于以下条件:在一个浏览器窗口中访问相同域名内的各个系统时,生成的sessionID是相同的,在这个窗口中通过点链接打开的新窗口访问相同域名内的各个系统时,生成的sessionID也是相同的。
【如何改进】
为克服以上缺点,可以考虑通过程序控制sessionID的生成,编写一个sessionID生成算法;
将静态类容器的实现扩展为数据库方案的实现,这样可以脱离具体语言的限制,但使
用数据库方案时,因为访问任何一个页面都需要得到用户的登陆信息,势必会引发性能问题,应该针对可能引起的性能问题寻找一个适当的解决方案。
发表评论
-
菜鸟 Spring 源码解读 推荐流程
2012-01-11 09:18 5053Spring源代码解析(一):IOC容器:http://www ... -
深入剖析Classloader(一)--类的主动使用与被动使用
2011-12-27 22:13 1053我们知道java运行的是这样的,首先java编译器将我们的源代 ... -
Java中连接字符串时是使用+号还是使用StringBuilder?
2011-12-26 14:04 886字符串是Java程序中最常用的一种数据结构之一。在Java中的 ... -
转一篇有关Java的内存泄露的文章(受益哦)
2011-07-20 09:28 7331 引言 Java的一个 ... -
Tomcat内存溢出的原因
2011-07-19 09:41 698Tomcat内存溢出的原因 在生产环境中tomcat内 ... -
深入研究java.lang.ThreadLocal类
2011-07-13 09:39 655一、概述 ThreadLocal是什么呢?其实Thread ... -
开源框架spring详解-----AOP的深刻理解
2011-05-26 22:13 1202开源框架spring详解-----AOP的深刻理解 AOP的 ... -
struts2核心工作流程与工作原理
2011-05-26 15:35 12491. Struts2架构图 这是S truts2官方站点提供的 ... -
Spring注入方式及用到的注解 -----@Component,@Service,@Controller,@Repository
2011-05-26 15:04 1188注入方式: 把DAO实现 ... -
Java中的native关键字浅析(Java Native Interface)
2011-05-21 23:13 698JNI是Java Native Interface的 ... -
Volatile 变量
2011-04-26 17:01 597Java 语言中的 volatile 变量可以被看作是一种 “ ... -
Java对象的强、软、弱和虚引用
2011-04-26 16:04 5931.Java对象的强、软、 ... -
Web 应用程序常见漏洞 CSRF 的入侵检测与防范
2011-04-23 15:00 1066简介: 互联网的安全问题一直存在,并且在可预见的未来中没有消弭 ... -
详解XSS跨站脚本攻击
2011-04-23 13:46 1107一、什么是XSS攻击 XSS ... -
CSRF攻击原理解析
2011-04-22 10:29 12420×00. 前言 在Web程序中 ... -
selenium 初步体检之富文本框操作
2011-04-20 20:10 1486public class LoginTest extends ... -
webx
2011-03-05 17:54 960webx 学习笔记。 -
Java读带有BOM的UTF-8文件乱码解决方法
2011-03-02 11:12 2384Java default io reader does not ... -
java sftp tools
2011-02-24 13:30 1484import java.io.File; import jav ... -
HtmlUnit
2010-10-18 22:27 1625IntroductionThe dependencies pa ...
相关推荐
Nginx 1.2.1 + JBOSS AS 7 负载配置及Session处理
jboss session 复制,虽然能转发,不能session复制的原因!
jboss session 复制二,网络资料,大家共同参考
JBoss JMX实现架构 JBoss JMX实现架构
JBoss集群配置的Session复制。
tomcat与jboss冲突的日志jar包,由于在jboss中存在此日志jar包,使用jboss时,必须删除它
jboss-3.2.1.jar jbossall-client.jar jbosscx-client.jar jboss-jmx.jar jboss-jmx-rmi-connector-client-3.0.4.jar jboss-system-3.2.1.jar
jboss重要工具包j多多boss重要工具包
实现两个节点之间的无缝负载均衡,实时session复制,当一台机子的jboss的服务跨掉以后,自动会切换到另外一台服务器上面,对于用户的使用没有丝毫的影响。
配置集群服务的优秀资料,web开发工程师的必备资料,大家快来下啊。
jboss-jmx.jar jboss-cache.jar jboss-common.jar jboss-system.jar 网上都是分散的,我把他们合起来一起上传了,方便大家下载!
JBOSS7.2包,直接解压即可用,部署到standalone目录。
jboss7.0源码及依赖包,如果有想解构jboss内核的朋友可以看看,因为从官方途径需要注册账号而且规则比较多
NULL 博文链接:https://yang-min.iteye.com/blog/1961574
jboss部署jar包的bat脚本 快速,方便部署jar到jboss中
jboss-seam的jar包下载,要学习EJB的学友可以下载
5.远程删除文件D:\jboss\server\default\deploy\management\myname.war\index.jsp文件 java -jar jboss_exploit_fat.jar -i ...
jboss热部署,jboss热部署,jboss热部署,jboss热部署,jboss热部署,jboss热部署,jboss热部署,jboss热部署,jboss热部署,jboss热部署,jboss热部署,jboss热部署
可在任何Web服务器上运行的jbpm3.12版的war包。JBossJBpm自带的那个Web程序只能运行在JBoss下,这个war包是我修改过的标准War包,可以运行在任何Web服务器上。
在Jboss下部署EJB,包含源代码,指导一步一步的操作