日期:2014-05-18  浏览次数:20718 次

讨论:大型web工程的session管理器构想
声明:抛砖引玉而已,期望讨论。

本人负责维护一个大型web项目中的其中一个子系统,面对各种session问题,于是有了这个构想

碰到的问题:
1.对session的胡乱使用:不论是不是重要数据,都使用session保存;
2.多个子项目session重名,互相覆盖:对于那些喜欢复制/粘贴完成开发的程序员所经手的项目,尤为明显;

为应对多人web工程session滥用的情况,设定session管理器;
对内:
? 封装、代理现有session
? 对信息的存取增加前缀——对不同子项目,对保存的键值对中的key追加前缀,避免重名覆盖;
? 实现方案1:通过路径,前缀对外部调用人员透明;
                    难点,路径必须统一管理;
? 实现方案2:存取时,多传一个子项目标示,建议使用枚举;
                    难点,方法要改,且无法控制调用者行为;
? 实现方案3:重写session实现类;
                    难点,对源代码要熟悉,碰到系统jar包升级要重新挠头;
? 记录存取情况——用于统计和管理;
管理:
? 绝对禁止开发人员使用session,所有对信息的存取都必须通过管理器;
? 对管理器的维护权限,只掌握在架构师或高级工程师等少数人手中
讨论?java?session?

------解决方案--------------------
收益了!大型项目确实很容易混淆
------解决方案--------------------
增加前缀这个可以

我们现在做的项目每个子系统都有一个唯一的前缀,
不过子系统基本上不往session里存值,只有平台才往里面存值,
各个子系统取自己需要的信息