WAS/WebLogic

[Tips] JESSIONID 변경

투칼론 2017. 2. 14. 20:17
반응형

웹로직에서 세션 사용 시에 디폴트 세션 ID는 "JSESSIONID" 이다.  복 수개의 웹 애플리케이션에서 별도 세션ID를 설정하지 않고 사용한다면, JSESSIONID라는 동일한 세션 ID가 중복되어 원하지 않는 결과를 얻을 수 있다.


이러한 문제를 해결하기 위해서는 웹 애플리케이션 설정에서 고유의 세션 ID를 설정해야 한다.


설정할 부분은 WAS 설정파일과 WebServer 플러그인 설정 파일이다



1. 설정


1) WAS 영역 - 웹 애플리케이션의 배포디스크립터인 WEB-INF/weblogic.xml


 <weblogic-web-app> 

    <session-descriptor>

         <cookie-name>MYJSESSIONID</cookie-name>

    </session-descriptor> 

 </weblogic-web-app>



2) WebServer 플러그인 영역


웹티어, Apache, iPlanet 등 웹서버에서 WAS와 연동하기 위한 플러그인 설정 부분이다.


 ...

 <IfModule mod_weblogic.c>

   WebLogicCluster   192.1.1.3,192.1.1.4

   ...

   CookieName  MYJSESSIONID

   ...

  </IfModule>


위에서 <cookie-name>과 CookieName 값이 반드시 일치해야 한다.



2. Session ID를 확인하는 방법


1) HTTP Watch와 같은 툴을 이용하는 방법

    별도 화면 캡처는 하지 않음


2) jsp 예제를 통해 Cookie 명을 출력해보는 방법



<jsp 예제>


 ... 

 request.getHeaderNames() 

 while () {


 }


 Cookie cookies[] = request.getCookies()

 while () {


 }

 ...



3. 웹로직 Session ID 포맷


Session ID를 확인하는 방법은 HttpServletRequest.getSessionID() 를 출력하거나,  위에서 설정한 쿠키(예시:MYJSESSIONID) 값을 출력해보면 된다.


위에서 설명한 방법으로 출력해보면, Session ID 포맷은 아래와 같다.


[클러스터링 환경에서 세션 복제]

JSESSIONID=SESSION_ID!PRIMARY_JVMID_HASH!SECONDARY_JVM_HASH!CREATION_TIME


[단일 인스턴스 환경]

JSESSIONID=SESSION_ID!PRIMARY_JVMID_HASH!CREATION_TIME


참고로, 세션 ID 값의 포맷은 !(느낌표)로 필드를 구분되어 있다.



예시)

BrYx4hyPZ4VSP9Wo4eU0OrqmhXMLFONbRHnpLFwRKZ9MSaf6wvYj!-314662473


위에서 Session ID는 BrYx4hyPZ4VSP9Wo4eU0OrqmhXMLFONbRHnpLFwRKZ9MSaf6wvYj

-314662473은 JVMID(해쉬값)으로서 JVM을 구별할 때 사용함