前提:项目用的是Jboss4.0作为容器,使用Struts1.0+EJB3.0。
问题:系统登录时要保存用户的权限信息到session中,进入子系统时要求能读取到登录系统中保存的session信息
尝试解决方案:
1)将权限信息写到文件保存到服务器,进入每个子系统时再读出来写到各自的session中
致命缺点:写文件速度太慢,测试支持同时登录的并发数只有3、40人(写文件都保存在同一个文件夹下,磁盘头都需要被占用)
2)将权限信息保存到客户端cookie中,每次发送请求时都能同时带过去
无法实现:①至少需要保存用户名和权限code(很多字符串),这些东西需要特殊字符分隔,之前使用“;”号,cookie无法写入成功,上网查原来cookie中不能使用逗号分号之类的特殊字符(即使使用“&”这些没有被禁止的字符好像也不行,反正尽量就是不要使用特殊字符才行)
②解决上面的问题后依然不成功,原来cookie也有大小限制,最多只能保存4K的字符串,而权限code的大小不确定,超出这个范围cookie写入也不成功。
最后得出结论,cookie不适合保存大量信息,只能用于用户名密码这些小信息的保存。
3)每次进入子系统都重新查询一下权限信息
缺点:由于权限信息的SQL查询语句较多,视图也比较复杂,每次查询会有点慢,影响系统性能(具体影响多少没有实际资料显示)
最终:在网上查了关于Tomcat的两个应用session共享的解决方案,通过配置server.xml中的Context可以实现,但是Jboss是否提供类似功能却无法查询,有空继续寻求解决方案(网上都提到单点登录能解决,可是我搜到的单点登录解决的只是多个系统共用一个登陆系统,具体到保存信息却没有提到)
相关推荐
C#不同域名之间的Session共享,挺简单的,也挺有用
项目编写目的为了用于session在集群间的共享,采用redis存储,不同服务间请求鉴权
springMvc4.3+spring4.3+mybatis3.4+shiro1.4+log4j2+freemarker2.3+shiro-redis2.9
NULL 博文链接:https://rainbow702.iteye.com/blog/1312307
数据库、redis改为本地,可以实现session共享。 spring boot项目可直接运行
今天用了一天来搞定了ssm+redis集成和nginx实现负载均衡,这里只有ssm+redis简单d集成demo,希望大家一起来讨论
基于SpringMVC +Spring + Mybaties框架的maven项目,tomcat+nginx+redis实现均衡负载、session共享
web项目集群时共享session方案实践
解决session不共享
web项目集群时共享session方案实践。 war包
使用tomcat,一个tomcat下跑两个web项目,实现两个项目之间的session共享
NULL 博文链接:https://jakiechen.iteye.com/blog/2161620
多个tomcat实现项目的负载均衡,首先需要解决的是tomcat之间的session共享问题,本文件为redis实现session共享所需jar
基于 Redis 的Tomcat Session共享。 对Git项目tomcat-redis-session-manager 做了简单修改。 使用方法,可以参考博客: http://blog.csdn.net/catoop/article/details/48603891
通过memcache实现tomcat7的session共享,目前生产环境用的不多了,但自己某个小需求用到,版本冲突好几次,分享给大家,这3个包复制到tomcat的 lib目录下 还有两个包需要 maven引入自己的项目中 <!-- memcache ...
多项目搭建实现session共享,jar包带配置方法都在里面
nginx tomcat 配置完整,只需要把项目放到tomcat下。 tomcat端口是8081,8082;nginx端口是8080
springboot+Nginx+redis实现session共享,适合高并发场景有分流需求的开发者,项目里面包含了redis和nginx软件
主要介绍了多个SpringBoot项目采用redis实现Session共享,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
session共享tomcat7 memcached 项目:Nginx+Tomcat+Mysql+Memcached实现动静页面分离及session共享