세션 클러스터링을 통해서 여러 서버에서 세션을 공통으로 사용할때 일반적으로 세션에 태우면 Serializable 인터페이스를 구현한다
구현하면 private static final long serialVersionUID = 3447676620891264448L; 이런식으로 serialVersionUID 를 생성해서 사용하게 되는데
스프링의 SessionAttributes 를 이용해서 사용될 데이터의 경우 이렇게 하고 사용하니
Manager [localhost#]: Unable to receive message through TCP channel 아래와 같은 메세지가 떨어진다.
해당 메시지에 대해선 대충 tcp 메시지를 수신 할 수 없다인데 SessionAttributes 를 통해서 화면단에서 데이터를 받는데 문제가 있는것
같았다
자바에서 Serializable 구현 할때 3가지 방법이 있는데
1. 디폴트 생성
2. 새로운 생성
3. 생성 안함(jvm 이 구동시 자동 생성)
이중 3번의 경우는 jvm 이 생성 해줄때 알고리즘이 복잡하고 역직렬화 시킬때 오류 발생 확률이 존재한다고 한다.
즉 3번은 쓰지 말라는거다 1번과 2번의 차이가 재밌는데 2번의 경유 유니크 하게 사용하는 건데 이게 세션 클러스터링을 통하고
SessionAttributes 을 이용하면 tcp 수신 문제가 나오는것이다.
이럴경우엔 1번으로 생성 하니 문제 없이 넘어갔다.. 정확한 원인은 잘 모르겟지만 참고 해야 겟다
1번의 디폴트 생성은
private static final long serialVersionUID = 1L; 요렁게 된다.
'java' 카테고리의 다른 글
java 특수문자 (디렉토리 변경 공격) ../ 치환 (0) | 2016.11.01 |
---|---|
자바 문자열 비교 3가지 (0) | 2016.09.28 |
java 향상된 for 문 (0) | 2016.08.05 |
프로세스 실행 시간 측정 (0) | 2015.12.16 |
서블릿 속도 개선을 위한 jetty 설정 (페이지 압축 기능..기타 여러가지 안될때) (0) | 2014.05.29 |