关于最近在做的改进使用ECHO2+ROMA框架的会话管理的报告

来源:互联网 发布:淘宝发快递没有安能 编辑:程序博客网 时间:2024/05/14 17:37

最近在做的这个项目,使用的是ECHO2+ROMA框架,关于这两个框架,我在以上的几篇文章中已经介绍了,同时也谈了我在项目中所遇到的问题,及了解到的知识。。。。

说到会话管理,其实是在项目中实现了 HttpSessionListener这个接口,这个接口中有两个方法,分别为: public void sessionCreated(HttpSessionEvent event) 和public void sessionDestroyed(HttpSessionEvent event) 。通过实现这两个方法,可以对系统中session的建立与销毁进行监控,从而实现会话管理。

这里所说的会话管理,其实就是通过监视SESSION的TIMEOUT,然后在调用sessionDestroyed这个方法之前,先把当前会话中的所有SESSION OBJECT保存起来,以SESSION ID为KEY。这样,在用户继续访问时,通过查找数据库得到对应的SESSION OBJECT,然后重建一个HttpSession,使得用户可以进行访问,而对于session的重建对用户来说是透明的。

那么,这样做有什么好处呢?首先,得说明一下,ECHO2是一种运行在服务端的WEB框架,它与GWT是完全不同的,虽然也提供了强大的AJAX技术支持。设想有这么一个环境,一个应用有上万个用户群,甚至几十万,或者是受到了DOS攻击。这样的话,如果每个用户的SESSION OBJECT都保存在服务器的内存中,假设SESSION OBJECT的大小为1K,那么10W个用户将会是1G的容量,而如果想要实现用户不知道SESSION 已经TIME OUT的话,假如把SESSION 的TIMEOUT 设置为-1。那么,这1G的容量将会一直存在内存中,除非你关了服务器,可以见得,这对服务器来说是一种很严重的负担,在这种情况下,服务器还用得着工作吗?

所以,才会有我这个项目的提出,改进会话管理。。。实现在服务端重建session对用户来说是透明的。。。其实,到今天我已经完成的差不多了。。。基本上的功能可以实现。。不过还有点小问题,也许这个问题是个关键的问题。那就是在我重建的session中,我保存着跟还没timeout时的session中一样的object,然而,当我再次使用时,却出现了NullPointerException。。今天一直在找出现这个异常的原因,可惜一直没有找到。。。这个混蛋要是被我找到了就惨了。。。。

后来我没有继续找了,关了eclipse,决定去北京大学的online contest做ACM的题了。。。做了一天后,又觉得好无聊,于是,打开了一本书名为:EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB 的书,一口气看了2章,回头一看,我靠,居然还有差不多400P没看。。。。。不过说真的,这本书的作者讲得挺不错的,让我心服口服。。。。同时,也对J2EE架构方面有了一定的了解。。。。

差不多2点了,该睡觉了~~~~~