很郁闷,没想到项目的难度远远超出了我的想象。
今天做了一件很无聊的事,但又不得不做的事。画出项目中一个session object的家族树,根为ContainerInstance
。这个家伙最麻烦拉,什么类都跟它有关系。我画了一个晚上,才把它的孩子画出来。还要一个一个地找!
它的孩子已经差不多有50个了,可以想象它有多少个子孙,其家族是多大呀。。。。
但是,没办法呀,我不得不画出来。不然就没有办法了解项目的来龙去脉,也就没办法修改项目的会话管理功能。
不过还好,具体修改方法已经有了,只须把所有的树都找出来,加以分析。只要与用户相关的都要进行serialize,与用户不相关的都不需要进行serialize,但还是必须实现serializable这个接口,因为这个接口最多管闲事,在会话管理中不管做什么事都要跟它打交道,然后再对这个与用户不相关的对象加上transient。transient这个家伙专门与serializable作对,不过它倒是帮了我不少的忙啊。。。。
至于为什么要做这么做,因为目前项目中所有与serializable这个家伙打交道的类,都已经给了它联系方式了(实现serializable接口)。而现在的问题是,在他们打交道的过程中,既然把一些小家伙给忘记了(加了transient),所以才会总是被程序大人投诉(抛出NullPointerException)。所以,我在程序中使用了一个接口ISessionRevival,它提供了对付程序大人的投诉,感觉好象是一个律师。这个律师有一种看家本领(InitSessionRevival方法),所有找它做律师的类,都必须学它这门本领,以便以后程序投诉它时,可以应付自如。
看起来问题好象快要解决了。不,问题才刚刚开始。因为我要睡觉了。。。哈哈