본문 바로가기
오라클/WebLogic

[WLS] EAR의 웹 모듈 간 세션 공유 테스트

by sangyeon 2021. 11. 26.
728x90

기본적으로 세션은 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 소스는 아래 첨부

WL.ear
0.01MB

 

728x90