2013-01-25 37 views
1

分析服务器应用程序我发现有一点,关于会话序列化和反序列化可能是危险的。许多地方的servlet层使用会话来存储对象。当会话被允许被序列化/反序列化?

考虑序列:

1)对象A是保存到会话

2)对象A被修改

3)从会话读对象A作为对象B

是有可能,在1)和2)之前发生序列化,并且作为B读取的对象是在从3变为3之前对象A的反序列化版本。

或者我保证,只要1,2,3在同一个请求中发生,A和B会相等吗?

回答

1

您的代码不应该依赖于你把会议是相同的实例对象,只要他们是语义等于作为暗示的equals方法那么这应该足够了。

当会话可以被序列化时,当然有各种各样的原因,无论是会话重新启动服务器还是因为服务器都是集群的一部分。

+0

但在请求处理期间是否可能发生序列化? –

+0

我怀疑当请求正在处理时会话可能会被序列化的可能性很小,但如果服务器负载很重,我不排除它 - 这非常依赖于所讨论的服务器。 –

+0

一般来说,规范说明了是否允许服务器这样做? –