1장.JBoss 소개
JBoss Enterprise Application Platform 7(이후, JBoss EAP 6)의 대하여 설명한다. 이번 장에서 JBoss의 역사나 레드햇(Red Hat)에서 제공하는 제품 기술 지원 서비스에 대한 내용도 함께 설명하고 있어 오픈소스 미들웨어에 대하여 이해할 수 있을 것이다.
JBoss EAP 7를 이해하는데 필요한 표준 사양, Java EE 6, JBoss EAP 6의 새로운 기능과 특징에 대해서도 간단하게 소개한다.
1.JBoss EAP 6 개요
JBoss EAP 6는 개방형 표준을 기반으로 개발된 오픈소스 미들웨어 플랫폼으로 Java EE 6 인증을 받은 제품이다. 엔터프라이즈 환경에서 미들웨어가 갖추어야 하는 대용량 트랜잭션(Transaction), 고가용성을 위한 클러스터링, 메시징, 분산 캐싱, 고성능 보장 등의 기술들을 제공한다.
JBoss EAP 6 버전은 오픈소스 커뮤니티 프로젝트의 결과물을 이용하여 제품화된다. JBoss AS(Application Server) 7 버전을 기반으로 만들어진 제품이다. 다음 URL에서 JBoss EAP 6가 커뮤니티의 어떤 버전을 사용하고 있는지 확인할 수 있다.
다음의 URL (https://access.redhat.com/site/articles/112673) 에서는 아래와 같이 JBoss EAP 버전 별 구성 컴포넌트에 대한 상세 내용을 확인할 수 있다.

그림 1. JBoss EAP의 컴포넌트 상세(중략된 이미지)
JBoss EAP 6는 견고하고 안전하며 확장 가능한 Java EE 기반의 응용 프로그램을 신속하게 개발할 수 있도록 API 와 개발 프레임워크을 제공한다.

그림 2. JBoss EAP 6 아키텍처
JBoss EAP 6는 개발자가 손쉽게 애플리케이션을 개발, 배포, 운영할 수 있도록 기능을 제공해 주는 애플리케이션 플랫폼이라고 할 수 있다.
현재 레드햇의 JBoss EAP 6는 국내 WAS 시장에서 가장 빨리 성장하고 있는 클라우드 환경에 적합한 대표적인 웹 애플리케이션 서버 제품이라고 할 수 있다.
JBoss 란 단어의 의미는 무엇인가?
JBoss 라는 단어는 여러 가지의 의미를 가지고 있다. 첫 번째는 오픈소스 소프트웨어 제품을 개발하는 Red Hat미들웨어 사업부를 의미 하기도 하고, 그 회사가 제작하는 모든 미들웨어 제품들에 대한 상표이기도 하며, 애플리케이션 서버의 이름이기도 하다. 사람들이 JBoss 라는 용어를 사용할 때는 일반적으로 JBoss 애플리케이션 서버를 지칭하는 것이며, 보통 JBoss AS 라는 약어가 사용되었지만 2013년 부터는 JBoss 라는 이름의 혼돈을 막기 위하여 JBoss 커뮤니티의 JBoss AS 이름을 Wildfly 라는이름으로 변경하기로 하였다. 하지만 JBoss EAP 라는 이름의 레드햇 기술 보증 제품은 변경 없이 그대로 사용한다.
JBoss AS7, JBoss EAP6 , Wildfly 의 관련성과 의미
앞으로 반복적으로 언급되는 단어인 JBoss 관련한 단어들인 ‘JBoss AS7’, ’JBoss EAP6’, ‘Wildfly’ 라는 용어들의 유래와 의미를 먼저 설명한다.
JBoss 라는 이름의 유래는?
JBoss는 1999년에 Mark Fleury가 EJB컨테이너를 오픈소스로 개발하기 위해 EJBOSS(Enterprise Java Beans Open Source Software)라는 이름으로 시작한 프로젝트였지만 SUN과의 상표권 문제 때문에 앞의 E를 빼고 현재 JBoss라는 이름이 되었다.
JBoss AS란 ?
JBoss.org 라는 인터넷 커뮤니에서 제공하는 Java EE6 표준을 지원하는 오픈소스 애플리케이션 서버의 이름이다. JBoss는 EJBOSS 에서 유래되었고 AS 는 바로 Application Server 의 약자이다.
JBoss AS7 과 JBoss EAP6와의 차이점은?
JBoss EAP6 라는 상용 제품은 JBoss AS7 이라는 커뮤니티 제품을 Red Hat 에서 추가 테스트와 검증 등을 통하여 안정성, 성능 그리고 보안 수준을 높인 기업용 오픈소스 애플리케이션 서버이다.
즉 JBoss EAP6 와 JBoss AS7은 소스 코드 수준에서 거의 동일한 제품으로 벤더에 의한 유료 기술 지원을 받을 것인지 아니면 무료로 사용자 스스로 제품 문제를 해결할 것인지가 가장 큰 차이점이다.
JBoss AS7 제품은 커뮤니티에서 주로 기능 개발을 목적으로 하는 제품이다. 기능 개발 중에 발생된 버그는 수정되어 릴리즈에 포함될 수 있지만, 버그 수정이나 지원 환경에 대한 검증을 목적으로 한 유지 보수와 보안 업데이트는 없다. 즉 주요 기능을 포함한 메이저 버전 업그레이드는 있지만 보안이나 버그 패치 등의 유지보수 차원의 릴리즈는 없다. 커뮤니티 버전에서 버그 수정이 필요하다면 직접 코드 수정, 포팅 그리고 빌드해야 한다.
JBoss EAP6 제품은 상용 서비스 제품으로 기능 개발 중심의 커뮤니티 버전과는 달리 고객이 요청한 버그 수정 또는 보안 업데이트 등의 안정성과 품질 그리고 기술 지원 환경에 대한 호환성 테스트를 거쳐 출시하는 제품이다. JBoss EAP6와 JBoss AS7은 버그/ 보안/성능에 관련된 패치 이외에는 큰 차이점이 없다. JBoss EAP6 버전이 JBoss AS7 버전과 동일한 소스 코드 기반으로 하여 대체로 JBoss EAP 버전이 JBoss AS 버전에 비해 버전이 낮다.

그림 3. JBoss AS(커뮤니티 버전)과 JBoss EAP(엔터프라이즈 버전)의 릴리즈 스케쥴
JBoss AS 의 최신 커뮤니티 제품인 JBoss AS7을 기업에서 상업적인 목적으로 사용할 수 있지만 보안 측면에서 여러 가지 고려사항이 있어 운영환경에서 사용하는 것은 적합하지 않다. JBoss AS와 같은 커뮤니티 제품들을 이용하여 최신 기능을 시험적으로 사용하거나 중요도가 낮은 내부 서비스에 적용해 보는 것은 가능할 수 있다. 그러나 엔터프라이즈 수준의 애플리케이션 서버 용도로 사용하기 위해서는 지속적인 보안 업데이트, 버그 수정, 성능 향상 및 벤더의 기술 지원이 가능한 JBoss EAP 버전을 사용해야 한다.
| JBoss 커뮤니티 제품 | JBoss 엔터프라이즈 제품 | |
|---|---|---|
| 사이트 | AS7(jboss.org)/Wildfly8 (wildfly.org) | redhat.com/jboss.com |
| 라이선스 비용 | 없음 | 없음 |
| 기술지원 | 사용자 스스로 기술 지원 | 벤더 기술 지원 |
| 소스 코드 접근 | 완전한 접근 가능 | 완전한 접근 가능 |
| 대상 | 누구나 | 레드햇 서브스크립션 고객 |
| 개발 | 오픈 소스 프로젝트 커뮤니티 | 오픈 소스 프로젝트 커뮤니티 및 JBoss EAP 제품화 팀 |
| 개선 및 향상 | 커뮤니티의 요구에 따른 임시 또는 실험적인 소프트웨어 변경 | 주요 릴리스, 소규모 릴리스, 패치 및 마이그레이션 도구를 포함한 구조화된 릴리스 과정 |
| 매뉴얼 | 프로젝트 컴포넌트에 따라 다양 | 전문적인 소프트웨어 설명서 |
| 품질 | 기능 검증을 위한 테스팅 위주 | 매우 다양한 테스트 등이 통합된 우수한 품질 |
표 1. JBoss 커뮤니티 제품과 엔터프라이즈 제품의 차이점
JBoss AS7과 Wildfly8의 차이점은?
JBoss AS 라는 의미가 JBoss Application Server 의 약자이며 많은 경우 JBoss 로 표기하여 Red Hat 의 상용 오픈소스 제품인 JBoss EAP 와 혼돈을 야기 했었다. 이러한 혼란을 해소하기 위하여 JBoss AS8 버전부터는 기존의 ‘JBoss’라는 이름을 ‘Wildfly’ 라는 이름으로 변경하기로 결정했으며, 현재는 jboss.org 가 아닌 wildfly.org 커뮤니티에서 ‘wildfly8’이라는 이름으로 오픈소스 프로젝트를 진행하고 있다.
이 책에서는 JBoss AS7(Application Server) 라는 이름을 Red Hat JBoss EAP 6(Enterprise Application Platform) 이름과 같게 지칭한다. 또한 애플리케이션 서버로서의 JBoss 와 Red Hat의 사업부인 JBoss 가 혼동을 피하기 위해, JBoss 애플리케이션 서버를 제작하는 회사를 나타낼 때는 Red Hat 이라는 이름을 사용할 것이다.
JBoss 시작과 역사
JBoss는 자바를 기반으로 하는 오픈소스 미들웨어의 브랜드명이다. Java EE 스펙을 지원하는 대표적인 제품으로 JBoss EAP 6가 있다. 커뮤니티 버전의 이름은 JBoss AS(Application Server)에서 Wildfly로 변경되었다.
오픈소스 소프트웨어 개발 커뮤니티인 jboss.org 에는 약 100개 이상의 다양한 프로젝트가 진행 중이며 1999년부터 계속해서 발전하여 운영되고 있다.
1996년도에 자바가 처음 소개되었을 때, 개발자들은 애플리케이션에 필요한 인프라 관련 기능들 스스로 개발하여 사용해야 했다. 이후에 J2EE 명세서(Java 2 Enterprise Edition Specification, 현재 Java EE 명세서의 예전 이름) 는 엔터프라이즈 애플리케이션을 개발하기 위한 표준화된 애플리케이션 프레임워크를 제공하는 것을 목적으로 만들어 졌다.
1999년에, Marc Fleury는 JBoss 라는 이름의 작은 오픈소스 프로젝트를 시작했는데, 이 프로젝트는 JBoss(Enterprise Java Bean Open Source Software)라는 이름의 유래와 같이 J2EE 명세서의 Enterprise Java Bean(EJB) 부분을 구현하기 위한 것이었다.
이 프로젝트가 점차 유명해짐에 따라 JBoss 개발자들은 프로젝트 관련 문서, 컨설팅 서비스, 교육 서비스를 판매하기 시작했다. 2001년에, Fleury와 동료들은 JBoss Group, LLC. 라는 법인을 설립하고, 2002년도에는 개발자 지원을 제공하기 시작했다. 동시에 그들은 JBoss AS 3를 개발하였는데, 이것은 완전한 기능을 갖춘 J2EE 애플리케이션 서버였으며, WebSphere 나 WebLogic 같은 독점 소프트웨어 제품들과 경쟁할 만큼 성장하게 되었다.
JBoss Group, LLC. 는 2004년에 JBoss, Inc. 로 사명을 변경하였다. JBoss AS 4를 출시하면서 JBoss, Inc. 는 기업들을 위한 제품 기술 지원 서비스를 제공하기 시작하였다. JBoss AS 4는 매우 유명한 애플리케이션 서버로 성장하였고, 여전히 업계에서 널리 사용되고 있다. 또 JBoss Cache, Hibernate, jBPM, JBoss Rules 같은 JBoss AS 에 포함되어 있는 많은 컴포넌트들이 JBoss AS 이외에 독립적으로 동작할 수 있도록 하였다.
2006년 4월에 Red Hat은 JBoss, Inc.를 인수했다. JBoss AS 5에서 새로운 혁신적인 기능들이 소개되면서 JBoss AS는 더욱 유명해졌다. 이 책은 JBoss AS 7 최신 버전을 기반으로 한 JBoss EAP 6에 관한 내용을 주로 다루고 있으며 추가적으로 애플리케이션 서버 상에서 동작하는 새로운 기술들에 대해서도 소개하고 있다.
2007년부터 Red Hat 은 오픈소스 커뮤니티 프로젝트인 JBoss 커뮤니티의 각종 컴포넌트를 조합하여 패키징하고 엔터프라이즈 수준의 품질 테스트를 거친 제품에 대하여 기술 지원을 보장하는 제품을 제공하였다. 이 제품이 JBoss Enterprise Middleware Platform이다.
JBoss EAP 6 는 Java Enterprise Edition 6(Java EE 6) 호환 애플리케이션 서버이다. 자바 애플리케이션 서버는 애플리케이션 개발 아키텍처를 표준화한다. Java EE는 여러 컴포넌트 모델들을 정의하는데, 개발자들은 이러한 표준화된 모델을 사용하여 애플리케이션를 개발한다. 이 애플리케이션들은 표준 배포 모델을 사용하는 애플리케이션 서버 내에 배포될 수 있다. 애플리케이션 서버는 배포된 애플리케이션이 동작할 수 있도록 하는 일련의 서비스들을 제공한다.

그림 4. Java EE 표준과 JBoss EAP 의 발전
JBoss 라이선스
JBoss의 라이센스는 GNU Lesser General Public License(LGPL)이다. JBoss AS (현재 Wildfly) 커뮤니티는 개인과 기업 모두가 라이센스 비용을 지불하지 않고 무료로 사용할 수 있다. 또한 다운로드, 사용, 소스 수정 및 배포도 할 수 있다.
JBoss 라이센스 형태는 LGPL 로 한가지 종류이지만 배포 파일은 커뮤니티 버전과 엔터프라이즈 버전 두 가지 버전이 있다.
JBosss EAP라는 엔터프라이즈 버전은 유료 서브스크립션 계약을 맺어 레드햇에서 검증한 JBoss 소프트웨어와 최신 패치, 버전 업그레이드를 제공해주는 서비스 제품이다.
레드햇에서 테스트한 소프트웨어는 jboss.org 오픈소스 커뮤니티의 안정된 컴포넌트를 재구성하여 기업을 위한 QA 과정을 거쳐 안정성과 품질을 높인 제품이며, 현재 ‘JBoss Enterprise Middleware’라는 제품군이다. 또 서브스크립션 계약에 의해 JBoss 기술 지원, 컨설팅, 교육, 문서 제공 등을 제공된다.
자바 개발자와 오픈소스 미들웨어
프로그래머들이 JBoss EAP를 좋아하는 이유는 JBoss AS (현재는Wildfly) 라는 오픈소스 프로젝트로 개발 과정이 모두 공개되어 있어 제품의 동작 방법이나 문제점에 대한 분석 등이 필요할 때 손쉽게 소스를 통하여 이해할 수 있기 때문이다.
프로그래머들은 커뮤니티 상에 공개 되어 있는 버그 추적 시스템을 직접 확인해 볼 수 있고, 앞으로 추가될 기능들에 대한 설계에 관련된 내용을 직접 확인 할 수 있으며, 개발자 포럼에서 다양한 프로젝트의 핵심 개발자들이 토론하는 내용을 살펴볼 수도 있다.
공개된 소스 코드를 살펴보고 JBoss에 대해 이해하고, 문제점을 디버깅하고, JBoss가 동작하는 방식을 배울 수도 있다. 실제 제품을 개발하는 개발자들에게 문제점을 보고하거나, 의견을 개진하고, 토론에 참여할 수도 있다. 만약 사용하고 있는 JBoss의 기능에 버그가 존재한다면, 그것을 해결하기 위한 패치를 직접 제작하고, 다음 버전의 제품에 그것이 채택되도록 개발자들에게 보내주는 것도 가능하다. 이러한 형태의 커뮤니티 참여를 통하여 많은 개발자들이 정규 멤버로 승격되어 JBoss AS(Wildfly) 개발에도 직접 참여할 수 있다.
오픈소스의 본질인 참여 정신 때문에 JBoss처럼 유명한 오픈소스 제품에는 거대한 커뮤니티가 형성되어 있다. JBoss 는 사용자 그룹, 포럼, 위키, Github를 통해서 참여하고 공유하는 커다란 국제적인 커뮤니티를 가지고 있다.
JBoss AS 같은 유명한 오픈소스 제품들은 독점 소프트웨어를 판매하는 경쟁제품들보다 능동적으로 참여하고 활발한 활동을 하는 사용자가 많기 때문에, 오픈소스 제품에 대한 버그 발견이나, 패치 개발 속도가 다른 독점 제품들과 비교해 훨씬 더 빠르다.
2.JBoss EAP 6의 새로운 기능 및 특징
JBoss EAP 6는 jboss.org 커뮤니티에서 개발된 JBoss Application Server 7(이후, JBoss AS 7)을 기반으로 만들어진 제품이다. JBoss EAP 6는 지금까지의 JBoss EAP 제품 중에서 가장 의욕적인 릴리스 라고 할 수 있다.
JBoss EAP 6은 더 가벼워진 메모리 사용, 고성능, 쉬워진 관리 기능을 제공하여 개발자들이 좀더 쉽게 애플리케이션을 개발하고 운영자들은 물리적 서버 환경 뿐만 아니라 클라우드 환경에서도 손쉽게 웹 애플리케이션 서버 운영을 할 수 있도록 한다.
인프라 측면에서 메모리 사용량을 낮추고 구동시간을 줄였으며, 멀티코어, 가상화 시스템에 최적화되었다. Maven, Hudson, Arquillian, Hibernate 등 주요한 오픈소스 개발 지원 도구들과의 통합성을 높인 미들웨어 컴포넌트를 제공한다. Java EE 6 표준과 더불어 스프링, 스트러츠, 구글 웹 툴킷(GWT) 등 자바 기반의 오픈소스 애플리케이션 프레임워크들에 대한 기술 지원을 포함한다.
JBoss EAP 6에서 제공하는 주요한 새로운 기능들은 다음과 같다.
| 주요 기능 | 설명 |
|---|---|
| Java 표준 지원 | Java EE(Enterprise Edition) 6 Full Profile 및 Web Profile 표준 스펙에 인증된 제품 |
| 관리 도메인 | * 도메인 모드는 여러 서버 인스턴스 및 물리적 호스트를 중앙 집중화하여 관리할 수 있으며 스탠드얼론 모드는 단일 서버 인스턴스 단위로 관리가 가능하다. * 도메인 모드에서 설정, 배포, 소켓 바인딩, 모듈, 확장, 시스템 속성은 서버 그룹별로 관리된다. * 보안 도메인 등의 응용 프로그램 보안 설정이 중앙 집중방식으로 단순화되었다. |
| 관리 콘솔 및 관리 CLI | 관리 콘솔 및 CLI는 도메인 또는 스탠드얼론 모드에서 JBoss EAP 6 인스턴스를 관리하는 새로운 인터페이스이다. 더 이상 XML 설정 파일을 직접 편집하지 않아도 된다. 관리 CLI는 배치 모드도 제공하여 관리 작업에 대하여 스크립트를 작성하여 자동화 할 수 있다. |
| 단순화된 디렉터리 레이아웃 | JBoss EAP 6 디렉터리 레이아웃이 단순화되었다. modules/ 디렉터리에는 서버 별 lib/ 디렉터리 대신 애플리케이션 서버 모듈이 포함되어 있다. domain/ 및 standalone/ 디렉터리에는 도메인 및 스탠드얼론 모드 배포용 설정 파일이 포함된다. |
| 모듈 클래스 로딩 메커니즘 | 모듈들은 애플리케이션에서 요청이 있을 때 로드, 언로드 할 수 있도록 클래스 로딩 메커니즘이 완전히 모듈화되었다. 이 방식은 성능 및 보안 측면에서 장점이 있을 뿐만 아니라, 서버를 매우 빠르게 시작, 재시작할 수 있다. |
| 단순화 된 데이터소스 관리 | 데이터베이스 드라이버는 다른 서비스와 같은 방법으로 배포된다. 데이터소스는 관리 콘솔이나 관리 CLI에서 직접 만들고 관리한다. |
| 시작 및 정지 시간 단축 | JBoss EAP 6는 시작과 정지 시간이 매우 빨라졌으며, 적은 리소스를 사용하기 때문에 시스템 자원을 매우 효율적으로 사용한다. 빈번히 애플리케이션을 배포하여 테스트하는 개발자들에게는 빠른 부팅 시간은 시간을 상당히 줄여준다. 이를 통해 전체 테스트 시간이 줄어드는 효과가 있다. |
표 2. JBoss EAP 6의 새로운 기능
3.JBoss EAP 6 지원 표준
JBoss EAP(JBoss Enterprise Application Platform) 릴리스에서 다음과 같은 업계 표준을 지원한다. 호환성 검증을 위해 각 주요 릴리즈에 대한 표준 인증 테스트를 완료하여 인증을 받았다.
(참고 : https://access.redhat.com/site/ko/articles/299283)
- Java EE(Enterprise Edition)
JBoss EAP 6에서는 Java EE 6 표준의 지원 범위에 따라서 Web Profile 과 Full Profile 두 가지의 프로파일을 제공하고 있다.
JBoss EAP에서 지원하는 Java EE 표준은 다음과 같다.
| 기술 표준 | JBoss EAP 6 | JBoss EAP 5.1 | JBoss EAP 4.3 |
|---|---|---|---|
| Java EE[JSR-151,244,316] | 6.0 | 5.0 | 1.4 |
| JAX-RPC(Java API for XML-based RPC) [JSR-101] | 1.1 | 1.1 | 1.1 |
| SAAJ(SOAP with Attachments API for Java) [JSR-067] | 1.3 | 1.3 | 1.3 |
| Java Servlet [JSR-154, 315] | 3.0 | 2.5 | 2.4 |
| JSF(JavaServer Faces) [JSR-252, 314] | 2.0 | 1.2 | 1.2 |
| JSP(JavaServer Pages & Expression Language) [JSR-245] | 2.2 | 2.1 | 2.1 |
| JTA(Java Transaction API) [JSR-907] | 1.1 | 1.1 | 1.0 |
| JACC(Java Authorization Contract for Containers) [JSR-115] | 1.3 | 1.1 | 1.0 |
| EJB(Enterprise JavaBeans) with Interceptors 1.1 [JSR-153, 220, 318] | 3.1 | 2.1, 3.0 | 2.1, 3.0 |
| Java EE Connector Architecture [JSR-112, 322] | 1.6 | 1.5 | 1.5 |
| J2EE Management [JSR-077] | 1.1 | 1.0 | 1.0 |
| Enterprise Web Services [JSR-109] | 1.3 | 1.2 | 1.1 |
| Java EE Application Deployment [JSR-088] | 1.2 | 1.2 | 1.1 |
| JavaMail [JSR-919] | 1.4 | 1.4 | 1.4 |
| JMS(Java Message Service) [JSR-914] | 1.1 | 1.1 | 1.1 |
| JPA(Java Persistence) [JSR-220, 317] | 2.0 | 1.0 | 1.0 |
| Web Services Metadata for the Java Platform [JSR-181] | 2.0 | 2.0 | 2.0 |
| JAX-WS(Java API for XML Web Services) [JSR-224] | 2.2 | 2.1 | 2.0 |
| Debugging Support for Other Languages [JSR-045] | 1.0 | 1.0 | - |
| JSTL(Standard Tag Library for JavaServer Pages) [JSR-052] | 1.2 | 1.2 | 1.2 |
| Common Annotations for the Java Platform [JSR-250] | 1.1 | 1.0 | 1.0 |
| JAXB(Java Architecture for XML Binding) [JSR-222] | 2.2 | 2.0 | 2.0 |
| JAX-RS(Java API for RESTful Web Services) [JSR-311] | 1.1 | 1.0 | - |
| JAXR(Java API for XML Registries) [JSR-093] | 1.0 | 1.0 | 1.0 |
| CDI(Contexts and Dependency Injection for Java) [JSR-299] | 1.0 | - | - |
| Bean Validation [JSR-303] | 1.0 | - | - |
표 3. JBoss EAP 버전별 기술 표준
웹 서비스 표준 및 API
각각의 해당 JBoss EAP 릴리스에서 다음과 같은 웹 서비스 표준을 지원한다.
| 기술 표준 | JBoss EAP 6.0 | JBoss EAP 5.1 | JBoss EAP 4.3 |
|---|---|---|---|
| SOAP(Simple Object Access Protocol) | 1.2 | 1.2 | 1.1, 1.2 |
| SOAP MTOM(Message Transmission Optimization Mechanism) | 예 | 예 | 예 |
| XOP(XML-Binary Optimized Packaging) | 예 | 예 | 예 |
| WSDL(Web Services Description Language) | 1.1, 2.0 | 1.1, 2.0 | 1.1 |
| WS-I Basic Profile | 1.1 | 1.1 | 1.1 |
| WS-Addressing | 1.0 | 1.0 | 1.0 |
| WS-Reliable Messaging | 1.1 | 1.1[1] | - |
| WS-Security | 1.1 | 1.1 | 1.1 |
| UDDI(Universal Description Discovery and Integration) | 2.0, 3.0 | 2.0 | 2.0 |
| JAX-WSA(Java API for XML Web Services Addressing) [JSR-261] | 1.0 | 1.0 | 1.0 |
| WS-Atomic Transactions | 1.1 | 1.1 | - |
| Fast Infoset(FI - ISO/IEC 24824-1, ITU-T Rec. X.891) | 예 | 예 | - |
| WS-Business Activity | 1.1 | 1.1 | - |
| WS-Coordination | 1.1 | 1.1 | - |
| WS-Security Policy | 1.3 | 1.3[1] | - |
| WS-Policy | 1.5 | 1.5[1] | - |
| WS-Policy Attachment | 1.5 | 1.5[1] | - |
| WS-I Attachments Profile | 1.0 | 1.0 | 1.0 |
| WS-Eventing | - | - | - |
| WS-Trust | 1.3 | 1.3[1] | - |
| SAML(Security Assertion Markup Language) | - | 2.0[2] | - |
| XACML | 2.0 | 2.0 | - |
표 4. JBoss EAP 버전별 웹 서비스 표준
[1] 선택 사항인 JBoss WS Apache CXF에 포함된다.
[2] PicketLink Federation은 EAP 5.1.1에서는 기술 검토용이다.
추가 표준 및 API
각각의 해당 JBoss EAP 릴리스에서 다음과 같은 추가 표준을 지원한다.
| 기술 표준 | JBoss EAP 6.0 | JBoss EAP 5.1 | JBoss EAP 4.3 |
|---|---|---|---|
| JTS(Java Transaction Service) | 1.0 | 1.0 | - |
| JDBC [JSR-054] | [3] | 3.0, 4.0 | 3.0 |
| CORBA | 2.3.1 | 2.3.1 | 2.3.1 |
| Streaming API for XML Processing(StAX) [JSR-173] | [3] | 1.0 | 1.0 |
| JAF(JavaBeans Activation Framework) [JSR-925] | [3] | 1.1 | 1.1 |
| JMX(Java Management Extensions) [JSR-255] | [3] | 2.0 | - |
| JDBC(Java Database Connectivity) [JSR-221] | [3] | 4.0 | 4.0 |
| JAXP(Java API for XML Processing) [JSR-205] | [3] | 1.3 | - |
| SPNEGO/Kerberos | 예 | 예 | - |
표 5. JBoss EAP 버전별 추가 표준 API 버전
[3] 현재 Java SE를 통해 구현된다.
4.Java EE 6 표준 이해
Java EE(Enterprise Edition) 6의 표준은 새로운 프로파일 개념을 정의하고 표준의 일부로 Full Profile과 Web Profile 두 개의 프로파일을 정의하고 있다. JBoss EAP 6는 Java EE 6의 Full Profile 및 Web Profile 표준을 지원하는 대표적인 웹 애플리케이션 서버이다.
- Java EE( Enterprise Edition )6 Web Profile
- Java EE( Enterprise Edition )6 Full Profile
Java EE 6 Full Profile
Java EE 6의 모든 기술들이 포함되어 있는 Java EE Full Profile은 30 가지가 넘는 기술 표준들로 구성되어 있으며, 이러한 표준기술들을 활용하여 웹 애플리케이션 서버로서의 서비스를 제공하고 있다. 데이터베이스 접속, 웹 서비스 제공, 트랜잭션 실행과 관리, 보안 정책, 메시징, 네이밍, 이메일 송신, 외부 자원에의 접속 등의 기능들을 제공하고 있다.
Full Profile은 다음 API를 지원한다. JBoss는 Java EE 6 Full Profile을 지원한다.
Java EE6 Full Profile 에서 제공하는 항목
- EJB 3.1(Lite 아님) (JSR 318)
- Java EE Connector Architecture 1.6 (JSR 322)
- Java Message Service (JMS) API 1.1 (JSR 914)
- JavaMail 1.4 (JSR 919)
- 웹서비스 기술
- Jax-RS RESTful Web Services 1.1 (JSR 311)
- Implementing Enterprise Web Services 1.3 (JSR 109)
- JAX-WS Java API for XML-Based Web Services 2.2 (JSR 224)
- Java Architecture for XML Binding (JAXB) 2.2 (JSR 222)
- Web Services Metadata for the Java Platform (JSR 181)
- Java APIs for XML-based RPC 1.1 (JSR 101)
- Java APIs for XML Messaging 1.3 (JSR 67)
- Java API for XML Registries (JAXR) 1.0 (JSR 93)
- 관리 및 보안 기술
- Java Authentication Service Provider Interface for Containers 1.0 (JSR 196)
- Java Authentication Contract for Containers 1.3 (JSR 115)
- Java EE Application Deployment 1.2 (JSR 88)
- J2EE Management 1.1 (JSR 77)
Java EE6 Web Profile
Java EE 6 표준 중에서 웹과 관련된 기술들만 포함한 프로파일이 Web Profile이다. Servlet, Java Server Pages(JSP), Java Server Faces(JSF), Contexts and Dependency Injection(CDI), Java Persistence API(JPA), EJB Lite 등 웹 개발자가 일반적으로 사용하는 Java EE중 웹 관련 기술을 포함하고 있다. EJB Lite는, EJB 3 표준의 부분집합으로 웹 개발자가 Full Profile 환경이 아니더라도 EJB중 많이 사용하는 일부 기능들을 사용할 수 있다. EJB Lite는 리모트 인터페이스나 메시지 구동형 Bean(MDB) 등의 기능은 없지만 Stateful, Stateless 세션 빈 과 엔티티 빈을 지원한다.