하나의 was에 여러개의 프로젝트(컨텍스트)가 존재할 경우 일반적으론
서로간 세션의 공유가 되지 않는다.
이때 각 컨텍스트간의 세션이 공유될 수 있는 방법을 알아보자.
1. 서버의 context.xml의 변경
1 2 3 4 5 6 7 8 9 10 | <!-- The contents of this file will be loaded for each web application --> <Context> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> | cs |
저 위의 컨텍스트를 아래와 같이 바꿔준다.
1 2 3 4 5 6 7 8 9 10 | <!-- The contents of this file will be loaded for each web application --> <Context crossContext="true"> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> | cs |
2. server.xml 변경
1 | <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/> |
1 | <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" emptySessionPath="true"/> | cs |
emptySessionPath="true" 를 추가 한다.
3. 세션 세팅
1 | request.getSession().getServletContext().setAttribute("ssUserId", userId); |
기존의 방법에서 가운데 getServletContext()를 추가 하여 준다.
root로 지정되어 있지 않는 컨텍스트에선
getServletContext("/sample") 와 같이 컨텍스트명을 지정하여 준다.
4. 세션 겟
1 | String ssUserId = (String) request.getSession().getServletContext().getContext("/").getAttribute("ssUserId"); | cs |
가지고 올땐 위와 같이 가져오며 루트가 아닌 컨텍스트에서 set 한 경우엔 getContext("/sample") 와 같이 컨텍스트 명을 넣어 사용 하면 된다.
'Yame Programmer > 전자정부프레임워크' 카테고리의 다른 글
전자정부 프레임워크 Interceptor[인터셉터] 설정 하기 (1) | 2016.05.25 |
---|---|
서버[tomcat] 실행시 클래스 실행 (0) | 2016.05.24 |
DWGViewX no mapping uri오류 해결 (0) | 2016.01.08 |
파일 다운로드할때 파일이름 원래 이름으로 바꾸기 (7) | 2016.01.08 |
ie , 익스플로러 ajax 버그 (이전 데이터를 계속 불러오는 버그) (0) | 2015.12.18 |