1
分析服务器应用程序我发现有一点,关于会话序列化和反序列化可能是危险的。许多地方的servlet层使用会话来存储对象。当会话被允许被序列化/反序列化?
考虑序列:
1)对象A是保存到会话
2)对象A被修改
3)从会话读对象A作为对象B
是有可能,在1)和2)之前发生序列化,并且作为B读取的对象是在从3变为3之前对象A的反序列化版本。
或者我保证,只要1,2,3在同一个请求中发生,A和B会相等吗?
分析服务器应用程序我发现有一点,关于会话序列化和反序列化可能是危险的。许多地方的servlet层使用会话来存储对象。当会话被允许被序列化/反序列化?
考虑序列:
1)对象A是保存到会话
2)对象A被修改
3)从会话读对象A作为对象B
是有可能,在1)和2)之前发生序列化,并且作为B读取的对象是在从3变为3之前对象A的反序列化版本。
或者我保证,只要1,2,3在同一个请求中发生,A和B会相等吗?
您的代码不应该依赖于你把会议是相同的实例对象,只要他们是语义等于作为暗示的equals
方法那么这应该足够了。
当会话可以被序列化时,当然有各种各样的原因,无论是会话重新启动服务器还是因为服务器都是集群的一部分。
但在请求处理期间是否可能发生序列化? –
我怀疑当请求正在处理时会话可能会被序列化的可能性很小,但如果服务器负载很重,我不排除它 - 这非常依赖于所讨论的服务器。 –
一般来说,规范说明了是否允许服务器这样做? –