Skip to main content

WebSphere 마이그레이션: JBoss v4.x에서 IBM WebSphere Application Server Community Edition v2.x로 마이그레이션하기

Ashish Jain, Software Engineer, IBM
IBM India Labs에서 근무하는 소프트웨어 엔지니어로, IBM WebSphere Application Server Community Edition의 레벨 3 기술 지원부에서 활동하고 있다. 인도의 NITK Surathkal에서 전산학 학사 학위를 받고 2005년에 ELTP로 IBM에 입사했다.

요약:  JBoss® Application Server에서 실행 중인 애플리케이션을 마이그레이션하여 WebSphere® Application Server 및 Apache Geronimo의 뛰어난 지원과 아키텍처를 활용할 수 있습니다. 이 문서에서는 JBoss에서 실행 중인 애플리케이션을 WebSphere Application Server Community Edition으로 마이그레이션하는 데 도움이 되는 리소스에 대해 설명합니다.

원문 게재일:  2009 년 10 월 14 일 번역 게재일:   2009 년 11 월 10 일
난이도 :  초급 영어로   보기

소개

Java™ EE5™(Java Enterprise Edition 5)는 분산 멀티티어 Java 애플리케이션의 개발 및 실행을 위한 프로그래밍 플랫폼이다. 개발된 애플리케이션은 Java EE 컨테이너 중 하나에서 실행된다. 동일한 스펙을 구현한 두 컨테이너를 사용하면 한 애플리케이션 서버용으로 개발된 애플리케이션을 다른 애플리케이션 서버에서 실행하기 위해 끊김 없이 마이그레이션할 수 있다. 하지만 클래스 로더 메커니즘, 애플리케이션 패키징, 원시 코드의 사용, 전개 계획 등의 차이로 인해 몇 가지 복잡한 작업을 수행해야 한다.

이 기사에서는 두 가지 애플리케이션 서버와 이러한 서버의 아키텍처 차이점 및 유사점에 대해 설명한다. 그런 다음 마이그레이션 기사 섹션에서는 JBoss Application Server용으로 개발된 애플리케이션을 WebSphere Application Server Community Edition(이하 Community Edition)으로 마이그레이션하는 작업과 관련된 단계에 대해 설명한다. 먼저 두 애플리케이션 서버부터 자세히 알아보자.

JBoss 애플리케이션 서버는 애플리케이션 개발, 테스트 및 전개를 지원하기 위해 Red Hat에서 개발한 Java EE5(Java Enterprise Edition 5) 호환 애플리케이션 서버이다. 이 기사를 집필하던 당시 jboss.org에서 JBoss v5를 릴리스했지만 RedHat JBoss v5의 전체 기능이 릴리스되지는 않았다. JBoss v5의 마이그레이션도 비슷하다.

Community Edition은 Apache Geronimo를 기반으로 하는 Java EE5(Java Enterprise Edition 5) 인증 애플리케이션 서버이며 예를 들어, 다음과 같은 몇 가지 구성 요소를 포함한 여러 오픈 소스 구성 요소와 함께 미리 패키징되어 있다.

  • Apache Derby: 기본 데이터베이스 서버
  • Apache OpenJPA: 지속성 엔진
  • Apache OpenEJB: EJB 컨테이너
  • Apache Tomcat: 웹 컨테이너
  • Active MQ: 메시징 공급자

Geronimo 커널은 Geronimo의 핵심 기능으로 오픈 소스 구성 요소를 플러그인하기 위한 가교 역할을 수행한다.

Community Edition의 일부 상위 레벨 기능은 다음과 같다.

  • Java 지원 - IBM 및 Sun Java
  • 플랫폼 지원 - SUSE, Ubuntu, Red Hat 및 Asianux Linux, AIX, Sun Solaris, Windows XP, 2003, 2008 및 Vista
  • 데이터베이스 지원 - Apache Derby, IBM DB2, IBM Informix, MySQL, Oracle, Microsoft SQL Server 및 기타 JDBC 호환 데이터베이스
  • 메시징 지원 - Apache ActiveMQ, WebSphere MQ
  • 디렉토리 서버 지원 - Apache Directory Server, IBM Tivoli Directory Server, Microsoft Active Directory Server, Open LDAP Server, Sun One Directory Server
  • 소용량 설치 - Community Edition은 쉽게 시작할 수 있다. 약 100MB만 다운로드하면 되므로 쉽게 다운로드하여 시작할 수 있다. Community Edition은 소용량이기 때문에 더 큰 스택에 쉽게 포함시킬 수 있으며 따라서 고객과 ISV가 Community Edition을 사용하여 토탈 솔루션을 개발하는 데 큰 도움이 된다.
  • 중앙 집중식 구성 및 제어 - Community Edition은 관리 콘솔을 통해 모니터링 지원을 제공한다. 이 기능을 사용하면 여러 서버에 대한 통계 및 성능 데이터를 수집하여 사용자에게 시각적으로 보여 줄 수 있다.
  • WebSphere Application Server 계열에 대한 이식성 - 오픈 소스 커뮤니티의 성장과 혁신이 지속적으로 이어지면서 WebSphere Application Server Community Edition에 대한 투자의 가치도 함께 높아진다. 또한 WebSphere Application Server Community Edition은 WebSphere 미들웨어 제품에 대한 포괄적이고 검증된 포트폴리오를 제공한다. 시간이 지나면서 요구 사항이 높아지면 WebSphere Application Server 구성을 통해 SOA와 같은 고급 기능을 도입하는 데 필요한 정보를 확인할 수 있다.
  • 자유로운 제품 라이센스 - 개발, 테스트 및 전개 작업에서 자유롭게 사용할 수 있다.
  • 무료 30일 시험판 지원 - Community Edition은 직접 사용해 보면서 IBM Support의 장점을 경험할 수 있도록 30일 시험판 지원을 제공한다.
  • Eclipse 플러그인 - 애플리케이션 개발, 테스트 및 전개
  • 궁금한 점을 물어볼 수 있는 오픈 포럼 – IBM developerWorks의 Community Edition 포럼에 문의 사항을 게시할 수 있다.

아키텍처 차이점 및 유사점

다음 섹션에서는 Community Edition과 JBoss Application Server의 아키텍처 다이어그램을 보여 준다.


그림 1. Community Edition의 아키텍처 다이어그램
Community Editiona 아키텍처를 보여 주는 다이어그램

그림 2. JBoss Application Server의 아키텍처 다이어그램
JBoss 아키텍처를 보여 주는 다이어그램

표 1에서는 JBoss Application Server와 Community Edition의 주요 차이점과 유사점에 대해 설명한다.


표 1. JBoss 및 Community Edition 기능 비교
기능 JBoss Community Edition
EJB(Enterprise Java Beans) EJB 3.0 스펙 지원 EJB 3.0 스펙 지원
JCA(Java Connector Architecture) JCA 1.5 스펙 지원 JCA 1.5 스펙 지원
Java Servlets Servlets 2.5 스펙 지원 Servlets 2.5 스펙 지원
JSP(Java Server Pages) JSP 2.1 스펙 지원 JSP 2.1 스펙 지원
JSF(Java Server Faces) JSF 1.2 스펙 지원 JSF 1.2 스펙 지원
트랜잭션 XA 및 로컬 트랜잭션과 트랜잭션 없음 지원 XA 및 로컬 트랜잭션과 트랜잭션 없음 지원
JTA 구현 JBoss JTA를 통해 JTA 지원 ObjectWeb JOTM 및 HOWL을 통해 제공되는 트랜잭션 지원
연결 풀링 및 관리 JBossCX 프레임워크 Codehaus TranQL을 통한 사용자 정의 Geronimo 코드
웹 컨테이너 Apache Tomcat 6.0 Apache Tomcat 6.0.20
EJB 컨테이너 JBoss 자체 구현 Apache OpenEJB
지속성 공급자 Hibernate Apache OpenJPA
EJB 애플리케이션 전개 디스크립터 jboss.xml에 구성됨 openejb-jar.xml에 구성됨
웹 애플리케이션 전개 디스크립터 jboss-web.xml에 구성됨 geronimo-web.xml에 구성됨
EAR 애플리케이션 전개 디스크립터 jboss-app.xml에 구성됨 geronimo-application.xml에 구성됨
JPA 전개 디스크립터 persistence.xml에 구성됨 persistence.xml에 구성됨


일반적인 마이그레이션 문제

이 섹션에서는 일반적으로 발생할 수 있는 마이그레이션 문제에 대해 설명한다.

Java EE 구현 간 차이점

공급업체별로 Java EE 스펙을 해석하는 방법이 다르기 때문에 마이그레이션을 진행하는 동안 문제가 발생할 수 있다. 예를 들어, 몇몇 애플리케이션 서버에서는 WebSphere 제품군과는 달리 Java EE 애플리케이션에 대한 유효성 검증을 엄격하게 수행하지 않으며 전개 디스크립터가 유효성 검증에 실패하기도 한다. 또한 JSP에서 작은따옴표와 큰따옴표를 사용할 경우 WebSphere 제품군에 대한 컴파일을 수행하는 동안 오류가 발생한다.

클래스 로더 관련 문제점

Java 클래스 로더는 클래스를 찾아서 로드하는 역할을 수행한다. 애플리케이션 서버 클래스 로더는 복합적이며, 따라서 이러한 문제를 추적하고 해결하는 작업을 수행한다. Java EE 스펙에서 아직까지 클래스 로더를 다루지 않고 있기 때문에 각 Java EE 애플리케이션 서버는 사용자 정의된 클래스 로더 구현을 사용한다. 예를 들어, Community Edition에는 상위-하위 클래스 로더 계층 구조가 있는 반면 JBoss에서는 통합된 클래스 로더 방식을 사용한다.

공유 라이브러리

공유 라이브러리는 여러 애플리케이션이나 전체 서버에서 사용할 수 있는 라이브러리로, 서버마다 다른 위치에 저장되어 있고 각기 다른 방식으로 구성된다. 예를 들어, Community Edition에서는 다음과 같은 방법으로 공유 라이브러리를 구성할 수 있다.

  • 애플리케이션 서버 디렉토리 내에서 전개 계획에 있는 공유 라이브러리에 종속성을 추가한다.
  • 애플리케이션 서버 디렉토리 외부에서 GBean을 전개 계획에 추가한다.
  • JBoss의 경우, JBoss 관련 전개 계획의 라이브러리 디렉토리에 대한 항목을 추가한다.

번들 라이브러리

각 플랫폼에는 고유한 프레임워크 및 라이브러리 세트가 번들로 포함되어 있다(예: Apache Xerces 및 Apache Xalan). 이러한 라이브러리 및 클래스 로더의 버전은 플랫폼별로 다르다.

전개 디스크립터

Java EE 스펙에서 애플리케이션 전개 및 구성과 관련된 모든 내용을 다룰 수는 없기 때문에 공급업체별 전개 디스크립터를 사용해야 한다. 각 애플리케이션 서버는 각기 다른 방식으로 구현되어 있고 다양한 기능 세트를 가지고 있기 때문에 다양한 파일 세트를 사용한다. 표 1에서 살펴본 대로 JBoss와 Community Edition에서는 서로 다른 이름의 전개 계획을 사용한다. 예를 들어, JBoss에서는 웹 애플리케이션 전개 디스크립터의 이름이 jboss-web.xml이지만 Community Edition에서는 geronimo-web.xml이다. 각 전개 계획의 유효성을 검증하는 데 사용되는 스키마 정의에도 상당한 차이가 있을 수 있다.

애플리케이션 패키징

패키징은 이식성 및 마이그레이션 관점에서 중요한 기능이다. 각 애플리케이션은 각기 다른 방식으로 패키징된다. 이러한 특징은 각 애플리케이션 서버의 클래스 로더 구현이 다양하다는 점과 맞물려서 마이그레이션 시 문제를 발생시킬 수 있다. 이러한 문제점을 예방하려면 애플리케이션 패키징에 대한 스펙이 들어 있는 Java EE 스펙을 항상 따라야 한다. 애플리케이션은 일반적으로 EAR 파일로 패키징되며 다음과 같은 모듈로 구성될 수 있다.

  • EJB

    EJB 클래스 파일 및 전개 디스크립터가 포함된 모듈이다.

  • WAR

    전개 디스크립터가 포함된 웹 애플리케이션 모듈이다.

  • JAR

    JAR 파일은 다른 모듈에 사용되는 공통 클래스와 Java EE 애플리케이션 클라이언트의 전개 디스크립터를 포함할 수 있다.

  • RAR

    RAR(Resource Adapter Archive)는 J2C 아키텍처에 대한 리소스 어댑터가 포함된 JAR 파일이다.

원시 코드 사용

Java 플랫폼에서는 JNI(Java Native Interface)를 사용하여 원시 코드(예를 들어, C 또는 C++로 작성된 코드)를 사용할 수 있다. 원시 코드를 사용하면 다른 운영 체제로 마이그레이션할 때 문제가 발생할 수 있다. 예를 들어, .DLL 파일을 사용하는 Windows용 애플리케이션을 Linux 플랫폼으로 마이그레이션한 경우 이 애플리케이션에는 .SO 파일이 필요할 수 있다.

JBoss 확장

JBoss에서는 일부 애플리케이션 기능을 향상시키기 위해 JBoss 관련 서버 확장(JBoss Jars)을 추가했다. 이러한 확장은 해당 Java EE 스펙에 따라 해석되어야 한다.


마이그레이션 기사

아래 나열된 기사에서 설명하는 마이그레이션 단계를 살펴보면 위에서 설명한 복잡한 작업을 이해하고 JBoss 애플리케이션을 Community Edition으로 마이그레이션하는 데 필요한 정보를 얻을 수 있다.


결론

이 기사에서는 JBoss Application Server의 코드를 마이그레이션하여 WebSphere Application Server Community Edition에 전개하는 방법에 대해 살펴보았다. 마이그레이션 기사에서 제공하는 샘플 애플리케이션에서는 두 구현 간의 주요 차이점을 잘 보여 준다.

감사의 인사

이 기사를 검토해준 Ron Staerker에게 감사의 뜻을 전한다.


참고자료

교육

제품 및 기술 얻기

토론

필자소개

IBM India Labs에서 근무하는 소프트웨어 엔지니어로, IBM WebSphere Application Server Community Edition의 레벨 3 기술 지원부에서 활동하고 있다. 인도의 NITK Surathkal에서 전산학 학사 학위를 받고 2005년에 ELTP로 IBM에 입사했다.



등록 상표  |  My developerWorks 이용약관

이 문서 북마킹 하기

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=WebSphere, 오픈 소스
ArticleID=445790
ArticleTitle=WebSphere 마이그레이션: JBoss v4.x에서 IBM WebSphere Application Server Community Edition v2.x로 마이그레이션하기
publish-date=10142009
author1-email=ashish.jain@in.ibm.com
author1-email-cc=