类型: 质量问题
把一个不可序列化的对象作为HttpSession属性来储存会破坏应用程序的可靠性。一个JAVA EE应用程序可以利用多个JVM,以提高应用程序的可靠性和性能。为了显示给用户一个单个的应用程序,JAVA EE容器可能在多个JVM之间复制HttpSession对象,所以当一个JVM不可用时,另一个JVM可以在不中断应用程序流程的情况下继续执行。为了使Session能够正常传递,作为属性存储在Session中的数值必须实现Serializable接口。
例如:下面代码片段中,将一个DataGlob对象添加到HttpSession中,但由于它是不可序列化的,因此该Session就再也不能被传递了。
public class DataGlob {
String globName;
String globValue;
public void addToSession(HttpSession session) {
session.setAttribute("glob", this);
}
}