2017-01-18 1 views
2

요새화 된 웹 응용 프로그램을 사용 중입니다. addToSession() 메서드는 응용 프로그램의 안정성을 손상시킬 수있는 HttpSession 특성으로 직렬화 할 수없는 개체를 저장하기 때문에 다음 코드에서 문제가 발생했습니다.직렬화 할 수없는 객체를 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); 
    } 
} 

나에게 권장 된대로 코드 변경이 필요하거나 변경하지 않아도됩니까?

답변

1

세션에 저장할 모든 속성을 직렬화 할 것을 권장합니다. 필수는 아니지만 미래에 유용 할 수 있습니다.

장애 조치를 지원하기 위해 응용 프로그램 서버는 세션 데이터를 디스크에 저장하거나 네트워크를 통해 전송하여 클러스터의 다른 노드가 세션 서비스를 계속할 수 있습니다. 이것을 지원하려면 세션에 저장된 모든 데이터를 직렬화 할 수 있어야합니다.

0

HttpSession 컨테이너는 세션을 디스크에 저장하거나 세션을 클러스터의 다른 노드로 전송할 수 있도록 serialize 할 수 있어야합니다.
직렬화로 나중에 문제가 발생하지 않도록 클래스 Serializable을 만드는 것이 좋습니다.

+1

직렬화 가능한 세션 객체를 유지하지 않는 게으른 프로그래머의 결과를 처리해야한다는 데 나는이 답변에 완전히 동의합니다. 다만 그것을하고 너 자신 또는 누군가 다른 사람을 나중에 저장하십시오. –

관련 문제