类型: 质量问题

    把一个不可序列化的对象作为HttpSession属性来储存会破坏应用程序的可靠性。一个JAVA EE应用程序可以利用多个JVM,以提高应用程序的可靠性和性能。为了显示给用户一个单个的应用程序,JAVA EE容器可能在多个JVM之间复制HttpSession对象,所以当一个JVM不可用时,另一个JVM可以在不中断应用程序流程的情况下继续执行。为了使Session能够正常传递,作为属性存储在Session中的数值必须实现Serializable接口。

    例如:下面代码片段中,将一个DataGlob对象添加到HttpSession中,但由于它是不可序列化的,因此该Session就再也不能被传递了。

    1. public class DataGlob {
    2. String globName;
    3. String globValue;
    4. public void addToSession(HttpSession session) {
    5. session.setAttribute("glob", this);
    6. }
    7. }