본문으로 건너뛰기

10.4 EJB 컨테이너

엔터프라이즈 시스템은 여러 대의 서버를 네트워크상에서 연결하어 시스템을 구성하는 것이 일반적이다. 분산된 시스템에서 동작하는 애플리케이션은 비즈니스 로직뿐만이 아니라 네트워크 통신, 스레드 관리, 메모리 관리, 보안, 트랜잭션, 확장성 등의 기능을 제공할 수 있어야 한다. 또한, 엔터프라이즈 시스템에서는 대규모로 애플리케이션이 개발되기 때문에, 프로그램 이식성, 유지 보수성, 개발 생산성을 높이는 일도 매우 중요하다. EJB는 업무 애플리케이션을 개발하는 개발자의 엔터프라이즈 시스템의 높은 수준의 요구사항을 충족시키면서, 분산된 서버에서 애플리케이션을 효율적으로 개발할 수 있어야 하는 요구사항을 만족하게 하기 위한 엔터프라이즈 전용 표준 컴포넌트이다.

그림 1. EJB 컨테이너

EJB 컨테이너는 빈를 분산 컴포넌트로서 동작시키기 위한 트랜잭션이나 보안 등의 각종 서비스를 제공하는 실행 환경이다. EJB 인스턴스의 생성이나 제거 등의 라이프 사이클도 EJB 컨테이너에 의해 관리된다. EJB 컨테이너는 EJB를 호출할 때, 다른 스레드가 그 EJB 인스턴스에 동시에 접근하지 않도록 보장한다. 즉, 개발자가 빈를 구현할 때 스레드 세이프하게 만들 필요가 없고 EJB 컨테이너가 관리한다. 분산 애플리케이션 개발에서 기술적으로 어려운 부분을 EJB 컨테이너가 담당해 처리하기 때문에, 개발자는 비즈니스 로직 개발에만 집중할 수 있게 된다.