| 제목 | 톰캣과 스프링에서 서브 도메인과 세션을 공유하기 | ||||||
| 글쓴이 | 이지섭 | 작성일 | 2018-08-25 | 수정일 | 2024-08-09 | 조회수 | 14125 | 
| 톰캣에서 같은 어플리케이션에 대하여 서브 도메인과 세션을 공유하는 것이다. 
 폴더 아래에 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 : |