`

项目中session共享问题

阅读更多

前提:项目用的是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是否提供类似功能却无法查询,有空继续寻求解决方案(网上都提到单点登录能解决,可是我搜到的单点登录解决的只是多个系统共用一个登陆系统,具体到保存信息却没有提到)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics