TY blog

같은IP 에서 톰캣 2개이상 동시 로그인시에 세션끊김현상 조치 - JSESSIONID 본문

기타

같은IP 에서 톰캣 2개이상 동시 로그인시에 세션끊김현상 조치 - JSESSIONID

주짓수하는 개발자 2023. 3. 28. 23:05

이클립스에서 톰캣 2개를 각각 포트만 다르게 하여 톰캣을 띄워 테스트를 진행했었는데 한쪽 서비스에 로그인이 되어있을 때 다른 한쪽 서비스에서 로그인 시 기존 로그인된 서비스에서 세션이 사라지는 현상을 확인했었다. 

 

위와 같은 현상은 톰캣 2개의 서비스가 포트는 다르지만 같은 IP를 가지고 있어 브라우저에 접근하여 JSESSIONID 값을 같은 값으로 발급되어 양쪽 서비스에서 로그인을 하지 못한다. 

 

JSessionID 이란 ? 

 

톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키이다. 즉, 세션에서 사용되는 쿠키이름이다.

톰캣은 JSESSIONID 쿠키를 클라이언트에게 발급해 주고 이 값을 통해 세션을 유지할 수 있게 한다. 

클라이언트는 JSESSIONID 라는 KEY를 서버로 전달하여 서버에서 클라이언트를 구별한다. 

즉 VALUE 값이 세션 데이터가 되는 것이다. 

A에서 로그인 되어있지만 B에서  로그인 시 A에 있는 JSESSIONID 값이 변경되어 로그인이 유지되지 않는 것이다. 

 

위와 같은 상황에서 조치할 수 있는 방안은 

톰캣 설정파일 server.xml 에서 JSESSIONID 를 다른 이름으로 변경하여 조치할 수 있다. 

 <Context docBase="프로젝트 명" path="/" reloadable="true" sessionCookieName="변경할 이름" source="org.eclipse.jst.jee.server:프로젝트 명"/>

 

sessionCookieName 추가하여 톰캣을 재시작 시 정상적으로 변경된다.

변경된 사항을 확인하고 싶으면 

브라우저 개발자도구 ( 단축키 F12 ) > 애플리케이션 > 쿠키에서 변경할 이름값이 나와있으면 정상적으로 변경된 것이다. 

'기타' 카테고리의 다른 글

프로세스와 쓰레드  (0) 2024.02.17
웹 쿠키 속성  (0) 2023.08.27
Oracle SQL  (0) 2023.02.12
JSTL 태그 사용  (0) 2023.01.16
이클립스 웹 프로젝트 초기 세팅  (0) 2023.01.02
Comments