제목 | 톰캣과 스프링에서 서브 도메인과 세션을 공유하기 | ||||||
글쓴이 | 이지섭 | 작성일 | 2018-08-25 | 수정일 | 2024-08-09 | 조회수 | 10993 |
톰캣에서 같은 어플리케이션에 대하여 서브 도메인과 세션을 공유하는 것이다.
폴더 아래에 META-INF 폴더를 만들고 그 안에 context.xml 파일을 만든다.
%TOMCAT_HOME%/webapps/ROOT/META-INF/context.xml
context.xml 파일 내용 : <?xml version="1.0" encoding="UTF-8"?>
<Context sessionCookieDomain=".jisblee.me">
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
</Context>
사용하는 도메인명을 sessionCookieDomain=".도메인명" 과 같이 입력하고, 쿠키 처리기를 LegacyCookieProcessor 로 지정한다. 특별히 별도의 라이브러리를 다운받아야 하지는 않는다.
LegacyCookieProcessor 클래스는 /lib/tomcat-coyote.jar 파일에 있다.
파일 인코딩을 UTF-8 로 하였다.
%TOMCAT_HOME%/conf/context.xml 파일에 위의 내용을 넣어도 되지만 ROOT 어플리케이션에만 적용해도 되기에
%TOMCAT_HOME%/webapps/ROOT/META-INF/context.xml 파일을 만들어서 ROOT 어플리케이션에만 적용한다.
이렇게 하였을 경우, jisblee.me 도메인과 www.jisblee.me 도메인 간에 세션이 공유되는 효과를 볼 수 있다.
참고로, 웹 어플리케이션(웹 홈페이지)에서 루트 아래에 있는 WEB-INF 폴더와 META-INF 폴더는 웹 상에서 접근이 안된다.
그리고 Spring 설정에서 세션 쿠키 도메인을 설정한다. package com....configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;
@Configuration
public class SessionCookie {
@Bean
public CookieSerializer cookieSerializer() {
DefaultCookieSerializer serializer = new DefaultCookieSerializer();
serializer.setDomainName("jisblee.me");
serializer.setCookieName("JSESSIONID");
serializer.setCookiePath("/");
//serializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$");
return serializer;
}
}
XML 설정이다. <bean class="org.springframework.session.web.http.DefaultCookieSerializer">
한가지 덧붙이면 이 방식은 tomcat 10.1 버전부터는 적용되지 않는다. LegacyCookieProcessor 클래스가 tomcat 10.1 부터는 없어졌다. tomcat 10.0 버전은 된다.
[참조한 웹 페이지] http://kwonnam.pe.kr/wiki/java/tomcat https://tomcat.apache.org/tomcat-8.5-doc/config/context.html https://stackoverflow.com/questions/42524002/an-invalid-domain-was-specified-for-this-cookie https://tomcat.apache.org/tomcat-8.5-doc/config/cookie-processor.html https://stackoverflow.com/questions/35076622/how-to-configure-spring-sesssion-custom-cookie-by-xml | |||||||
로그인 | Language : |