EJB 2.x 아키텍처

이 주제에서는 Sun Microsystems EJB(Enterprise JavaBeans™) 버전 2.x 아키텍처 스펙에 정의된 분산 컴포넌트 아키텍처의 상위 레벨 개요를 제공합니다.

전체 Enterprise JavaBeans 스펙 및 기술 설명은 java.sun.com 웹 사이트를 참조하십시오.

엔터프라이즈 Bean은 애플리케이션 개발자에게 다음과 같은 여러 이점을 제공합니다. 다음을 수행합니다.

엔터프라이즈 Bean
엔터프라이즈 Bean은 분산 트랜잭션 지향 엔터프라이즈 애플리케이션의 비시각적 컴포넌트입니다. 엔터프라이즈 Bean은 일반적으로 EJB 컨테이너에 배치되며 EJB 서버에서 실행됩니다. 이 빈은 해당 배치 디스크립터를 변경하여 사용자 정의할 수 있으며 다른 빈과 어셈블하여 새 애플리케이션을 작성할 수 있습니다. 엔터프라이즈 Bean에는 세션 Bean, 엔터프라이즈 Bean 및 메시지 구동 Bean의 세 가지 유형이 있습니다. 세션 Bean과 메시지 구동 Bean은 비즈니스 프로세스를 모델화할 수 있도록 디자인된 대략적인 컴포넌트인 반면 엔티티 Bean은 세부화된 데이터 오브젝트를 모델화하는 데 사용됩니다.
  • 세션 Bean: 세션 Bean은 비지속 엔터프라이즈 Bean입니다. 해당 상태는 Stateful 또는 Stateless입니다.
    • Stateful 세션 Bean: 단일 클라이언트를 위해 작동하고 다중 메소드 호출 및 트랜잭션에서 클라이언트 특정 세션 정보(호출된 대화 상태)를 유지보수합니다. 이 빈은 단일 클라이언트/서버 세션의 지속 기간 동안 존재합니다.
    • Stateless 세션 Bean: 대화 상태를 유지보수하지 않고 해당 컨테이너에서 여러 클라이언트의 여러 요청을 처리하기 위해 풀링됩니다.
  • 엔티티 Bean: 엔티티 Bean은 지속적 데이터를 포함하고 다양한 지속 데이터 스토어에 저장이 가능한 엔터프라이즈 Bean입니다. 각 엔티티 Bean에는 고유 ID가 지정됩니다. 엔티티 Bean 자체의 지속성을 관리하는 엔티티 Bean을 BMP(Bean-Managed Persistence) 엔티티 Bean이라고 합니다. 지속성을 EJB 컨테이너에 위임하는 엔티티 Bean을 CMP(Container-Managed Persistence) 엔티티 Bean이라고 합니다.
  • 메시지 구동 Bean: 메시지 구동 Bean은 JMS 메시지를 받아 처리하는 엔터프라이즈 Bean입니다. 세션 Bean 또는 엔티티 Bean과는 달리, 메시지 구동 Bean은 인터페이스가 없습니다. 이 빈은 메시지 전달을 통해서만 액세스할 수 있으며 대화 상태를 유지하지 않습니다. 메시지 구동 Bean은 큐와 리스너 간의 비동기 통신을 허용하며 메시지 처리와 비즈니스 로직을 구분합니다.
원격 클라이언트 보기
원격 클라이언트 보기 스펙은 EJB 1.1부터 사용할 수 있습니다. 엔터프라이즈 Bean의 원격 클라이언트 보기는 위치에 종속되지 않습니다. Bean 인스턴스와 동일한 JVM에서 실행되는 클라이언트는 같거나 다른 시스템의 다른 JVM에서 실행되는 클라이언트와 동일한 API를 사용하여 Bean에 액세스합니다. 원격 클라이언트 보기는 두 개의 인터페이스로 구성됩니다.
  • 원격 인터페이스: 원격 인터페이스는 클라이언트가 엔터프라이즈 Bean에서 호출할 수 있는 원격 비즈니스 메소드를 지정합니다.
  • 원격 홈 인터페이스: 원격 홈 인터페이스는 엔터프라이즈 Bean 클래스의 인스턴스를 찾고 작성하며 제거하기 위해 원격 클라이언트에서 사용하는 메소드를 지정합니다.
로컬 클라이언트 보기
로컬 클라이언트 보기 스펙은 EJB 2.0 이상에서 사용할 수 있습니다. 원격 클라이언트 보기와는 달리 Bean의 로컬 클라이언트 보기는 위치에 종속됩니다. 로컬 클라이언트 보기에서 엔터프라이즈 Bean에 액세스하려면 로컬 클라이언트와 로컬 클라이언트 보기를 제공하는 엔터프라이즈 Bean이 모두 동일한 JVM에 있어야 합니다. 따라서 로컬 클라이언트 보기는 원격 클라이언트 보기에서 제공하는 위치 투명성을 제공하지 않습니다. 로컬 인터페이스와 로컬 홈 인터페이스는 로컬 클라이언트인 엔터프라이즈 Bean으로부터의 간단한 액세스를 지원합니다. 세션 Bean과 엔티티 Bean은 해당 클라이언트와 밀접하게 결합될 수 있으므로 일반적으로 원격 메소드 호출과 연관된 오버헤드 없이 액세스할 수 있습니다. 로컬 클라이언트 보기는 두 개의 인터페이스로 구성됩니다.
  • 로컬 인터페이스: 로컬 인터페이스는 원격 인터페이스의 간단한 버전이지만 로컬 클라이언트를 위한 인터페이스입니다. 이 인터페이스에는 로컬 클라이언트에서 호출할 수 있는 비즈니스 로직 메소드가 포함됩니다.
  • 로컬 홈 인터페이스: 로컬 홈 인터페이스는 엔터프라이즈 Bean 클래스의 인스턴스를 찾고 작성하고 제거하기 위해 로컬 클라이언트에서 사용하는 메소드를 지정합니다.
웹 서비스 클라이언트 보기
EJB 2.1 스펙에서는 EJB 아키텍처가 웹 서비스를 지원할 수 있습니다. 세션 Bean 클라이언트는 웹 서비스 클라이언트가 될 수 있습니다. 웹 서비스 클라이언트는 해당 서비스 엔드포인트 인터페이스를 갖는 Stateless 세션 Bean의 웹 서비스 클라이언트 보기를 사용할 수 있습니다.
서비스 엔드포인트 인터페이스
Stateless 세션 Bean의 서비스 엔드포인트 인터페이스는 웹 서비스 엔드포인트로서의 세션 Bean의 기능을 나타냅니다. 웹 서비스의 WSDL(Web Service Description Language) 문서는 웹 서비스를 메시지에 대한 오퍼레이션을 수행하는 한 세트의 엔드포인트로 설명합니다. WSDL 문서는 Stateless 세션 Bean의 서비스 엔드포인트 인터페이스를 해당 엔드포인트 중 하나로 포함할 수 있습니다. 기존 Stateless 세션 Bean을 웹 서비스 클라이언트 보기를 포함하도록 수정할 수 있습니다. 또는 서비스 엔드포인트 인터페이스를 기존 WSDL에서 맵핑하여 올바른 인터페이스를 제공할 수 있습니다.

웹 서비스 클라이언트 보기는 위치에 종속되지 않으므로 원격 호출을 통해 액세스할 수 있습니다.

EJB 클라이언트 JAR 파일
EJB 클라이언트 JAR 파일은 클라이언트 프로그램에서 EJB JAR 파일에 포함된 엔터프라이즈 Bean의 클라이언트 보기를 사용하는 데 필요한 클라이언트 인터페이스를 포함할 수 있는 선택적 JAR 파일입니다. EJB 모듈의 EJB 클라이언트 JAR 파일을 작성하지 않는 경우 모든 클라이언트 인터페이스 클래스는 EJB JAR 파일에 포함됩니다. 기본적으로, 워크벤치는 해당 EJB 프로젝트 각각에 대해 EJB 클라이언트 JAR 프로젝트를 작성합니다.
EJB 컨테이너
EJB 컨테이너는 하나 이상의 엔터프라이즈 Bean을 관리하는 런타임 환경입니다. EJB 컨테이너는 엔터프라이즈 Bean 오브젝트의 라이프사이클을 관리하고 분산된 트랜잭션을 조정하며 오브젝트 보안을 구현합니다. 각 EJB 컨테이너는 일반적으로 EJB 서버에서 제공하며 서버에서 실행되는 엔터프라이즈 Bean 세트가 포함됩니다.
배치 디스크립터
배치 디스크립터는 EJB JAR 파일 또는 EAR 파일에서 엔터프라이즈 Bean과 함께 패키지화된 XML 파일입니다. 배치 디스크립터에는 엔터프라이즈 Bean의 컨텐츠와 구조에 대해 설명하는 메타데이터와, EJB 컨테이너에 대한 런타임 트랜잭션 및 보안 정보가 포함됩니다.
EJB 서버
EJB 서버는 엔터프라이즈 Bean을 사용하는 서버 애플리케이션의 실행을 지원하기 위해 런타임 환경을 제공하는 상위 레벨 프로세스 또는 애플리케이션입니다. EJB 서버는 JNDI에서 액세스할 수 있는 이름 지정 서비스를 제공하며 클라이언트 애플리케이션에 대한 자원 할당을 관리 및 조정하고 시스템 자원에 대한 액세스와 트랜잭션 서비스를 제공합니다. 예를 들어, 데이터베이스 또는 애플리케이션 서버에서 EJB 서버를 제공할 수 있습니다.