繁体   English   中英

使用java / j2ee,序列化如何工作以及如何在会话中保存该对象?

[英]With java/j2ee, how does serialization work and in relation to saving that object in session?

如果我有一个包含数百个String字段和对象对象的复杂对象。 有些正在实现Serializable,有些则不是。

j2ee服务器如何在会话中序列化该数据。 我是否希望返回所有数据。 甚至是物体的物体。

Session.setAttribute(数据)

例如Session.getAttribute()== data.getData()。getData()。getData()。getData1()

从getData1()返回的对象是否正确返回?

(我正在使用Tomcat 6和Websphere 6+)

servlet规范要求存储在会话中的对象可以完全序列化,如果违反规范,容器崩溃并使用NotSerializableException并将整个会话视为无效将是完全正确的行为。

幸运的是,大多数Web容器都更宽容,而是将会话保留在内存中,只是在日志文件中写入警告。 当然,如果你有很多包含大量数据的会话,这可能会导致问题。

序列化保存整个对象图*。 当您的复杂对象进入会话时,整个事物都会被存储。 如果要使用群集,那么属于复杂对象的所有对象必须是可序列化的,因为此时您的对象将被写入可由群集中的其他节点访问的存储。

编辑:当然,应该补充一点,静态和瞬态字段不会被序列化。 我尽量不在需要序列化的东西中包含静态可变字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM