티맥스에서 주로 하는 일이 비지니스 로직에 필요한 제반사항을 다루는 일입니다.
3-티어 구성으로 시스템을 구성하기 때문이죠~
제가 회사때문에...오늘 참석은 못했지만...(ㅠㅠ아쉬워용)
면접가시는 분들께서는..기본적으로 EJB란 무엇인가에 대해서~
알고 가세용~ ㅎㅎㅎ
1. EJB란 무엇인가?
EJB는 Sun Microsystem사(이하 SUN)에서 제안한, 서버 컴퓨터에서 실행되는 자바 컴
포넌트 모델이며, EJB는 ORACLE, IBM 등의 여러회사와 수 많은 개발자들이 참여하여 만
드는 공통된 표준규칙을 말합니다.
EJB를 공부하고자 하는 분들에게는 이렇게 말합니다. EJB는 자바의 종합예술과 같은
분야이다. 그러므로 무턱대고 EJB에 도전하다가는 좌절할 수 밖에 없다고 말합니다. 그 이
유는 EJB에는 수많은 자바 기술이 들어가 있기 때문입니다.
보통 우리가 말하는 EJB프로그래밍이라는 것은 사실, EJB 프로그래밍만을 의미하지 않
습니다. “무슨소리지요?” 라고 물어볼 분을 위하여 설명하자면, SUN에서는 기업용 에플리케
이션을 개발하기 위한 API의 묶음인 J2EE를 발표합니다.
J2EE를 구성하고 있는 것들을 보면, 핵심으로 JSP, 서블릿, EJB(Enterprise Java
Beans)등이 있으며, 데이터베이스를 위한 JDBC, 디렉토리를 위한 JNDI(Java Naming and
Directory Interface), 트랜잭션을 위한 JTA(Java Transaction API), 메시징을 위한
JMS(Java Message Service), 이 메일 시스템을 위한 JavaMail 그리고 CORBA접속을 위한
Java IDL(Interface Definition Language)로 구성되는 것을 알 수 있습니다.
이렇게 여러가지 API로 구성된 J2EE의 가장 중요한 기능은 비즈니스 로직을 담당하고 있
는 EJB에 있다고 말해도 과언이 아닙니다. 이렇게 EJB 기능을 포함하고 있는 J2EE와 같은
API의 묶음을 EJB 컨테이너라고도 말을 합니다.
J2EE 자체만 보아도 훌륭한 EJB 컨테이너지만, 썬사에서는 J2EE를 상업적 용도로 사용
못하도록 라이센스에 표시해 놓았습니다. 그러므로, 실제로 상용으로 이용 할려면 J2EE가
아닌 다른 EJB 컨테이너를 이용해야 합니다.
EJB는 JAVA로 작성되어지기 때문에, J2EE에서 작성된 프로그램은 수정하지 않고 다른
EJB 컨테이너에서 동작할 수 있습니다. 그렇게 될 수 있는 이유는 여러 종류의 EJB컨테이
너가 모두 EJB 스펙을 준수하고 있기 때문입니다.
J2EE 를 구성하고 있는 기술들은 각각 하나씩 보아도 초보자들 입장으로는 어려울 것입니
다. 또한 J2EE의 스펙 자체가 복잡하기 때문에, J2EE를 어렵다고 말을 합니다. 하지만 반대
로 이러한 스펙을 잘 알고 있는 사람이라면, 그 스펙대로 프로그래밍을 작성하면 쉽게 프로
그래밍을 짤 수도 있다는 말이기도 합니다. 그러므로 J2EE를 쉽게 익히기 위하여는 스펙이
어떻게 되는지 정확하게 이해햐여야 하는 것입니다.
그런데, 여기에서 스펙을 이해할 수 있으려면 자바의 기본지식이 필요합니다. 자바의 기
본지식으로는 JAVA 기초, JSP, Servlet, RMI등에 대하여 알고, 객체지향에 대한 확실한 이
해가 있을 경우 J2EE를 이해할 수 있을 것입니다. 특히 JAVA기초부분에서 Interface의 기
능과 특징에 대하여 자유자재로 쓸 수 있어야만 됩니다. 그러한 내용은 본 문서에서 다루지
않겠습니다.
참고 : EJB 와 JAVA Bean은 모두 class이긴 하지만 개념자체는 틀립니다. JAVA Beans는
보통 비쥬얼한 개발환경에서 재사용되기 위한 컴포넌트 모델이며, EJB는 미션 크리티컬한
서버쪽에서 기업용 애플리케이션에서 사용될 수 있는 분산객체를 말합니다. ( 좀더 여러가지
로 비교할 수 있지만 생략합니다. )
2. EJB를 왜 사용하는가?
EJB를 사용하는 이유는 여러가지 장점이 있기 때문일 것입니다. EJB는 작은 작업을 처리
할 때 사용하지 않습니다. 작은 작업을 웹상으로 구현 할려면 jsp나 servlet 만 이용하고도
쉽게 작성할 수 있습니다. EJB는 중요한 기능을 처리하는 기업에서 사용되도록 작성되는 것
입니다.
a. 비즈니스 관점으로 본 장점
- 빠른 개발 속도 : EJB가 동작하는 EJB컨테이너는 실제로 개발자가 비즈니스
관련 프로그램을 작성하는데 가장 중요한 트랜잭션, 보안, 패일오버등을 자동으
로 처리해 주기 때문에 오류가 발생할 가능성이 적어집니다. 그러므로 빠른 시
간안에 개발될 수 있습니다
- 작업할 내용의 감소 : 앞에서 말한 장점과 같은 의미로, 개발자가 직접 작성해
야 될 내용이 이미 구현되어 있으므로, 직접 모두 구현하는 것보다 작업할 내
용이 감소 될 수 있습니다.
- 코드 재사용성 증가 : EJB 자체가 비즈니스 단위로 재사용 되도록 만들어지기
때문에 코드 자체의 재사용률이 높아집니다.
- 전문가의 필요성 감소 : 실제 가장 작성하기 어려운 부분인 트랜잭션, 보안, 패
일오보등의 기능을 자동으로 처리해주기 때문에 스펙을 확실하게 이해하고 있
다면 전문개발자가 아니라도 쉽게 개발할 수 있습니다.
b. 개발자 관점의 장점
A. 컴포넌트 아키텍처 도입
B. 트랜잭션 보장
C. 이식성
D. 확장성
E. 유연성
위와 같은 장점이 있으나 단점은 EJB 컨테이너를 구입해야 하는 비용적인 부분과 스펙 자
체가 어렵다는 것이 있습니다.
3. EJB 아키택처의 목표
EJB는 다음과 같은 목표로 만들어 졌습니다. EJB가 어떤 목표를 가지고 있는지 확실하
게 파악하고 있어야, 알맞게 EJB를 이용할 수 있을 것입니다.
- JAVA 언어로 작성되는 분산 객체 형태의 비즈니스 로직을 구현하는 애플리케
이션을 개발하기 위한 표준 컴포넌트이다.
- 한가지 툴에 종속적인 것이 아니라, 여러가지 툴들을 이용할 수 있으며 툴들을
통하여 컴포넌트를 조합하여 애플리케이션을 작성할 수 있다.
- 트랜잭션, 보안, 패일오버, 멀티쓰레드, 커넥션풀링 등과 같은 복잡하고 어려운
기능들을 개발자가 몰라도 쉽게 작성할 수 있다.
- EJB는 한번 작성된 후 재 컴파일 없이 재사용 할 수 있다.
- EJB 컴포넌트를 개발하는 단계와 EJB컨테이너에 배치하고 실행하는 단계는 명
확하게 구분된다.
- EJB 애플리케이션 기존의 JAVA API등을 이용할 수 있다.
- 다른 언어로 개발된 컴포넌트와 함께 동작할 수 있다.
- CORBA 프로토콜을 수용하며 이용할 수 있다.
위와 같은 기능들은 EJB 아키텍처가 지켜야 할 목적입니다. 반대로 프로젝트에 EJB를 사
용할 것인가? 라고 결정할 때 개발자들이 염두에 둘 부분이기도 합니다.
4. EJB의 종류
EJB는 세션 빈(Session Bean)과 엔티티 빈(Entity Bean)으로 구분됩니다. 각각의 사용용
도는 아래와 같습니다.
세션 빈 – 실제 로직을 담당하는 빈입니다. 예를 들자면, 물품검색, 물품주문, 물품 결재
등의 처리를 해주는 기능을 컴포넌트화 한 것을 의미합니다.
- 실제로 세션빈은 상태를 유지할 수 있는 상태유지 세션빈과 무상태 세션빈으로
나뉩니다.
엔티티 빈 – 일반적으로 데이터베이스의 테이블을 의미합니다. 즉 자료를 나타내는 집합
을 나타내는 객체입니다.
- 엔티티 빈은 EJB 컨테이너가 자동으로 데이터 베이스를 관리하는
CMP(Container Managed Persistence)엔티티 빈과 빈 자체가 데이터 베이스를 관리하는
BMP(Bean Managed Persistence)엔티티 빈으로 나뉘어 집니다.
5. EJB 개발 순서
a. 홈 인터페이스와 리모트 인터페이스의 작성
- 홈 인터페이스(Home Interface) : 엔터프라이즈 빈을 클라이언트가 사용할 수
있도록 생성하고 찾아주는 기능
- 리모트 인터페이스(Remote Interface) : 엔터프라이즈 빈이 클라이언트에게 제
공하는 서비스를 메소드들로 선언한 인터페이스
b. Bean Class의 작성
- 엔터프라이즈 빈이 실제로 처리하는 작업을 내부코드로 구체적으로 작성하는
클래스입니다. Remote Interface에서 선언된 비즈니스 메소드를 실제로 구현해
줘야 합니다. 개발자 입장으로 보면 가장 할 일이 많은 작업이기도 합니다.
- Bean Class를 작성할 때는 Remote Interface에서 정의된 메소드를 실제로 구
현해 주는 것 외에도 EJB 컨테이너의 규약 메소드를 정의해야 합니다. 규약 메
소드는 EJB 컨테이너가 특정한 순간에 호출하는 메소드들로 아주 중요한 기능
을 처리합니다.
c. 디플로이먼트 디스크립터(Deployment Descriptor) 작성
- 디플로이먼트 디스크립터는 XML파일로 엔터프라이즈 빈의 이름, 트랜잭션 처
리방법, 보안, 자원관리 방법 등의 정보를 작성한 파일
d. 엔터프라이즈 빈과 관련된 모든 클레스와 디플로이먼트 디스크립터의
패키지화(jar로 묶음)
참고 : 위에서 c. d. 를 합쳐서 “디플로이먼트” 라고 합니다.
e. 패키지를 EJB 컨테이너에 설치함
- 참고로 EJB 컨테이너안에 EJB패키지를 설치하는 개발자를 배치자(deployer)
라고 호칭합니다.
- 컨테이너에 설치하는 과정을 ‘플러그인’ 이라고 말하며, 플러그인 되는 과정에
서 리모트 인터페이스를 구현한 클래스, 홈 인터페이스를 구현한 클래스, 각각
의 RMI 스텁, 스켈레톤 클래스가 자동으로 생성됩니다.
첫댓글 참고로 소양시험에서..EJB종류를 물어보는게 있었어요~
오..그래요?? 역시 사람들이 많으니깐 정보도 많이 알고 너무 좋네요^^ 근데 이걸 언제 다하냐??ㅡㅡ;;
정보 감사합니다................... 잠을 자지 말까...고려중..
지금 너무 피곤해서 쓰러질것 같습니다. 몸이 천근만근~~ 잠깐 잠을 청할까 생각중입니다.
자료 감사요.. 교선님 잠은 푹 주무시길... 잠 안자면 해롱해롱하답니다.. ^^
EJB궁금했는데 정말 감사요.. 근데.. 봐도 이해는 힘드네요... 역시 자바 어려버~~
bbbb
좋은 정보 감사 합니다. 관심은 많은데 아직 공부를 못했는데 좋은 자료네요^^