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의 아키텍처 다이어그램
그림 2. JBoss Application Server의 아키텍처 다이어그램
표 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 스펙을 해석하는 방법이 다르기 때문에 마이그레이션을 진행하는 동안 문제가 발생할 수 있다. 예를 들어, 몇몇 애플리케이션 서버에서는 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 Jars)을 추가했다. 이러한 확장은 해당 Java EE 스펙에 따라 해석되어야 한다.
아래 나열된 기사에서 설명하는 마이그레이션 단계를 살펴보면 위에서 설명한 복잡한 작업을 이해하고 JBoss 애플리케이션을 Community Edition으로 마이그레이션하는 데 필요한 정보를 얻을 수 있다.
- JBoss to Geronimo - Servlets and JSPs Migration
- JBoss to Geronimo - JDBC Migration
- JBoss to Geronimo - Hibernate Migration
- JBoss to Geronimo - EJB-Session Beans Migration
- JBoss to Geronimo - EJB-BMP Migration
이 기사에서는 JBoss Application Server의 코드를 마이그레이션하여 WebSphere Application Server Community Edition에 전개하는 방법에 대해 살펴보았다. 마이그레이션 기사에서 제공하는 샘플 애플리케이션에서는 두 구현 간의 주요 차이점을 잘 보여 준다.
이 기사를 검토해준 Ron Staerker에게 감사의 뜻을 전한다.
교육
- Best Practices Tomcat to Geronimo Migration
- What’s new in WebSphere Application Server Community Edition V2.1
- Developing
JPA Applications with WebSphere Application Server Community Edition
- Community Edition Support 사이트
- WebSphere Application Server Community Edition 문서
- WebSphere Application Server Community Edition samples
- WebSphere
Application Server Community Edition trial support
- Apache Geronimo 사이트
- 모든 Java EE5 API에서 애플리케이션 개발하기
-
Get to know Java EE 5
- Clustering in Community Edition
- Apache Geronimo samples
-
WebSphere Application Server Community Edition Technical Support offerings
-
WebSphere Application Server Community Edition resources
-
WebSphere Application Server Community Edition developerWorks space
- developerWorks 오픈 소스 영역
제품 및 기술 얻기
토론
등록 상표 | My developerWorks 이용약관
