가이드라인: J2EE 모듈 어셈블
이 가이드라인은 J2EE 모듈을 어셈블하는 방법을 설명합니다.
관계
관련 요소
기본 설명

소개

J2EE 모듈을 어셈블하면 다음 구현 요소가 생성됩니다.

  • J2EE 아카이브(WAR, EJB-JAR 및 JAR 파일)
  • 아카이브 컨텐츠를 설명하고 포함된 컴포넌트가 배치 컨테이너에서 기능하게 하려는 방식을 설명하는 배치 설명자(XML 파일)

J2EE 모듈에 대한 자세한 정보는 중간 산출물 가이드라인: J2EE 모듈을 참조하십시오.

아카이브 정의

이 단계에서 응용프로그램 컴포넌트 제공자는 모듈에 패키지되어야 할 컴포넌트를 식별합니다.

다른 목적으로 여러 아카이브를 생성할 수 있습니다. 예를 들어, 테스트, 디버깅 또는 다른 "프로덕션" 배치 구성으로 전달하기 위해 아카이브를 분리하십시오. 테스트 아카이브는 테스트 클래스와 디버그 플래그로 빌드된 클래스를 포함하지만, 프로덕션 아카이브는 테스트 클래스를 포함하지 않으며 디버그 플래그로 빌드되지 않습니다. 어셈블 중인 의도한 아카이브 컨텍스트는 설정된 어셈블리 작업공간에 영향을 미칩니다.

배치 설명자 정의

J2EE 모듈 어셈블의 핵심 단계는 배치 설명자를 정의하는 것입니다. 이 정보 중 대부분은 각 컴포넌트의 디자인에서 캡처되었으므로 배치 설명자를 정의하는 것이 디자인에서 일관성을 크게 보장하는 것입니다. 라운드 트립 엔지니어링을 사용 중인 경우, 배치 설명자를 생성하기 위한 도구 지원도 있을 수 있습니다.

각 아카이브는 J2EE 표준 배치 설명자와 0개 이상의 벤더 고유의 설명자를 포함합니다. 표준 설명자, EJB-JAR의 경우 ejb-jar.xml, WAR의 경우 web.xml은 테스트 및 기타 "비프로덕션" 배치를 위해 완료해야 하는 섹션과 프로덕션 배치를 위해 최종 응용프로그램 어셈블러에서 준비하는 섹션을 포함합니다.

각 설명자는 응용프로그램 어셈블러는 물론, 응용프로그램 컴포넌트 제공자에 대한 관심 정보를 포함합니다. 예를 들어, ejb-jar.xml에는 세 개의 주요 섹션(설명용)이 있습니다(<enterprise-beans>...</enterprise-beans>, <relationships>...</relationships><assembly-descriptor>...</assembly-descriptor>). 응용프로그램 컴포넌트 제공자는 <enterprise-beans>...</enterprise-beans>섹션에서 CMP 필드와 같은 EJB의 특성을 정의합니다. 또한 응용프로그램 컴포넌트 제공자는 <relationships>...</relationships> 섹션에서 EJB 간의 선택적 관계를 정의합니다. <assembly-descriptor>...</assembly-descriptor> 섹션은 트랜잭션, 보안 역할, 메소드 권한 등이 정의된 곳입니다. 보통 응용프로그램 어셈블러만이 이 섹션에 대해 고심합니다. 어셈블러는 다른 두 개의 섹션 컨텐츠를 수정하도록 결정할 수 있지만, 이것은 일반적이지 않습니다. WAR 아카이브의 상황과 비슷합니다. 응용프로그램 어셈블리에 대한 자세한 정보는 가이드라인: J2EE 응용프로그램 어셈블을 참조하십시오.

디자인 중, 데이터 모델 및 CMP(Container-Managed Persistent) 엔티티 EJB에서 데이터베이스 테이블 간에 맵핑을 정의한 경우, 이 맵핑은 벤더 고유의 설명자에서 맵핑 지시문에 반영되어야 합니다(맵핑 지시문은 표준 EJB 설명자의 파트가 아님). CMP 엔티티 EJB를 데이터베이스 테이블에 맵핑하는 작업에 대한 자세한 정보는 기법: 엔티티 Bean 디자인을 참조하십시오.

여러 컴포넌트가 동일한 아카이브에 패키지되는 경우(단계: 아카이브 정의 참조), 응용프로그램 컴포넌트 제공자가 배치 설명자 정보를 통합해야 합니다. 예를 들어, EJB를 하나의 EJB-JAR로 결합할 때, 응용프로그램 컴포넌트 제공자는 보안 역할 및 상호 참조와 같은 배치 설명자의 정보를 조화시켜야 합니다.

아카이브 유효성 검증

특히 응용프로그램 서버측에서 모호한 오류가 모호하거나 존재하지 않는 오류 메시지를 초래할 수 있을 때, 배치하기 전에 아카이브 컨텐츠의 유효성을 검증하는 것이 좋습니다. 예를 들어, 중복된 JNDI 이름은 아카이브에 패키지된 컴포넌트 중 어디에서도 사용될 수 없습니다.