`
messon619
  • 浏览: 45335 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jboss中实现跨war包session同步

阅读更多
跨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生成算法;
将静态类容器的实现扩展为数据库方案的实现,这样可以脱离具体语言的限制,但使
用数据库方案时,因为访问任何一个页面都需要得到用户的登陆信息,势必会引发性能问题,应该针对可能引起的性能问题寻找一个适当的解决方案。
分享到:
评论

相关推荐

    Jboss EJB3.0 实例教程.pdf

    - **跨环境调用EJB**:包括如何在独立的Tomcat或Java SE环境中调用EJB,以及如何从Web应用中调用EJB。 - **获取最新版本**:定期检查并获取最新版本的JBoss,以利用最新的特性和修复。 #### 三、基础知识学习 - **...

    JBOSS4.2.2EJBWEB群集配置与部署全过程

    在JBOSS 4.2.2中,我们可以使用JGroups来实现节点间的通信和状态同步,JGroups是一个开源的集群通信库,提供了一套完整的集群解决方案,包括组成员发现、消息传递和故障检测等功能。 配置EJB群集时,你需要修改...

    ejb3.0非常实用教程

    - 在JBoss中部署Web应用,并调用同一服务器上的EJB。 5. **获取最新JBOSS版本** - 关注官方渠道,如GitHub仓库,以获得最新版本的JBOSS AS。 #### 三、基础知识学习 1. **熟悉JBoss目录结构** - 了解`bin`, `lib...

    ejb代码实例

    在JBoss中,部署EJB通常涉及创建EJB类,定义接口,编写部署描述符(ejb-jar.xml),并将所有这些打包到一个ejb-jar文件中,然后将其与应用服务器的其他配置一起放入war或ear文件进行部署。 客户端与EJB的交互可以...

    ejb3.0实例教程

    - **跨环境调用EJB**:包括在独立的Tomcat中调用EJB,以及在部署于JBoss的Web应用中调用EJB。 - **获取内嵌EJB 3的JBoss版本**:介绍如何获取最新版本的包含EJB 3支持的JBoss。 #### 三、基础知识学习 - **熟悉...

    EJB3.0实例教程

    JBoss提供了方便的部署机制,可以将Web应用和EJB应用分开部署,或者打包在一个单一的WAR或EAR文件中。了解如何在JBOSS中独立部署这两种应用对于理解EJB3.0的工作原理至关重要。 ### 第三章 基础知识学习 3.1 在...

    EJB 3.0 入门教程 黎活明

    - **部署方式**:EJB 可以部署在 JBoss 中,也可以在独立的 Tomcat 或 Java SE 环境中调用。 #### 三、基础知识学习 - **打包方式**: - **EJB 打包**:通常使用 `.jar` 文件形式,可以包含 Remote 和 Local 接口...

    ejb3入门

    - 在部署于JBoss AS的Web应用中调用EJB组件。 **5. 获取最新版本的JBoss** - 访问JBoss官方网站或社区论坛获取最新的包含EJB3支持的JBoss版本。 #### 三、基础知识学习 **1. JBoss 目录结构** - 了解JBoss AS的...

    EJB3使用说明中文版

    - 在 JBoss AS 中部署 Web 应用程序,通过 JNDI 查找 EJB 的远程接口进行调用。 **2.5 如何获取最新的内嵌 EJB3 的 JBOSS 版本**: - 访问 JBoss 官方网站或 GitHub 仓库,查看最新的发行版信息。 #### 三、基础...

    java笔试题(基础、编程、应用服务器和EJB方面)

    - **部署与配置**:理解EAR/WAR/WAR-INF目录结构,学会编写部署描述符(如web.xml,ejb-jar.xml)。 - **服务支持**:应用服务器提供JMS(Java Message Service)、JTA(Java Transaction API)、JPA(Java ...

Global site tag (gtag.js) - Google Analytics