繁体   English   中英

将不可序列化的对象存储为 HttpSession 属性是否好?

[英]is it good to store a non-serializable object as an HttpSession attribute?

我正在使用强化 Web 应用程序,它指出了以下代码的问题,因为方法addToSession()将不可序列化的对象存储为HttpSession属性,这可能会损害应用程序的可靠性。

public class DataGlob {
   String globName;
   String globValue;

   public void addToSession(HttpSession session) {
     session.setAttribute("glob", this);
   }
}

它建议我执行以下操作。

public class DataGlob implements java.io.Serializable {
   String globName;
   String globValue;

   public void addToSession(HttpSession session) {
     session.setAttribute("glob", this);
   }
}

我是否需要按照它向我推荐的方式更改代码,还是无需更改就可以?

建议存储在会话中的所有属性都是可序列化的。 它不是必需的,但将来可能会有用。

为了支持故障转移,应用程序服务器可以将会话数据保存在磁盘上或通过网络传输,以便集群中的另一个节点可以继续为会话提供服务。 为了支持这一点,会话中存储的所有数据都需要可序列化。

HttpSession内容应该是可序列化的,以使容器能够将会话存储到磁盘或将会话传输到集群中的另一个节点。
所以最好让你的类 Serializable 避免以后的序列化问题。

暂无
暂无

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

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