* EJB : J2EE 환경에서 대형 어플리케이션에서 분산 객체 구현을 위한 서버 측 분산 컴포넌트 모델.
컨
테이너에게 서비스를 제공하는 소프트웨어이다. 일반적으로 EJB 컨테이너는 트랜잭션 관리자에 종속적인데 이 트랜잭션 관리자는
일반적으로 두 단계 커밋을 수행하는 EJB 서버의 일부이다. J2EE 아키텍처에서는 EJB 컨테이너는 EJB서버와 같은 회사에서
제공하는 것을 가정하기 때문에, 컨테이너와 서버간의 약속에 대해서는 언급을 하고 있지 않다. EJB 서버는 하나 이상의 EJB
컨테이너를 지원할 수 있다.
* EJB 컨테이너 : 서블릿, JSP 를 포함한 J2EE 스펙에 기술된 API 를 구현하고 있어 J2EE 서버 또는 와스(Web Application Server) 라고 불림.
1. EJB의 특징
J2EE 환경 : 클라이언트 계층, 웹계층, 비즈니스 계층, EIS 계층
클라이언트가 어떤 유형이든 비즈니스 로직은 주로 EJB를 통해서 구현된다.
EJB로 구성된 지브니스 컴포넌트는 네트워크상에 분산되어 배치될 수 있으며, EJB의 이러한 특징은 하나의 대형
애플리케이션의 비즈니스 컴포넌트를 여러 서버에 분산배치, 수행하도록 하여 사용자수가 증가하더라도 애플리케이션 성능을 쉽게 확장
가능하도록 한다.
EJB 컨테이너가 분산 트랜잭션을 자체적으로 관리
EJB를 사용하는 서블릿이나 JSP, 또는 일반 애플리케이션에 특정 롤을 부여하여 EJB 내 메서드에 접근하는 것을 제어.
--> 디플로이 디스크립터를 통해 트랜잭션을 처리하고 허가된 클라이언트만 접근하도록 할 수 있음.
엔티티 빈 : 애플리케이션의 퍼시스턴트 로직을 담당
세션 빈 : 엔티티 빈을 다루는 비즈니스 로직을 구현.
메시지 드리븐 빈 : 비즈니스 로직을 구현, JMS 를 통해 비동기적으로 수행.
EJB 컴포넌트는 원격 객체로 서비스 되는 단위로 하나의 세션 빈 또는 메시지 드리븐 빈과 여러개의 엔티티 빈으로 구성.
동일 서버 내의 EJB 컴포넌트 내의 데이터 교환은 지역 메서드 호출을 통해 처리됨.
2. 엔티티 빈(Entity Bean)
데이터베이스와 같은 영속적인 기억장소에 저장되어 있는 데이터를 표현하는 비즈니스 객체.
EJB는 엔티티 빈을 통해 데이터의 지속성을 유지함. --> 퍼시스턴스
퍼시스턴스를 유지하는 방법에 따라 CMP(Container Managed Persistence), BMP(Bean Managed Persistence) 로 나뉜다.
2가지의 인터페이스와 2개의 클래스, 배치 디스크립터로 구성.
1) 퍼시스턴스 유지
CMP(Container Managed Persistence) : 데이터의 퍼시스턴스 로직을 EJB가 전담. 엔티티빈과 데이터베이스의 칼럼을 매핑만 하면 됨.
BMP(Bean Managed Persistence) : 개발자가 직접 JDBC 코딩을 통해 로직을 구현. 복잡한 Join 이 필요하거나 기존 테이블을 재사용할 때 매핑이 어렵다면 BMP를 사용한다.
2) 인터페이스
홈 인터페이스 : EJB 컨테이너에 의해 실제 구현 클래스가 생성, 엔티티 빈을 생성하고 검색, 삭제하는데 쓴다.
로컬 홈 인터페이스 : EJBLocalHomeInterface를 상속, 로컬 인터페이스를 리턴, RemoteException 발생하지 않음.
리모트 인터페이스
로컬 인터페이스
3) 클래스
엔티티빈 클래스
프라이머리 키 클래스 : 엔티티빈을 식별하는 속성과 관리를 위한 메서드를 정의.
3. 세션 빈
비즈니스 룰 셋을 정의한다.
두종류의 인터페이스와 하나의 클래스, 배치 디스크립터로 구성
엔티티 빈을 사용하여 비즈니스 로직을 구현.
무상태 세션 빈과 상태유지 세션 빈
- 무상태 세션 빈 ; 상태가 없으므로 오직 메소드 호출시 전달된 파라미터를 통해 비지느스 로직을 수행하고 그 결과를 곧바로 리턴해야 함.
- 상태유지 빈 : 한번 클라이언트에 할당되면 클라이언트에서사용을 종료할 때까지 오직 할당된 클라이언트와의 상태를 유지함으로써 클라이언트와의 지속적인 데이터 교환과 상태변경을 통해 비즈니스 로직을 수행함.
1) 인터페이스
홈 인터페이스
리모트 인터페이스
2) 세션 빈 클래스
세션 빈의 라이프 사이클 관리를 위한 콜백 메서드들과 리모트 인터페이스에서 선언된 메서드를 구현하기 위한 메서드 선언.
4. 메시지 드리븐 빈
클라이언트가 요청한 서비스는 메시지 큐에 저장되어 JMS에 의해 메시지 드리븐 빈으로 전달.
비즈니스 로직 수행결과값을 리턴받지 않아도 될 때 유용.
5. J2EE 애플리케이션 패키징, 배치
구현헌 EJB를 사용하기 위해서는 EJB의 배치 디스크립터를 작성하고 패키징하여 EJB 컨테이너에 배치해야 한다.
어떤 컨테이너를 쓰느냐에 따라서 차이가 있음.
1) 배치 디스크립터
EJB 표준 ejb-jar.xml 파일과 컨테이너에 따라 정의된 배치 디스크립터가 있다.
2) 패키징
EJB 컴포넌트는 JAR 파일 형태로 패키징 됨.
시간 절약을 위해 EJB 컨테이너가 제공하는 컴파일러를 이용하여 EJB 인터페이스를 구현한 클래스를 생성하여 같이 패키징함.
3) EJB 를 컨테이너에 배치하는 방법
EJB 단독으로 배치
J2EE 애플리케이션의 컴포넌트로 배치
6. J2EE 애플리케이션
|