EJB란?

Languages/Java 2012. 6. 21. 18:17

EJB란

EJB가 생겨난 배경

서버측에서 어플리케이션을 개발할 경우, 이하와 같은 문제가 있다.

・종래의 어플리케이션에서 필요로 하는 비지니스로직 뿐만 아니라, 시스템 서비스를 이용한 데이터베이스처리와 트랜젝션처리의 프로그램이
필요로 하기 때문에 어플리케이션의 개발에 시간이 걸린다.
・각각의 어플리케이션 서버에서는 독자의 API가 제공되고 있기 때문에 각사의 API를 사용해서 작성한 어플리케이션에는 이동성이 아니고 부품화가 곤란함

이같은 문제를 해결해서, 서버 어플리케이션의 생산성의 향상과 이동성을 실현하기 위해서 생겨난 것이 Enterprise JavaBeans(EJB)이다.

EJB의 개요
Enterprise JavaBeans(EJB)는 독립한 부품이 아닌, 미국 Sun Microsystems사가 제창한 규약이다.

EJB는 서버 어플리케이션의 개발을 용이하게해 다중다양한 Platform과 제품간의 이동성을 실현하기 위하여
이하와 같은 비지니스로직과 시스템 서비스를 이용하는 로직을 분산해 그 사이의 규약을 규정하고 있다.

비지니스 로직을 탑제한 부품을 "Enterprise Bean"이라고 불린다. Database처리, Transaction처리등의 시스템 서비스를 이용한
로직을 감추고 있는 부품을 "컨테이너"라고 불린다.

EJB를 이용함으로 인해 개발자는 어플리케이션개발시에 비지니스 로직의 개발만 전념하는 것이 가능하다.

또, EJB의 한가지 특징은 Enterprise Bean의 "Deployment"를 행하는 것이다. Deployment를 행하는 것에는 Enterprise Bean은 컨테이너에
설치된 실행가능한 상태로 된다. Deployment를 행하는 것으로 인해 각사의 여러가지 EJB제품상에서 Enterprise Bean을 동작시키는 것이 가능하게 된다.

EJB에는 "deployment descriptor"에 의한 Enterprise Bean이 갖는 각종의 속성값을 지정하는 것이 가능하다.
deployment descriptor의 내용을 변경하는 것에서 Enterprise Bean의 소스 코드를 변경하는것이 아니고 각각의 환경과 니즈에 의한 운영환경을 카스타마이즈하는 것이 가능하다.

EJB의 도입효과
EJB에는 지금까지 설명한것과 같은 큰 2가지의 특징이 있다.
・어플리케이션 개발이 용이
・어플리케이션에서 이동성이 있다.

이것들의 특징을 활발히 함으로 인해서 서버 어플리케이션을 보다 빠르게 구축하는 것이 가능해 졌다.
이러한 EJB를 도입하는 것에 의해 서버 어플리케이션 개발의 생산성이 향상되어 서버 어플리케이션 개발 비용이 삭감하는 것이 가능하다.

EJB의 기본구성
EJB는 이하의 4개의 요소로 구성되어 있다.

1. Enterprise Bean
2. Container
3. EJB Server
4. Client Application

이 4가지 요소중 어플리케이션 개발자가 용이한 것은 Enterprise Bean과 client application의 2가지이다.

■Enterprise Bean
비지니스 로직을 실장한 서버 컴포넌트이다.
Enterprise Bean에는 이하의 2가지의 모델이 있다.
1. Session Bean
2. Entity Bean

"Session Bean"는 클라이언트의 대화처리를 실현하는 OBject이다.
"Entity Bean"는 Database에 격납된 레코드를 Object로서 뽑아내거나 격밥하기 위하여 이용하는 Object이다.

일반적으로는 클라이언트가 Session Bean을 불러 Session Bean이 Entity Bean을 불르는 것으로 데이터베이스에 접근을 행한다.

■Container
EJB서버와 Enterprise Bean의 중간에 위치해, 클라이언트 어플리케이션은 그 컨테이너를 경유해서 Enterprise Bean에 접근한다.
컨테이너가 데이터베이스처리와 트랜젝션처리등을 숨기기위해 개발자와 그것들을 의미하지 않는 어플리케이션을 개발하는 것이 가능하다.

■EJB Server
EJB서버는 컨테이너를 관리해서 EJB로서 필요한 시스템 레벨의 서비스( 데이터베이스 처리, 트랜젝션 처리등)을 실현한다.

■Client application
EJB에 준거한 클라이언트 어플리케이션이다.
Java Applet, Java Application, Servlet, JavaServer Pages(JSP) 베이스의 어플리케이션등이 있다.

Enterprise Bean의 기본동작

Enterprise Bean의 기본동작을 설명한다.

클라이언트부터 서버의 Enterprise Bean에의 접근은 컨테이너를 경유해서 행한다.
컨테이너는 Enterprise Bean의 대리가 되는 "EJB object"와, EJB object의 생성/삭제를 행하고 "EJB home"을 의미한다.
클라이언트는 컨테이너가 갖는 이 두가지 object를 통해서 Enterprise Bean에 접근한다.

이하의 클라이언트가 컨테이너를 통해서 Enterprise Bean에 접근할 때의 흐름을 나타낸다.

1. JNDI의 lookup메소드에서 EJB home을 검색한다.

2. 클라이언트가 습득한 EJB home에 대해서 create 또는 find메소드를 호출하면 컨테이너가 Enterprise Bean의 대리 object에 있는
EJB object를 생성한다. 이 때, 컨테이너 내부에는 실제로 비지니스 로직이 갖춰져있는 Enterprise Bean의 인스턴스가 생성된다.

3. 클라이언트는 Enterprise Bean의 대리가 되는 EJB object의 비지니스 메소드를 호출한다. 컨테이너가 그것을 중개해서
Enterprise Bean의 메소드를 호출한다.

실현환경
EJB서비스에는 EJB의 컨테이너라고 하는 개념이 포함되어 있다. 컨테이너는 EJB 어플리케이션을 넣기 위한 용기이다.
개발환경에서 작성된 EJB 어플리케이션은 전개된 후 서버에 전송하는 컨테이너에 설치하는 것에 의해 실행가능한 상태로 된다.
EJB어플리케이션을 전개하는 것을 "Deployment"라고 한다

 

출처 : http://blog.naver.com/sorrowx0311/110072060518

 

[보태기]

EJB에 대한 개념을 정리해 보도록 하겠습니다. 음.. EJB라고 하면 엔터프라이즈 자바 빈(Enterprise Java Bean)이라고 하는 건 다들 아시죠^^ 썰렁했나? 그런데 이말가지고는 EJB의 뜻을 해석 하기는 어려우실 건니까 분산환경, RMI등을 이해 한 후 EJB에 대해 알아 보기로 하겠습니다.

우선 EJB를 보시기 전에 자바 RMI라고 하는것에 대해 알아 보자구요, Java RMI는 Remote Method Invocation의 머리말을 딴 말인데 JDK1.1부터 자바에 내장된 기술입니다. Java 환경에서 Computer 간 또는 Program 간에 통신(객체를 주고 받을 수 있습니다)을 할 수 있는 기능을 제공합니다. 자바에 내장 되었다는 것은 CORBA, DCOM, EJB등은 통신을 대신 해주는 미들웨어(Middleware)가 필요한데(EJB를 사용하기 위해서는 이 사이트에서 강좌가 진행 중인 웹 로직, 웹 스피어등의 미들웨어가 필요하다는 겁니다.), RMI는 이미 JVM에서 지원을 한다는 이야기죠… 제 생각엔 분산 시스템 환경을 구축하는데 간단한 것이라면 RMI를 추천 합니다. 그리고 미들웨어라는 말이 자주 보이는데 이것은 분산 환경에서 애플리케이션들이 연결되어 서로 데이터를 교환할 수 있게 해 주는 Software정도로 보시면 되겠습니다.

객체 지향의 개념에서 프로그램이 객체들 간의 메세지 전송으로 실행 된다는 이야기를 많이 보셨을 겁니다. 그런데 만약 그 객체들이 서로 다른 컴퓨터에 존재한다면 어떨까요? 과거 분산 시스템은 서로 다른 프로그램들이 다른 컴퓨터에 존재하고 실행되는 것이었는데 최근의 객체 지향에서는 각 객체가 분산되어 존재하는 개념인 것입니다. 그래서 서로 통신을 하는데 다른 컴퓨터에 있는 객체의 메소드를 호출 한다든지 또는 객체들도 던졌다 받았다 한다는 것이 RMI 입니다.

분산컴퓨팅, 분산객체에 대한 개념에 대해 정리하면 아래와 같습니다. 물론 Java Network 강좌에 나와 있는 내용 입니다.

분산 컴퓨팅 이란? 네트워크에서 서로 다른 시스템 간에 응용 프로그램을 분산해서 처리하는 환경을 말합니다. 즉 하나의 컴퓨터에 존재하는 Application이나 프로세스에서 스스로 처리하거나 수행하기 어려운 작업을 다중 프로세서나 컴퓨터에 분산 시키는 것입니다. 분산 컴퓨팅을 적용한 Application을 Distributed Application 이라고 합니다.

분산 객체 (Distributed Object) 란? 분산 컴퓨팅 기술이 객체 지향과 접목되어 하나의 프로세서나 컴퓨터에서 실행되는 객체가 다른 프로세서나 컴퓨터에서 객체와 통신이 가능 하도록 하는 기술이 분산 객체 기술이며 분산 객체란 자신이 존재하는 런타임 환경과는 다른 런타임에 있는 객체와 통신이 가능한 객체 입니다.

이제 EJB로 돌아와서 개념을 정리해 보죠… EJB는 대규모 분산 객체 시스템을 구축하기 위한 기술 또는 자바로 서버 측 비즈니스 로직을 작성하기 위한 Enterprise 환경에서의 자바 표준이라고 보시면 됩니다. 흔히 프리젠테이션 로직이라고 하는 것이 화면에 보여지게 되는 정보의 타입, 포맷을 자동으로 처리하는 반면 비즈니스 로직은 급여계산 한다든지 하는 보이지 않는 어떤 처리를 하는 겁니다. 만약 EJB를 사용하기 위해 웹로직 서버를 이용한다고 하면 프로그램 개발자는 웹로직 서버의 컨테이너를 이용하여 작업을 하게 되는데 이는 트랜잭션의 지원, 보안, 동시 접근 처리 등 비즈니스 로직을 처리하는데 있어 필요한 모든 것을 제공 한다고 보면 됩니다. EJB는 엔티티빈, 메시지 드리븐 빈, 상태유지 세션 빈, 비상태유지 세션 빈등 4가지의 타입이 있으며 아마도 오라클자바에 오시는 여러 분들은 수준이 높아 공부하시는데 크게 어렵지 않으리라 생각 됩니다. ^^ EJB는 명세, 스펙만 잘아시면 쉽게 공부 할 수 있습니다.

EJB에 대한 이해를 위해서는 앞서 설명 한 분산 환경, 분산 객체, RMI등을 잘 알고 있어야 합니다. 그래서 RMI의 기초가 부분에 대해 부족하시다고 생각이 드는 분은 Java Network의 RMI강좌중 HelloWorld를 따라해 보시고 오시기를 부탁 드리구요, JSP, Servlet등도 공부를 하시기 바랍니다.

EJB기술을 이용하면 다른 곳에 떨어진(원격의) EJB서버 메모리에 떠 있는 클래스를 참조할 수 있습니다. 다시 말씀 드리면 그 클래스의 메소드를 호출 할 수 있다는 이야기 입니다. 즉 EJB도 내부적으로 컴포넌트의 통신을 위해 RMI를 사용 한다는 겁니다. 그리고 분산 환경이라고 무조건 EJB를 쓰시면 큰일 납니다. 미들웨어 구입을 위한 비용은 둘째 치더라도 EJB는 추가적인 overhead가 있으므로 성능 향상을 위한 EJB 보다는 안정성, 재사용 가능한 시스템, 프리젠테이션 영역과 비즈니스 로직의 분리, 신뢰성 있는 N-Tier 환경, 분산 환경이 꼭 필요한가 등을 고려하여 사용 하는 것이 바람 직 합니다. EJB를 사용하기 위해서는 전용 서버(미들웨어)를 사용해야 하는데 SUN에서 제공하는 J2EE서버의 경우 거의 실무에서는 쓰이지 않으며 주로 웹로직, 웹스피어 등을 이용하셔서 개발을 하게 됩니다.

[위키백과]

엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB)는 기업환경의 시스템을 구현하기 위한 서버컴포넌트 모델이다. 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. EJB 사양은 Java EE자바 API 중 하나로, 주로 웹 시스템에서 JSP는 화면 로직을 처리하고, EJB는 업무 로직을 처리하는 역할을 한다.

EJB의 종류

  • 세션 빈 (Session Bean)
  • 엔티티 빈 (Entity Bean)
 데이터베이스의 데이터를 관리 객체

- Insert(삽입), Update(수정), Delete(삭제), select(조회) - DB관련 쿼리는 자동으로 만들어지고 개발자는 고급업무처리에 집중 - DB가 수정되면 코드수정없이 다시 배포(설정문서 만들어서 복사)

  • 메시지 구동 빈 (Message-driven Bean)

이상입니다.

'Languages > Java' 카테고리의 다른 글

AWT, Swing 이클립스에서 실행시 한글 깨짐  (0) 2012.06.29
Java API 모음  (0) 2012.06.25
간단한 암호화 모듈  (0) 2012.06.25
POJO란 무엇인가?  (0) 2012.06.21
History of Java  (0) 2012.06.21

WRITTEN BY
GrimReaper
안녕하세요 Grim Reaper의 티스토리에 오신 것을 환영합니다.

,