기본적으로 세션은 실행되는 WAS(Web Application Server)의 메모리에 저장되고 호출됩니다.
메모리에 저장되다 보니 내장 톰캣처럼 애플리케이션 실행 시 실행되는 구조에선 항상 초기화됩니다.
즉, 배포할 때마다 톰캣이 재시작되는 것입니다.
이 외에도 한 가지 문제가 더 있습니다.
2대 이상의 서버에서 서비스하고 있다면 톰캣마다 세션 동기화 설정을 해야만 합니다.
여기서는 데이터베이스를 세션 저장소로 사용하는 방식을 선택하여 진행하겠습니다.
규모가 큰 B2C 서비스에서는 Redis, Memcached와 같은 메모리 DB를 세션 저장소로 사용합니다.
실제 서비스로 사용하기 위해서는 Embedded Redis와 같은 방식이 아닌 외부 메모리 서버가 필요합니다.
spring-session-jdbc 등록
pom.xml
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-jdbc</artifactId>
</dependency>
application.properties
spring.session.store-type=jdbc
spring.session.jdbc.initialize-schema=always
테이블 생성 확인
세션 데이터 확인
이제 서버 재시작해도 세션이 풀리지 않습니다.
참고
'Spring' 카테고리의 다른 글
[SpringSecurity] 네이버 로그인 연동하기 2 - 스프링 시큐리티 설정 등록 (0) | 2021.07.03 |
---|---|
[SpringSecurity] 네이버 로그인 연동하기 1 - 네이버 API 등록 (0) | 2021.06.29 |
spring.session.jdbc.initialize-schema 옵션 (0) | 2021.06.28 |
[SpringSecurity] 구글 로그인 연동하기 7 - 어노테이션 기반으로 개선하기 (0) | 2021.06.27 |
[SpringSecurity] 구글 로그인 연동하기 6 - 로그인 테스트 (0) | 2021.06.24 |
댓글