[WLS] EAR의 웹 모듈 간 세션 공유 테스트
기본적으로 세션은 Context(웹 모듈) 단위로만 세션공유가 가능하다.
그러나 WebLogic에서는 Context(웹 모듈) 간에도 세션을 공유하도록 설정할 수 있다.
이번 테스트는 OL 7에 WLS 12.2.1.3 버전을 사용하였다.
=====================
1. 테스트 준비
=====================
* Context간에 세션 공유를 하기 위해서는 EAR형태의 어플리케이션을 배포해야 한다.
EAR 어플리케이션 안에는 webapp1.war와 webapp2.war라는 두 개의 웹 모듈이 존재한다.
그리고 모듈(APP) 사이에 세션을 공유하기 위해서는 META-INF/weblogic-application.xml 이라는 파일도 설정해주어야 한다.
weblogic-application.xml 설정
<?xml version="1.0" encoding="UTF-8"?> <weblogic-application xmlns="http://xmlns.oracle.com/weblogic/weblogic-application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-application/1.3/weblogic-application.xsd"> <application-param> <param-name>webapp.encoding.default</param-name> <param-value>UTF-8</param-value> </application-param> <session-descriptor> <!--<persistent-store-type>replicated_if_clustered</persistent-store-type>--> <sharing-enabled>true</sharing-enabled> </session-descriptor> </weblogic-application> |
> sharing-enabled를 true 설정해야 모듈간 세션 공유가 가능
=====================
2. 세션 유지 테스트
=====================
webapp1과 webapp2를 번갈아 가며 호출했을 때, 세션 아이디가 동일한지. 그리고 count가 연속해서 증가하는지 확인
그러나 이 테스트는 모듈 간의 세션 유지이지, WAS1번과 WAS2번의 세션 클러스터링이 아니기 때문에 서비스 중에 WAS 한 대가 죽게 되면 세션이 끊기게 된다.
여기서 더 나아가 weblogic을 클러스터로 묶어주고,
weblogic-application.xml 파일에 replicated-if-cluster 옵션을 넣어주면 세션 클러스터링 기능까지 구현 가능하다.
* 테스트 가능한 ear 소스는 아래 첨부