java - 对于 java/j2ee,序列化如何工作以及如何在 session 中保存该对象?

标签 java session serialization servlets

如果我有一个包含数百个字符串字段和对象对象的复杂对象。有些正在实现可序列化,有些则没有。

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

Session.setAttribute(数据)

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

从 getData1() 返回的对象会正确返回吗?

(我同时使用 Tomcat 6 和 Websphere 6+)

最佳答案

Servlet 规范要求存储在 session 中的对象是完全可序列化的,如果您违反规范,那么容器会因 NotSerializedException 崩溃并将整个 session 视为无效而关闭,这是完全正确的行为。

幸运的是,大多数 Web 容器都比较宽容,它们会将 session 保留在内存中,仅将警告写入日志文件。当然,如果您有很多包含大量数据的 session ,这可能会导致问题。

关于java - 对于 java/j2ee,序列化如何工作以及如何在 session 中保存该对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688493/

相关文章:

java - 为什么 LocalEntityManagerFactoryBean 类被称为 "Local"?

java - 将多种类型的对象作为参数传递给方法

PHP:$_SESSION 似乎没有设置。任何想法?

C# 序列化一个带有 List 数据成员的类

java - 启动 Eclipse 时出错 : An internal error occured during initializing java tooling

java - Java中读取txt文件

php - 如何使用 PHP 创建 session ?

php - 我什么时候必须声明 session_start();?

php - 序列化然后反序列化 mysql 结果对象

c# - JSON.NET 根标记和反序列化