EJB 아키텍처

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

전체 EJB(Enterprise JavaBeans) 스펙과 기술에 대한 설명은 java.sun.com 웹 사이트를 참조하십시오.

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

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

웹 서비스 클라이언트 보기에서는 위치가 중요하지 않으며 원격 호출을 통해 액세스할 수 있습니다.

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

피드백