- Tomcat의 HttpSession은
JSESSIONID
라는 쿠키로 생성된다.
- DEFAULT_SESSION_COOKIE_NAME = “JSESSIONID”;
- getSessionCookieName()이라는 getter를 통해 접근 가능하다.
- Tomcat이 만드는 세션은 로그인 세션이 아니고 그저 클라이언트가 서버에 접속해 있는 상태와 기간을 의미하는 개념이다.
- Request.doGetSession()에서 세션 생성
- createSession() 호출
- sessionId가 없는 경우에는 generateSessionId()를 통해 sessionId를 생성함
- 16바이트 길이의 랜덤값을 뽑아서 16진수 32자 문자열을 만들어냄
- createSessionCookie() 호출
- 쿠키 생성
- getSessionCookieName()을 통해 cookie 이름을 얻고 sessionId를 이용해 쿠키 객체 생성
- max age 설정
- domain 설정
- secure 설정
- http only 설정
- addSessionCookieInternal() 호출
- Response.addSessionCookieInternal()에서 쿠키 헤더 추가
- 이 세션은 포트에 따라 달라지지 않으므로 동일한 IP 주소나 도메인을 가지고 다른 포트에 바인딩된 서비스끼리는 JSESSIONID가 충돌하거나 유효하지 않다고 판정될 가능성이 있다.
- 여러 서비스 인스턴스마다 세션을 분리하고 싶다면 IP나 도메인을 분리하고
- 여러 서비스 인스턴스마다 세션을 공유하고 싶다면 server.xml의 sessionCookieDomain 속성을 지정하면 된다.
<Context sessionCookieDomain=".mydomain.com">