为什么传输对象需要实现可序列化?

我今天意识到,多年来,我一直盲目地遵循这一要求,而从未真正问过为什么。今天,我遇到了一个NotSerializableException,其中包含我从头开始创建的模型对象,我意识到足够了。

我被告知这是因为负载平衡服务器之间的会话复制,但我知道我在会话范围内看到其他对象未实现可序列化。这才是真正的原因吗?


答案 1

因为为了通过导线传输它们需要可序列化为可以放在导线上的形式。

像二进制,或xml,Json或simillar

这里有更多信息...任何域对象都不应该是可序列化的吗?


答案 2

这才是真正的原因。在实践中,它是否真的重要,完全取决于Web服务器或应用程序服务器是否确实会序列化对象(或验证它是否可序列化,但实际上,唯一的方法是实际序列化它)。

大多数应用程序服务器可以选择(至少)不严格要求它。如果您不使用实际共享状态的负载平衡服务器,那么您可能已经看到它没有问题。