본문 바로가기

IT/WAS

[Tomcat] 다중 톰캣 또는 다중 프로젝트 세션 충돌 문제(JSESSIONID 충돌)

반응형

하나의 서버 내에(같은 IP) 여러 톰캣을 설치하고 포트만 달리하여 서비스 할 경우 A사이트에 로그인 후 B사이트에 로그인을 하면 A사이트의 세션이 종료된다

 

이는 JSESSIONID라는 쿠키 이름이 같아 발생하는 이슈로 두 사이트의 IP가 같기 때문이다.

쿠키는 포트를 구분하지 않기에 이런 현상이 발생한다.

 

Cookie에 저장된 JSESSIONID로 A사이트와 B사이트가 같다.

 

해결 방법은 각 톰캣의 server.xml에

<Context path="" sessionCookieName="TJSESSIONID" crossContext="true" />

를 추가한다.

이때 sessionCookieName을 서로 다르게 설정한다

 

A사이트와 B사이트의 cookie 이름을 변경

위와 같이 각 사이트마다 다른 세션값을 가지고 있다.

 

또한 한개의 톰캣에 여러 프로젝트를 서비스 할 경우에도 이런 현상이 발생하는데

아래와 같이 path를 실제 경로로 설정하여 구분한다.

<Context path="/A" sessionCookieName="TJSESSIONID" crossContext="true" />
반응형