Skip to content

세션 공유 #
Find similar titles

Structured data

Category
Programming

세션 공유 #

WebSphere #

IBM WebSphere 7 서로 다른 웹 모듈간의 세션 공유 #

서블릿 컨테이너를 기반으로 하는 웹 어플리케이션 서비스를 제공하다 보면 서로 다른 웹 어플리케이션 간의 통신이 필요한 경우가 간혹 존재한다. 임의의 조직에 인사,구매, 영업, 물류등의 서비스가 각기 따로 서비스 되고 있다고 가정 했을 때 사용자들은 유기적으로 잘 연결된 하나의 서비스로 제공받길 원할 것이고 이런 경우 별개로 제공되는 서비스들을 하나의 서비스로 통합하기 위한 방법으로 하나의 통합 서비스를 재구현 하거나 각 서비스들 간의 통신 API를 만들어 연계할 수도 있다. 다양한 방법중에 하나인 WAS(Web Application Server)에서 제공하는 Cross Context 설정을 통한 세션공유도 하나의 통합 방법이자 운영단계에서 사용할 수 있는 안정화방법이라 할 수 있다.

대표적인 WAS로 IBM의 WebSphere, 오라클의 WebLogic, 아파치에서 제공되는 Tomcat등이 있으며 대부분의 WAS에선 여러개의 웹 어플리케이션 간의 세션 공유를 지원하고 있다. 각각의 서버마다 세션 공유를 위한 설정방법은 다소 차이는 존재하지만 공유할 파라미터를 세션에 저장하거나 호출하는 방식은 서블릿 세션을 그대로 이용하기 때문에 큰 차이는 없는 것으로 보인다.

최근 WebSphere 7에서 Jython 기반 웹모듈과 Spring framework 기반 웹모듈을 하나의 서비스로 제공하기 위해 세션공유 문제를 해결해야할 일이 있었기에 이를 바탕으로 WebSphere 7에서의 세션공유 설정 및 확인 방법을 정리하고자 한다.

Environment #

IBM WebSphere 7 서버를 구동하기 위해선 JEE(Java Enterprise Edition) 1.4 이상과 Java SDK 1.5 이상이 사용되기 때문에 JDK(Java Development Kit) 6 이후부터 지원이 가능하다. 어플리케이션 배포는 WAR(Web Archive)를 포함하고 있는 EAR(Enterprise Archive) 파일을 이용해 할 수 있다. 통합개발환경(IDE)으로 IBM에선 Rational Application Develper(RAD) 9을 제공하고 있으며 Eclipse 3.7에서 사용할 수 있는 플러그인도 제공하고 있다.

Solution #

WebSphere 7부터 제공되는 센션공유 방법으로 Business Level이란 개념을 추가한 BLA(Business Level Application) 설정이 들어가 있지만 세션 정보 공유를 위해선 서블릿 코드 안에 HttpSession 객체가 아닌 IBM에서 제공하는 IBMApplicationSession 을 이용해야 하기 때문에 각 어플리케이션의 세션 컨틀롤러에 코드 변경작업을 해주어야 하는 번거로움이 있기에 동일한 EAR에서 웹 모듈이 서비스되는 조건에서의 세션 공유를 알아보도록 하겠다.

  • Step 1. IBM의 WebSphere7 RAD 혹은 WebSphere7 플러그인이 설치된 Eclipse 에서 Dynamic Web Application을 생성한다. 생성할 때 Target Runtime 환경을 WebSphere Application Server v7.0을 선택하고 생성할 웹 모듈이 포함될 EAR 프로젝트 이름을 새로 입력하거나 기존의 EAR 프로젝트를 선택해 웹 프로젝트를 생성한다.

    WebSphere7 RAD 웹 프로젝트 생성

  • Step 2. 생성된 EAR 프로젝트 META-INF 폴더에 있는 배치 디스크립터(application.xml)파일에 포함된 웹 모듈 설정으로 공유할 웹 모듈이 모두 포함되었는지 확인하고 배치 확장 디스크립터(ibm-appliction-ext.xim) 파일을 동일 폴더(META-INF)에 추가하고 생성된 파일을 열어 applicationext 엘리먼트 속성값으로 sharedSessionContext 를 다음과 같이 설정한다.

    <applicationext:ApplicationExtension... sharedSessionContext="true">
    ....
    </applicationext>
    

    WebSphere7 RAD EAR 프로젝트 생성

  • Step 3. 설정이 완료 된 후 EAR 프로젝트에 대한 EAR 파일 내보내기를 실행한다.

  • Step 4. 웹 브라우져를 통해 WebSphere 관리콘솔에 접속한 후 생성한 EAR 파일을 업로드하여 응용프로그램을 추가 생성한다. 파일업로드 완료 후 생성할 엔터프라이즈 응용프로그램의 세션공유 설정과 각 웹 모듈의 컨텍스트 이름, 사용할 서버들을 내용을 설정한 후 저장을 한다. 상황에 따라 배포시간이 많이 소요된다는 것을 유념하고 응용어플리케이션 추가가 완료 되면 응용프로그램 서비스를 수행한다.

    WebSphere 관리콘솔 메뉴화면

    EAR 파일 업로드

    설치 어플리케이션 실행

  • Step 5. 웹 브라우저를 열어 주소창에 해당 웹 모듈의 주소를 입력해 세션공유 상태를 확인하면 된다. 예제로 보여지는 화면은 세션에 자신의 정보를 하나 저장한 후에 세션에 저장된 모든 파라미터 값들을 출력하는 서블릿을 두 개의 웹모듈에 동일하게 구현 한 후 첫 번째 웹모듈을 호출한 후에 두 번째 웹모듈을 호출했을 때 첫 번째 웹 모듈에서 저장한 결과를 두 번째 웹모듈에서 호출된 것을 확인 할 수 있다.

    웹모듈 호출 결과

WebSphere7 기반 웹 어플리케이션 개발준비 #

Eclipse(http://www.eclipse.org)에서 Apache 그룹에서 제공하는 Tocmat 을 기반으로 하는 Web Application 개발을 수행한 개발자들은 많을 것이다. 그러나 실무에서는 Tomcat보다는 WebLogic이나 그 외의 WAS들이 중요도를 높이고 있는 것이 현실이다. 여기선 대표적인 IDE(Integrated Development Environment)인 Eclipse에서 IBM에서 제공하는 WebSphere 기반 웹 어플리케이션 개발을 위한 준비작업을 알아보도록 하겠다.

2014년 5월 현재 IBM에서 제공하는 Web Application 개발 도구 버전은 8.0 버전이며, WebSphere 7과 8.5 까지의 개발환경을 지원하고 있다. 안탑깝게도 IBM에서 제공하는 Eclipse plugin 개발도구는 이클립스 3.7 버전(Indigo)에서 가장 안정적으로 설치가 되기 때문에, 최신의 이클립스 사용하고 있다면 Eclipse 싸이트에서 3.7 버전을 다운받아 설치하기를 권장한다.

이클립스가 준비가 완료되면 이클립스를 실행한 후 상단 메뉴에서 Plugin 설치 메뉴를 실행시킨다. 플러그인 설치 메뉴 경로 Help > Install New Software.. IBM 개발지원 싸이트에서 개발도구 설치를 진행할 것이기 때문에 설치창의 "Work with" 에 새로게 다음의 주소를 추가한다.

주소 추가 후 IBM의 웹 개발도구 중 설치할 목록들을 확인할 수 있다. 여러가지 개발도구 들이 존재하지만 WebSphere 7과 8.5 버전을 위한 도구들만을 선택하고 다음단계로 넘어간다.

선택한 설치항목들을 다시 한번 확인하고 다음으로 넘어간다.

라이센스 확인화면에서 라이센스 동의를 선택한 후 설치를 계속 진행한다.

설치가 완료되면 이클립스를 재실행할 것인가를 물어보면 재실행하도록 한다.

이클립스가 재실행되면 이클립스 환경설정 메뉴를 선택해 환경설정 창에서 구동서버를 설정해 주어야 한다. IBM에서 제공하는 WebSphere 7 Express 버전이 설치된 상황을 전제로 서버설정 및 프로젝트 생성방법을 설명하도록 하겠다. 환경설정창에서 Server Runtime Environments 을 선택한다.

새로운 구동서버를 추가하기위해 Add 버튼을 누르면 서버선택 창이 뜨고, 설치된 WAS를 선택한다. 여기선 WebSphere Application Server 7.0 을 선택한다.

선택된 WebSphere Application Server 7.0 의 설치경로를 선택한다.

정상적으로 설정이 되면 Runtime Environment에 다음과 같이 추가된 것을 확인할 수 있다.

WAS서버 설정이 완료되었으면 임의의 새로운 프로젝트를 생성하도록 한다. 프로젝트 생성 창에서 Dynamic Web Project 를 선택한 후 Target Runtime 에 좀전에 설정한 WebSphere Application Server v7.0을 선택한 후 각 항목을 추가로 입력을 한다. WebSphere는 EJB 기반 서비스이다 보니 Enterprise Application 설정하는 부분등이 Tomcat 서버와 다르게 추가입력을 해주어야 한다.

소스가 컴파일될 위치를 선택한다. Ant 혹은 Maven등을 이용해 자동 Build를 지원하는 경우엔 다른 경로를 선택해도 되지만 일반적으로 WAR(Web Application Archive)로 배포될 때 클래스파일이 존재하는 WEB-INF/classes를 기본으로 사용한다.

웹 컨텐츠 폴더 설정하는 부분에선 컨택스트 루트 이름과 프로젝트 내 폴더 이름을 입력한다. 프로젝트 폴더 이름을 SVN등에 공유하기 위해 나중에 변경하게 되는 경우 생성한 프로젝트 전체가 꼬이게 되는 경우가 발생할 때가 있으므로 되도록 이면 변경하지 않는 것이 좋다.

이렇게 되면 이클립에서 WebSphere7 에서 서비스할 웹 어플리케이션 개발환경 준비가 완료 되었다.

Suggested Pages #

0.0.1_20140628_0