EJB 아키텍처

2010. 8. 15. 15:06plming/Java - Spring

EJB의 프록시 역할을 하는 Business Delegate를 두어서
분산 환경하에 있는 EJB를 호출하도록 구현
Business Delegate의 역할은 UI 계층으로 하여금 비즈니스 계층이 분산 환경하에서 구현되어 있는지를 모르는 상태에서 사용하는 것이 가능하도록 한다.

비즈니스 계층은 EJB의 Remote 인터페이스나 Local 인터페이스를 가지는 무상태 세션빈이 담당
EJB는 EJB 컨테이너 하에서 관리되고 있으며,
EJB 컨테이너는 분산 환경, 트랜잭션 관리, Security 등의 기능을 지원하고 있다.

퍼시스턴스 계층을 담당하도록 하기 위해 EJB는 엔티티빈을 제공
실행 속도의 문제 때문에 최근에는 엔티티빈을 사용하지 않는 것이 일반적
대신, OR Mapping 프레임워크를 이용하거나 JDBC API를 직접 사용


- 비즈니스 계층
UserServiceBean
net.javajigi.user.dao.UserDAOFactory
net.javajigi.user.dao.UserDAO
net.javajigi.user.model.User

비즈니스 로직을 구현하고 있는 클래스는 UserServiceBean
분산 환경 지원과 EJB의 생명주기를 관리하기 위해 필요한 클래스들이 대부분
최소 네 개 이상의 클래스가 필요

 import javax.ejb.SessionBean;
 public abstract class UserServiceBean implements SessionBean {



- UI 계층
UserServiceDelegate
net.javajigi.servicelocator.ServiceLocator

Business Delegate는 분산환경에 위치해 있는 EJB 객체의 생성 및 메소드 호출을 전담


개발한 클래스들을 EJB 컨테이너의 JNDI 저장소에 추가하기 위해 설정 파일을 추가해야 한다.
ejb-jar.xml과 EJB 컨테이너에서 필요한 파일
\META-INF에 위치한다.


- 장점
1. 정형화된 비즈니스 계층을 제공한다.
   비즈니스 계층을 논리적인 분리와 물리적인 분리까지 가능하다.
2. 선언적인 트랜잭션 관리와 같이 Non EJB 아키텍처에서는 지원하기 힘들었던 기능을 제공한다.
3. 웹UI계층뿐만 아니라, Swing같은 GUI클라이언트등 다양한 클라이언트에 대한 지원이 가능하다.
4. 분산 기능을 지원하는 것이 가능하다.
5. 비즈니스 객체를 여러 서버에 분산시키는 것이 가능하다.

- 단점
1. 가장 큰 문제점은 실행 속도의 문제다.
   분산 환경을 지원하기 위하여 객체를 직렬화하는 과정 대문에 실행 속도의 저하가 발생한다.
2. 개발 사이클이 소스수정,빌드,배포,테스트의 복잡한 과정을 거치기 때문에 개발 생산성이 저하된다.
3. EJB 컨테이너에 종속적이기 때문에 개발한 후 EJB 컨테이너에 배포한 다음 테스트를 진행해야 한다.
   이는 테스트를 어렵게하고, 이로 인해 제품의 질이 저하된다.
4. 실행 속도 문제를 해결하기 위한 EJB를 위한 변형된 패턴들이 나타나면서 객체 지향적 개발에 제약사항이 된다.
5. 자체 스펙이 가지고 있는 실행 속도가 떨어지는 문제로 인해 EJB 컨테이너를 만드는 대형 벤더들 자신들만의 기능을 추가함으로써 EJB 컨테이너 사이의 이식성(Portability)이 떨어진다.


[출처] Spring 프레임워크 워크북

'plming > Java - Spring' 카테고리의 다른 글

Spring Framework 설치 및 개발 환경  (0) 2010.08.15
Lightweight 컨테이너 아키텍처 = Spring Framework  (0) 2010.08.15
Non EJB 아키텍처  (0) 2010.08.15
DataSource Lookup  (0) 2010.08.15
(Domain) Model Class  (0) 2010.08.15