EJB 2.x 개발 자원

이 주제에서는 EJB 버전 2.x 개발에 사용되는 일반적인 자원 및 개발 도구를 설명합니다.

EJB 모듈

EJB 모듈은 프로젝트 Java™ EE 퍼스펙티브의 탐색기 보기에 표시되며 EJB 프로젝트에 해당됩니다.

EJB 모듈은 하나 이상의 엔터프라이즈 Bean을 단일 배치 가능 단위로 어셈블하는 데 사용됩니다. EJB 모듈은 EJB 프로젝트에서 개발되며 독립형 EJB JAR 파일로 내보내거나 엔터프라이즈 애플리케이션 내에서 다른 EJB 또는 웹 모듈과 결합할 수 있습니다. EJB JAR 파일은 표준 Java 아카이브 파일의 형식을 사용합니다. EJB 모듈은 다음을 포함합니다.

  • 하나 이상의 엔터프라이즈 Bean과 그에 속한 연관 .class 및 .java 파일.
  • 엔터프라이즈 Bean의 필요에 따라 그림 및 기타 파일.
  • 배치 디스크립터. 배치 디스크립터의 파일 유형은 XML(eXtensible Markup Language)입니다. 이 파일은 EJB 모듈의 컨텐츠를 선언하고, 모듈에서 빈의 구조를 정의하며, 런타임 시 빈이 사용되는 방법에 대한 설명을 제공합니다.
  • META-INF 디렉토리의 MANIFEST.MF 파일. Manifest 파일은 J2EE 엔터프라이즈 애플리케이션에서 다른 JAR 파일 또는 EJB 모듈에 대한 참조와 함께 클래스 경로 항목을 포함합니다. 이는 모듈의 외부 종속성을 정의합니다.

EJB 모듈은 EJB 컨테이너에 설치 및 실행됩니다.

엔터프라이즈 Bean은 분산 클라이언트/서버 애플리케이션을 작성하기 위해 다른 자원과 결합할 수 있는 Java 컴포넌트입니다.

참고: EJB 모듈에 대해 EJB 클라이언트 JAR 파일을 작성하도록 선택한 경우 엔터프라이즈 Bean의 해당 클라이언트 인터페이스 클래스는 EJB JAR 파일에는 포함되지 않지만 EJB 클라이언트 JAR 파일에 포함됩니다.
EJB 프로젝트

워크벤치에서 프로젝트의 엔터프라이즈 애플리케이션에 대한 자원을 작성 및 유지보수합니다. EJB 프로젝트는 엔터프라이즈 Bean을 구성할 수 있는 논리적 모듈입니다.

워크벤치는 EJB 1.1, EJB 2.0 및 EJB 2.1 프로젝트를 지원합니다. 포함하는 EAR 프로젝트의 J2EE 스펙 레벨은 EJB 2.0 프로젝트의 경우 J2EE 1.3 이상, EJB 2.1 프로젝트의 경우 J2EE 1.4로 설정해야 합니다. EJB 1.1 프로젝트에서는 EJB 1.1 빈만을 작성할 수 있습니다.

EJB 프로젝트는 특수한 Java 프로젝트입니다. Java 프로젝트와 마찬가지로 EJB 프로젝트에는 프로젝트에 필요한 소스 및 출력 파일을 포함할 하나 이상의 소스 폴더가 있어야 합니다. 기본적으로, 소스 폴더의 이름은 ejbModule이지만 프로젝트 또는 새 소스 폴더 작성 시 이름을 변경할 수 있습니다. 프로젝트를 공개 또는 배치할 때 폴더의 컨텐츠가 집계됩니다.

EJB 프로젝트를 소스 폴더로 사용할 수는 없습니다. 소스 폴더로 사용할 경우 오류가 발생합니다. 또한 프로젝트에 둘 이상의 소스 폴더가 있을 수 있지만 하나의 소스 폴더만 MANIFEST.MF 및 배치 디스크립터 파일이 상주하는 META-INF 폴더를 포함할 수 있습니다.

참고: EJB 모듈에 대해 EJB 클라이언트 JAR 파일을 작성하도록 선택한 경우 엔터프라이즈 Bean의 해당 클라이언트 인터페이스 클래스는 EJB 프로젝트에는 포함되지 않지만 별도의 EJB 클라이언트 JAR 프로젝트에 포함됩니다. EJB 클라이언트 JAR 프로젝트는 기타 프로젝트 노드 아래 Java 프로젝트로 프로젝트 탐색기에 표시됩니다.
EJB 클라이언트 프로젝트

EJB 도구는 EJB 모듈용 EJB 클라이언트 JAR 프로젝트 작성을 지원합니다. EJB 클라이언트 JAR 프로젝트에는 클라이언트 프로그램이 EJB 프로젝트에 포함된 엔터프라이즈 Bean의 클라이언트 보기를 사용하는 데 필요한 모든 인터페이스 클래스가 들어 있습니다. EJB 프로젝트에 대한 EJB 클라이언트 프로젝트를 작성하는 경우 새 Java 프로젝트가 작성되어 작업공간에 추가됩니다. EJB 클라이언트 프로젝트는 프로젝트 유틸리티 JAR 파일로 EJB 프로젝트가 속한 각 모듈에 추가됩니다.

기본적으로, 마법사를 사용하여 EJB 프로젝트를 작성할 경우 EJB 클라이언트 JAR 프로젝트도 작성됩니다. 그러나 마법사에서 이 옵션을 지울 수도 있습니다.

팁: 또한 EJB 클라이언트 프로젝트를 모듈로서 EJB 프로젝트를 포함하고 있지 않은 다른 엔터프라이즈 애플리케이션에 추가할 수 있습니다. 이로써 애플리케이션을 내보낼 때 EJB 클라이언트 JAR 파일을 내보내고 패키지화할 수 있습니다.
엔터프라이즈 Bean

엔터프라이즈 Bean은 분산 클라이언트/서버 애플리케이션을 작성하기 위해 다른 자원과 결합할 수 있는 Java 컴포넌트입니다.

엔터프라이즈 Bean에는 엔티티 Bean, 세션 Bean 및 메시지 구동 Bean의 세 가지 유형이 있습니다. 일반적으로, 엔터프라이즈 애플리케이션에서 모든 유형의 빈이 함께 사용됩니다.

엔티티 Bean
엔티티 Bean은 영구 데이터를 저장합니다. CMP(Container-Managed Persistence) 엔티티 Bean은 데이터베이스 연결이 필요합니다. BMP(Bean-Managed Persistence) 엔티티 Bean은 영구 데이터를 Bean 코드에 정의된 방법으로 관리합니다. 예를 들어, 데이터베이스 또는 XML 파일에 쓰는 방법 등이 포함됩니다.
세션 Bean
세션 Bean에는 데이터베이스 액세스가 필수가 아니지만 엔티티 Bean에 액세스하여 간접적으로(필요하면) 데이터베이스 액세스를 확보할 수 있습니다. 세션 Bean은 또한 자원 참조를 통해 직접 데이터베이스(또는 다른 자원)에 액세스할 수도 있습니다.
메시지 구동 Bean
메시지 구동 Bean은 JMS 메시징 시스템에서 메시지 이용자로 작동하는 특수 유형의 엔터프라이즈 Bean입니다. 표준 JMS 메시지 이용자와 더불어, 메시지 구동 Bean은 메시지 컨텐츠를 기반으로 비즈니스 로직을 수행합니다. 메시지 구동 Bean 인스턴스의 동적 작성 및 할당은 다양한 방법으로 Stateless 세션 엔터프라이즈 Bean의 동작을 모방합니다. 그러나 메시지 구동 Bean은 몇 가지 면에서 Stateless 세션 엔터프라이즈 Bean(및 다른 유형의 엔터프라이즈 Bean)과는 구별됩니다.
  • 메시지 구동 Bean은 여러 JMS 메시지를 직렬화된 시퀀스의 메소드 호출이 아닌 비동기식으로 처리합니다.
  • 메시지 구동 Bean은 홈 또는 원격 인터페이스가 없으므로 내부 또는 외부 클라이언트가 직접 액세스할 수 없습니다.
배치 디스크립터

배치 디스크립터는 런타임 환경이 애플리케이션을 위해 사용하는 구성을 포함합니다. 배치 디스크립터에는 다음에 관한 정보가 담겨 있을 수 있습니다.

  • 애플리케이션의 구조 및 컨텐츠(예: 엔터프라이즈 Bean).
  • 내부 및 외부 종속성에 대한 참조. 예를 들어, EJB 모듈의 엔터프라이즈 Bean은 같은 모듈에서 번들로 묶이지 않은 다른 엔터프라이즈 Bean을 필요로 할 수 있습니다.
  • URL 또는 JDBC 데이터 소스와 같은 자원 팩토리 오브젝트에 대한 참조.
  • 애플리케이션에 대한 필수 액세스 제어를 구현할 때 컨테이너가 사용하는 보안 역할.
  • 컨테이너가 애플리케이션의 트랜잭션을 관리하는 방법(및 관리 여부)에 대한 트랜잭션 정보.

배치 디스크립터는 Java 아카이브 파일 내의 애플리케이션 파일로 패키지되어 있는 XML 파일입니다. EJB 배치 디스크립터는 ejb-jar.xml이라고 하며 EJB 프로젝트의 META-INF 폴더에 있습니다. J2EE 애플리케이션은 전반적으로 애플리케이션을 관리하는 하나의 애플리케이션 레벨의 배치 디스크립터 파일을 포함합니다. 또한 애플리케이션에서 각 모듈에 하나씩 여러 컴포넌트 레벨의 배치 디스크립터도 포함합니다.