我是靠谱客的博主 愉快歌曲,最近开发中收集的这篇文章主要介绍fortify——J2EE Bad Practices: Non-Serializable Object Stored in Session,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

J2EE错误实践:存储在会话中的非可序列化对象

Explanation:
J2EE JVM JVM J2EE JVM HttpSession JVM JVM

public class DataGlob {
String globName;
String globValue;
public void addToSession(HttpSession session) {
session.setAttribute("glob", this);
}
}


Recommendations:

public class DataGlob implements java.io.Serializable {
String globName;
String globValue;
public void addToSession(HttpSession session) {
session.setAttribute("glob", this);
}
}

分析

对于不需要将对象序列化到同一jvm以外的应用场景,以上代码没有问题。然而考虑到系统的扩展性,以上问题应该予以避免。

以下是一些常见的会导致问题的场景:

1.       session对象存储到外部系统

在一些大型应用系统的实现里,会考虑将部分SESSION里的对象钝化到数据库、磁盘里。

2.       集群环境

在非session-sticky的集群环境里,应用服务器会在集群里广播、复制session数据

修正

   ShareInfo类应该实现序列化:implements java.io.Serializable


最后

以上就是愉快歌曲为你收集整理的fortify——J2EE Bad Practices: Non-Serializable Object Stored in Session的全部内容,希望文章能够帮你解决fortify——J2EE Bad Practices: Non-Serializable Object Stored in Session所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部