개념: J2EE 개요
이 가이드라인은 J2EE 플랫폼에 대한 전체 개요를 제공합니다.
관계
기본 설명

소개

오늘날 복잡한 분산 응용프로그램의 발빠른 e-business 세계에서 엔터프라이즈 응용프로그램을 신속하게 시장에 내놓는 것이 중요합니다. 이것은 프로젝트 팀이 원격 연결성, 이름 지정, 지속성, 보안 또는 트랜잭션 관리와 같이 시스템 레벨 서비스 개발에 시간을 들일 여유가 없음을 의미합니다. 프로젝트 팀은 재사용가능한 컴포넌트를 개발하고 이식할 수 있어야 하며, 사용자는 신뢰할 수 있는 아키텍처 고안에 시간을 소비하려고 하지 않습니다.

J2EE™(Java™ 2 Platform, Enterprise Edition)에서는 분산, 다중 층, 컴포넌트 기반 Java 응용프로그램을 개발하고 실행하기 위해 잘 문서화된, 표준 기반 프레임워크를 제공하여 이러한 요구사항을 처리합니다. 이 프레임워크는 원격 연결성, 이름 지정, 지속성, 보안 및 트랜잭션 관리와 같은 응용프로그램의 많은 하위 레벨 복잡도를 처리하며, 개발자가 응용프로그램의 비즈니스 로직에 자유로이 전념할 수 있게 합니다.

J2EE 플랫폼은 다음으로 구성됩니다.

  • 컴포넌트가 실행하는 J2EE 플랫폼 및 J2EE 컴포넌트의 표준 세트.
  • J2EE 응용프로그램을 개발하는 방법에 대한 강력한 사례 정보를 제공하며, J2EE 플랫폼을 자세히 설명하는 응용프로그램 개발의 청사진.
  • 상업용 J2EE 제품을 평가할 수 있는 표준으로 Sun Microsystems Inc.에서 제공하는 J2EE 플랫폼의 참조 구현. 참조 구현은 완전 개발된 샘플 응용프로그램을 포함합니다.
  • J2EE 표준에 대해 상업용 J2EE 구현을 테스트하고 평가하기 위한 호환성 테스트 도구.

J2EE 플랫폼은 사용자 컴퓨터의 운영 체제 사용 프로그래밍 도구에서 제공하는 서비스와 유사하며, 운영 체제는 디스크 액세스, 메모리, 비디오 출력, 네트워킹 등의 하위 레벨 관리에 관계 없이 응용프로그램을 개발 및 실행할 수 있도록 최상위에 표준 서비스를 제공합니다. 기본 시스템의 세부사항이 아닌 사용자 응용프로그램의 세부사항과 관련됩니다. J2EE 플랫폼은 엔터프라이즈 응용프로그램에 복잡한 운영 체제를 제공합니다.

J2EE 플랫폼을 사용하여, 프로젝트 팀이 시스템 레벨 문제를 해결하는 데 중요한 개발 시간을 소비하는 대신 응용프로그램의 실제 비즈니스 로직에 에너지를 모을 수 있도록 개발 노력을 단순화합니다. 응용프로그램에서 필요로 하는 모든 기본 서비스를 전달하는 방식에 초점을 두는 대신 응용프로그램이 무엇을 수행하는지에 초점을 둘 수 있는 프로젝트 팀은 적시에 사용자의 요구사항에 맞는 버그가 없는 시스템을 전달할 가능성이 높습니다.

자세한 정보는 http://java.sun.com/의 Sun의 J2EE 플랫폼 개요를 참조하십시오(Products & API > Java™ 2 Platform, Enterprise Edition (J2EE™) > Overview 링크 수행).

J2EE 개발 요약

응용프로그램 개발자 관점:

  • J2EE 준수 서버의 양식으로 상업용 J2EE 플랫폼을 구매합니다. J2EE 서버의 동작이 J2EE 표준에 따라 지정됩니다.
  • 기존 J2EE 컴포넌트를 구입하거나 개발합니다.
  • J2EE 컴포넌트에서 필요로 하는 모든 서비스를 제공하는 J2EE 준수 서버에서 J2EE 컴포넌트를 배치하고 실행합니다.

예제

J2EE 응용프로그램의 간단한 예는 e-commerce 사이트이며, 여기에서 클라이언트(사용자)는 웹 브라우저를 사용하여 원격으로 J2EE 서버에 액세스합니다. J2EE 서버는 웹 층비즈니스 층 서비스를 제공하며, RDBMS 액세스를 제공하는 엔터프라이즈 정보 시스템(백엔드) 층과 상호 작용합니다.

J2EE 사용 이유

다음 설명이 적용되는 경우 Java e-commerce 또는 엔터프라이즈 응용프로그램을 개발하기 위해 J2EE 플랫폼을 사용합니다.

이러한 각 사항은 이 섹션의 나머지에서 자세히 설명됩니다.

표준화되고, 산업 테스트를 마침

J2EE 컴포넌트는 J2EE 준수 서버의 일부분으로 제공되는 J2EE 컨테이너에서 실행합니다. 이 컨테이너는 J2EE 컴포넌트에서 사용하는 표준 서비스(API) 세트를 제공합니다. API는 다음과 같습니다.

  • J2SE 1.4
    • JDBC
    • Java IDL
    • RMI-IIOP
    • JNDI
    • JAAS
  • JTA
  • JavaMail
  • JMS.
    JMS에 대한 자세한 정보는 개념: JMS(Java Messaging Service)를 참조하십시오.
  • JAF
  • EJB
  • Java Servlet
  • JAXP
  • Java Connector(참고: J2EE 1.3 이전에는 지원되지 않음)
  • JSP
  • J2EE의 웹 서비스(참고: J2EE 1.4 이전에서는 지원되지 않음)
  • JAX-RPC(Java API for XML-based RPC)(참고: J2EE 1.4 이전에는 지원되지 않음)
  • SAAJ(SOAP with Attachments API for Java)(참고: J2EE 1.4 이전에는 지원되지 않음)
  • JAXR(Java API for XML Registries)(참고: J2EE 1.4 이전에는 지원되지 않음)
  • J2EE Management(참고: J2EE 1.4 이전에는 지원되지 않음)
  • JMX(Java Management Extensions)(참고: J2EE 1.4 이전에는 지원되지 않음)
  • J2EE Deployment(참고: J2EE 1.4 이전에는 지원되지 않음)
  • JACC(참고: J2EE 1.4 이전에는 지원되지 않음)

이식성

J2EE 컴포넌트 및 응용프로그램은 J2EE 준수 서버에서 이식 가능하며 코드 수정이 필요하지 않으므로, XML(eXtended Markup Language) 배치 설명자 파일에 포함된 서버 특정 배치 정보만을 갱신하여 사용자 선택사항의 J2EE 준수 서버로 사용자 응용프로그램을 배치할 수 있습니다.

J2EE 스펙의 표준화는 산업 경쟁에 이르게 되므로 사용자는 요구사항과 예산에 맞게 J2EE 준수 서버를 선택합니다.

재사용가능한 컴포넌트

J2EE 표준과 일치하므로, J2EE 컴포넌트는 개발(특히 디버깅 및 테스트) 노력을 줄이며 재고화시켜 필요할 때 J2EE 응용프로그램으로 플러그인될 수 있습니다.

컴포넌트를 개발하면 필요한 경우 다른 응용프로그램에서 재사용하거나 다른 J2EE 준수 서버로 배치할 수 있습니다.

신뢰할 수 있는 아키텍처 및 디자인 패턴

J2EE 플랫폼은 잘 구조화된 다중 층 응용프로그램 아키텍처를 정의합니다. J2EE 아키텍처를 사용하여, 개발자는 응용프로그램의 실제 비즈니스 로직 개발을 신속하게 진척시킬 수 있습니다.

J2EE 문서는 다음을 포함합니다.

  • J2EE 응용프로그램을 개발하는 방법에 대한 사례 정보를 제공하며 J2EE 플랫폼을 자세히 설명하는 응용프로그램 개발의 청사진.
  • 일반 J2EE 아키텍처 및 디자인 문제점에 대한 솔루션을 설명하는 잘 문서화된 J2EE 패턴(업계 사례).

J2EE 플랫폼에 대한 자세한 정보는 http://java.sun.com/을 참조하십시오(J2EE > Blueprints 링크 수행).

확장성

J2EE는 성능을 증가시키거나 증가된 로드를 충족시키기 위해 다양한 방식으로 확장성을 지원합니다.

  • J2EE 컨테이너의 성능 개선 기능 - 이러한 기능은 자원 풀링(데이터베이스 연결 풀링, 세션 Bean 인스턴스 풀링 및 스레드 풀링), 비동기 메시지 전달 및 효과적인 컴포넌트 라이프사이클 관리를 포함합니다. 예를 들어, 데이터베이스 연결을 여는 데 시간이 다소 소요됩니다. 또한 예를 들어, 라이센스 부여 제한사항으로 인해 데이터베이스 연결이 부족할 수 있습니다. J2EE 플랫폼은 데이터베이스 연결 풀링을 사용하여 이를 관리하며 J2EE 컨테이너는 필요에 따라 컴포넌트에 지정할 수 있는 열린 연결 풀을 보존하여 빠르고 효율적으로 연결될 수 있도록 합니다.
  • 로드 밸런싱은 클러스터링으로 성취될 수 있음 - 여러 시스템에서 다중 서버로 동일한 컴포넌트를 배치합니다. 예를 들어, 라운드 로빈 알고리즘이나 서버 로드에 따라 필요할 때 각 서버로의 로드가 밸런스를 이룰 수 있습니다. J2EE 플랫폼 스펙은 J2EE 서버에서 로드 밸런싱 기능을 필요로 하지 않지만, 최상위 서버에는 이 기능이 권장됩니다. J2EE 서버 벤더는 다양한 로드 밸런싱 솔루션을 제공합니다.
  • 응용프로그램 분할 - 논리적으로 구분된 응용프로그램 파트는 여러 서버로 배치될 수 있습니다. 예를 들어, 온라인 메일 주문 응용프로그램 목록과 회계 서브시스템을 별도의 서버로 배치합니다.

개발 및 배치 도구

벤더는 다음을 포함하여 Java IDE에서 J2EE 개발에 대한 우수한 지원을 제공하여 J2EE 도구의 요구사항에 응해 왔습니다.

  • servlet 작성을 위한 마법사
  • EJB 작성 및 유지보수를 위한 마법사 및 대화 상자
  • 배치 설명자 생성 및 유지보수
  • EJB 오브젝트에서 데이터베이스로의 맵핑(컨테이너 관리 관계에 대한 배치 설명자 정보 생성 포함)
  • 웹 서비스 테스트를 위한 웹 컨테이너와의 통합
  • J2EE EJB 컨테이너 및 관련 배치 도구와의 통합에 의해 EJB의 한결같은 IDE 배치, 디버그 및 테스트
  • J2EE 테스트 클라이언트의 자동 생성
  • UML 모델링 도구와의 통합

백엔드 통합

백엔드는 응용프로그램의 EIS(Enterprise Information System) 층을 나타냅니다. 예를 들어, 백엔드 시스템은 RDBMS, 레거시 시스템 또는 ERP(Enterprise Resource Planning) 시스템일 수 있습니다.

J2EE는 JDBC 및 JTA API를 사용하여 RDBMS EIS에 대한 트랜잭션 액세스를 지원합니다. 그리고 EJB 컨테이너는 트랜잭션 RDBMS 연결 및 액세스가 컨테이너에 의해 자동으로 처리되는 컨테이너 관리 지속성을 지원합니다.

J2EE의 커넥터 아키텍처 SPI(Service Provider Interface)는 비RDBMS EIS 자원을 J2EE 컨테이너에 연결하기 위한 표준을 정의합니다. EIS 특정 자원 어댑터(EIS 벤더가 제공)는 해당 EIS에 대한 안전한 트랜잭션 지원을 제공하도록 컨테이너를 확장하여 J2EE 컨테이너로 플러그인됩니다. 그런 다음, 컨테이너의 컴포넌트가 J2EE 커넥터 아키텍처 SPI를 통해 EIS에 액세스할 수 있습니다.

참고: J2EE의 커넥터 아키텍처 SPI는 J2EE 1.3 이전에서는 지원되지 않습니다.

보안

J2EE는 간단하고 강력한 보안 기능을 제공합니다. J2EE 컴포넌트의 보안 정보는 배치 설명자에서 정의됩니다. 이 정보는 컴포넌트의 특정 URL 및/또는 메소드를 액세스하도록 권한 부여된 보안 역할을 정의합니다. 보안 역할은 단순히 사용자 그룹화를 위한 논리 이름입니다. 예를 들어, 조직의 관리 팀 구성원 모두에게 "관리자" 역할을 지정할 수 있습니다.

보안 정보는 배치 설명자에서 선언되므로, 비싼 코드 갱신-디버그-테스트 주기없이 보안 동작을 변경할 수 있습니다.

다중 층 아키텍처

J2EE는 클라이언트 층, 중간 층EIS 또는 백엔드 층으로 구성된 다중 층 분산 응용프로그램 아키텍처입니다.

그림 1은 J2EE 컴포넌트를 지원하는 다양한 J2EE 컨테이너와 J2EE 플랫폼의 다중 층 아키텍처를 표시합니다.

함께 표시된 텍스트에서 설명되는 다이어그램.

그림 1: J2EE 다중 층 아키텍처

클라이언트 층

클라이언트 층 컴포넌트는 클라이언트 컨테이너에서 실행됩니다. 클라이언트 층은 다음 방식으로 구현될 수 있습니다.

  • 독립형 Java 응용프로그램 - 일반적으로 GUI("thick 클라이언트"라고도 함). 이러한 Java 응용프로그램은 모든 클라이언트 시스템에 설치되어야 합니다. Java 응용프로그램은 JDBC와 같은 API를 통해 EIS 층 또는 중간 층에 액세스할 수 있습니다.
  • 정적 HTML 페이지 - 응용프로그램에 제한된 GUI를 제공합니다.
  • 동적 HTML - JSP 페이지 또는 servlet에 의해 생성됩니다.
  • 애플릿 - 웹 브라우저에서 실행됩니다. 애플릿은 HTML 페이지에 임베드되며 보통 GUI를 제공하기 위해 사용됩니다.

중간 층

중간 층은 웹 층비즈니스 층으로 구성됩니다. 웹 층 컴포넌트는 웹 컨테이너를 제공하는 J2EE 웹 서버에서 실행됩니다. 비즈니스 층 컴포넌트는 EJB 컨테이너를 제공하는 J2EE 응용프로그램 서버에서 실행됩니다.

웹 층

웹 층 컴포넌트는 servletJSP 페이지를 포함하여, 클라이언트 층과의 상호 작용을 관리하며 비즈니스 및 EIS 층으로부터 클라이언트를 격리시킵니다. 클라이언트는 웹 층의 요청을 작성하며, 웹 층에서는 요청을 처리하며 결과를 클라이언트로 리턴합니다. 일반적으로 웹 층의 컴포넌트에 대한 클라이언트 요청은 차례로 EIS 층으로의 요청을 일으킬 수 있는 비즈니스 층의 컴포넌트에 대한 웹 층 요청을 발생시킵니다.

비즈니스 층

비즈니스 층 컴포넌트는 EJB입니다.

  • 응용프로그램 비즈니스 로직을 포함합니다.
  • 일반적으로 웹 층으로부터의 요청에 응답하여 비즈니스 로직에 따라 EIS 층에 요청을 작성합니다.

EIS 층

EIS 층은 흔히 RDBMS의 양식으로 응용프로그램의 저장된 데이터를 표시합니다. 또한 EIS 층은 J2EE 커넥터 아키텍처 API를 통해 액세스되는 레거시 시스템 또는 ERP 시스템으로 구성될 수 있습니다.

J2EE 커넥터 아키텍처 API에 대한 자세한 정보는 http://java.sun.com/을 참조하십시오(Products & Technologies > J2EE > J2EE Connector Architecture 링크 수행).

J2EE의 표준 배치 구성에 대한 자세한 정보는 개념: J2EE 배치 구성을 참조하십시오.

J2EE 서버

J2EE 서버는 J2EE 플랫폼을 구현하는 상업용 제품입니다. 상업용 J2EE 서버의 예는 BEA WebLogic, Borland Enterprise Server, IBM WebSphere 및 iPlanet입니다.

"J2EE 서버" 용어의 사용은 다소 자유롭습니다. 일반적으로, "웹 컨테이너 및 EJB 컨테이너를 모두 지원하는 J2EE 서버"를 의미합니다. 더 압축된 용어를 사용하면 J2EE 웹 서버(예: J2EE 참조 웹 서버 구현 Tomcat)는 웹 컨테이너를 지원하며, J2EE 응용프로그램(또는 EJB) 서버는 EJB 컨테이너를 지원합니다.

J2EE 컨테이너

J2EE 컴포넌트는 보통 상업용 J2EE 서버의 일부분으로 제공되는 J2EE 컨테이너에서 실행되거나 호스트됩니다. 컨테이너는 런타임 환경 및 표준 서비스(API) 세트를 컨테이너에서 실행 중인 J2EE 컴포넌트에 제공하며, 표준 J2SE API를 지원합니다.

J2EE는 다음과 같은 유형의 컨테이너를 정의합니다.

응용프로그램 클라이언트 컨테이너

J2EE 응용프로그램 클라이언트는 다음 J2EE API를 지원하는 응용프로그램 클라이언트 컨테이너에서 실행됩니다(JDBC, JMS, JAXP, JAAS, JavaMail, JAF, JSR, JAX-RPC, SAAJ, J2EE Management 및 JMX).

실제로, 응용프로그램 클라이언트 컨테이너는 표준 J2SE 설치로 구성됩니다. 응용프로그램 클라이언트 컨테이너는 JAAS 콜백 핸들러 인터페이스를 지원하여 웹 및 EJB 컨테이너의 나머지 엔터프라이즈 응용프로그램의 보안 제한사항을 충족시켜야 합니다.

애플릿 컨테이너

애플릿은 애플릿 프로그래밍 모델을 지원하며 표준 J2SE API를 지원하는 애플릿 컨테이너에서 실행됩니다. 실제로 애플릿 컨테이너는 웹 브라우저에 대한 Java 플러그인으로 제공됩니다.

웹 컨테이너

웹 컴포넌트(JSP 페이지servlets)는 J2EE 서버의 일부분으로 제공되거나 독립형 J2EE 웹 서버로 제공되는 웹 컨테이너에서 실행됩니다. 웹 컨테이너는 다음 J2EE API 및 패키지를 지원합니다(JDBC, JMS, JAXP, JAX-RPC, JAXR, JAAS, Java Mail, JAF, J2EE 커넥터 아키텍처, JTA, JSR, SAAJ, J2EE Management, Java Servlet 및 JSP).

EJB 컨테이너

EJB 컴포넌트는 J2EE 서버의 일부분으로 제공되는 EJB 컨테이너에서 실행됩니다.

EJB 컨테이너는 다음 J2EE API 및 기술을 지원합니다(EJB, JDBC, JMS, JAXP, JAX-RPC, JAXR, JAAS, Java Mail, JAF, JTA, JSR, SAAJ, J2EE Management 및 J2EE 커넥터 아키텍처).

다음 서브섹션에서는 EJB 컨테이너에서 지원하는 핵심 기능성을 요약합니다.

원격 커뮤니케이션

EJB 컨테이너는 EJB 인터페이스를 구현하는 컨테이너 제공 클래스(클라이언트의 사용을 위해 RMI 스텁 클래스와 함께, EJB 컴파일 시 컨테이너 도구로 생성됨)를 사용하여 개발자로부터 원격 커뮤니케이션의 복잡도를 숨깁니다. 이 구현 클래스는 클라이언트가 Java RMI를 사용하여 액세스할 수 있는 원격 Java 오브젝트입니다. 클라이언트 관점에서 클라이언트는 원격 커뮤니케이션을 고려하지 않고 단순히 EJB 인터페이스에서 메소드를 호출합니다.

동시성

EJB 컨테이너는 여러 클라이언트로부터의 동시 요청을 투명하게 관리합니다. 클라이언트는 EJB에 대한 독점 액세스가 있는 것처럼 실행될 수 있습니다. 예를 들어, 양쪽 클라이언트에서 동일한 엔티티 EJB를 요청하는 경우, 컨테이너는 각 클라이언트에 클라이언트 자체 인스턴스를 제공하며 클라이언트의 지식 없이 내부적으로 동기화를 관리합니다.

이름 지정

EJB 컨테이너는 컨테이너에서 배치된 EJB를 찾기 위한 JNDI 이름 공간을 제공합니다. EJB 클라이언트는 홈 인터페이스를 얻기 위해 EJB를 찾아볼 수 있습니다. EJB의 홈 인터페이스는 EJB 인스턴스를 찾고 작성하는 메소드를 제공합니다. JNDI 이름 지정 컨텍스트가 해당 위치에서 사용 가능한 경우, 클라이언트는 EJB에 액세스할 수 있습니다.

지속성

EJB 개발자는 엔티티 EJB 지속적 데이터의 기억장치에 대한 다음과 같은 두 개의 스키마 중 선택할 수 있습니다(CMP 및 BMP). CMP는 컨테이너로의 데이터 액세스 코드 구현의 책임이 있는 반면, BMP는 EJB 개발자가 해당 코드 구현을 책임지도록 합니다. CMP는 EJB 개발자가 단순히 개발 설명자에서 컨테이너 관리 필드를 선언하여 지속적 기억장치에 대한 표준 액세스 구현을 사용하게 합니다.

트랜잭션 관리

트랜잭션은 자동으로 성공하거나 실패하는 일련의 오퍼레이션입니다. 따라서 그 중 어떠한 오퍼레이션이라도 실패하면 시스템 상태를 변경할 수 없습니다. 예를 들어, 항공 티켓을 발행하려고 하는 경우, 고객 신용 카드 계정의 유효성을 확인하고 해당 계정에 지불한 후 티켓을 발행합니다. 이러한 일련의 오퍼레이션은 어떤 한 오퍼레이션에 실패하는 경우 고객의 신용 카드 계정을 변경하지 않고 티켓도 발행되지 않도록 단일 트랜잭션으로 발생해야 합니다.

EJB는 다음 두 표제에서 설명하는 Bean 관리 트랜잭션 구분 또는 컨테이너 관리 트랜잭션 구분을 사용할 수 있습니다.

Bean 관리 트랜잭션 구분

Bean 관리 트랜잭션 구분에서는 단순 API를 사용하여 트랜잭션 경계를 구분지을 수 있습니다. 이것은 프로그램으로 트랜잭션 구분을 제어하기 위해 사용하는 JTA(Java Transaction API)입니다. 예를 들어, JTA UserTransaction 인터페이스의 begin(), commit()rollback() 메소드를 호출합니다. 컨테이너가 이를 자동으로 처리하지 않으면, 개발자가 트랜잭션 예외 조건에 대한 롤백 로직 코딩에 책임이 있습니다.

참고: 엔티티 EJB는 Bean 관리 트랜잭션 구분을 사용할 수 없으며 컨테이너 관리 트랜잭션 구분만 사용할 수 있습니다.

컨테이너 관리 트랜잭션 구분

컨테이너 관리 트랜잭션 구분에서는 트랜잭션을 시작하고 끝내기 위한 코드를 제공하지 않습니다. 대신, EJB의 각 메소드에 해당하는 EJB 배치 설명자에 트랜잭션 속성 정보를 제공합니다. 트랜잭션 속성(Required, RequiresNew, NotSupported, Supports, Mandatory 또는 Never 중 하나)은 메소드에 사용되는 트랜잭션 범위를 컨테이너에 알립니다. 예를 들어, 클라이언트가 트랜잭션에서 실행 중이며 트랜잭션 속성이 Required로 설정된 EJB의 메소드를 호출하는 경우, 기존 트랜잭션의 범위에서 메소드가 호출됩니다.

가능할 때마다 Bean 관리 트랜잭션 구분보다는 컨테이너 관리 트랜잭션 구분을 사용하여 사용자 컴포넌트에서 트랜잭션 구분 코드를 추가, 디버그 및 테스트할 필요가 없게 하십시오. 대신 각 EJB 메소드의 트랜잭션 동작은 배치 설명자에서 배치 시간에 지정됩니다. 이것은 비싼 코드 갱신-디버그-테스트 주기 없이 트랜잭션 동작을 변경할 수 있음을 의미합니다.

분산 트랜잭션

분산 트랜잭션은 여러 데이터베이스 및/또는 여러 응용프로그램에서 조정되어야 하는 트랜잭션입니다. 이것은 단일 데이터베이스에 트랜잭션을 확약하는 중앙 집중식 트랜잭션(예: 단일 J2EE 응용프로그램 서버)과 대조되는 것입니다.

예를 들어, 갱신 중인 둘 이상의 데이터베이스가 있는 분산 트랜잭션에서는 2 단계 확약이 필요합니다. 일부 EJB 컨테이너(예: BEA WebLogic Server 6.0)는 Open Group의 XA 프로토콜을 사용하여 2단계 확약의 지원을 제공합니다. 응용프로그램 프로그래머는 2단계 확약을 처리하기 위한 코드를 작성할 필요가 없으며, EJB 컨테이너가 이를 관리합니다.

보안 관리

EJB 보안은 배치 설명자의 보안 정보를 사용하여 EJB 컨테이너에서 처리됩니다. 배치 설명자에서는 역할 세트를 선언하며 각 EJB 메소드에 대해 메소드를 호출할 수 있는 권한이 부여된 역할을 선언합니다.

런타임에 EJB의 각 클라이언트가 역할에 지정되며, EJB 컨테이너는 클라이언트 역할이 해당 메소드를 호출하도록 권한 부여되었는지 확인하여 EJB의 메소드에 대한 액세스를 관리합니다.

보안 정보는 배치 설명자에서 선언되므로, 비싼 코드 갱신-디버그-테스트 주기없이 보안 동작을 변경할 수 있습니다.

라이프사이클 관리

EJB는 클라이언트 요청에 응답하여 라이프사이클 중 일련의 상태를 이동합니다. EJB 컨테이너가 이 라이프사이클 관리에 책임이 있습니다.

컨테이너 시작 시, 컨테이너는 자원 풀에서 EJB 인스턴스의 풀을 작성합니다(EJB 자원이 필요할 때 시작 시간을 절약하기 위해). EJB 클라이언트가 EJB의 작성을 요청하면, 인스턴스가 풀에서 지정됩니다. 이제 클라이언트가 EJB의 요청을 작성할 수 있습니다. EJB 클라이언트가 EJB의 제거를 요청하면 해당 인스턴스가 풀로 리턴됩니다.

컨테이너는 다음과 같이 표준 콜백 메소드 세트를 사용하여 EJB 라이프사이클에서 다양한 이벤트의 EJB 인스턴스를 알립니다.

  • ejbCreate() - EJB 인스턴스가 작성된 이후에 컨테이너가 호출함
  • ejbRemove() - EJB 인스턴스를 삭제하려고 할 때 컨테이너가 호출함
  • ejbActivate() - EJB 인스턴스가 수동 상태에서 복원된 이후에 컨테이너가 호출함
  • ejbPassivate() - EJB 인스턴스가 패시베이션될 때 컨테이너가 호출함
  • eojbStre() - EJB 인스턴스를 데이터베이스에 쓰려고 할 때 컨테이너가 호출함
  • ejbLoad() - EJB 인스턴스가 데이터베이스에서 로드된 후에 컨테이너가 호출함

대개 콜백 메소드의 EJB 구현은 비어 있지만, 이 콜백을 구현하려면 각 EJB가 필요합니다. 예를 들어, 컨테이너는 EJB의 ejbRemove() 메소드를 호출하여 EJB가 제거되려고 함을 EJB에 알립니다(EJB를 제거하려는 클라이언트 요청이 있었음). EJB의 ejbRemove() 메소드에서 EJB를 제거할 수 있기 전에 필요한 오퍼레이션(예: EJB가 보유한 자원을 해제)을 코딩합니다.

EJB는 컨테이너에서 필요할 때 패시베이션될 수 있습니다. 즉 상태 정보가 저장되고 EJB 인스턴스가 자원 풀에서 사용 가능해집니다. 특정 EJB 오브젝트에 대한 클라이언트 요청이 수신되는 경우 패시베이션된 EJB는 컨테이너가 복원하는 활성화된 상태 정보입니다.

데이터베이스 연결 풀링

데이터베이스 연결을 여는 데 오래 걸립니다. 또한 예를 들어, 라이센스 부여 제한사항으로 인해 데이터베이스 연결이 부족할 수 있습니다. EJB 컨테이너는 데이터베이스 연결 풀링을 통해 이 손실을 관리하며, 컨테이너는 필요할 때 EJB에 지정되고 미지정될 수 있는 열린 연결 풀을 보유하여 유지하여 효과적으로 연결될 수 있게 합니다.

CMP를 사용하는 엔티티 EJB의 경우, 데이터베이스 연결은 자동으로 처리됩니다. 연결 또는 SQL 코드를 작성할 필요가 없습니다. 단순히 EJB 배치 설명자에서 JDBC 데이터 소스의 JNDI 이름을 지정하고 컨테이너 특정 배치 도구를 사용하여 사용자의 연결 루틴을 생성합니다. 컨테이너가 데이터베이스 연결 풀을 관리합니다.

BMP를 사용하는 엔티티 EJB 또는 세션 EJB의 경우, JDBC 데이터 소스에 연결하기 위해 연결 코드를 작성하고 데이터베이스를 액세스하기 위해 SQL 코드를 작성할 필요가 있습니다. JDBC 데이터 소스는 여전히 컨테이너에 의해 관리되며, JDBC 데이터 소스는 실제로 컨테이너에서 유지보수되는 데이터베이스 연결 풀을 사용합니다.

메시지 전달

메시지의 비동기 교환을 위해 메시지 전달 지원을 제공하려면 EJB 컨테이너가 필요합니다. JMS 또는 기타 메시지 전달 유형은 메시지 구동 EJB에 의해 전달 메시지 처리에 사용될 수 있습니다. EJB는 JMS와 연관되므로 servlet, JSP 페이지 및 EJB와 같은 웹 및 EJB 컨테이너 컴포넌트에서 트랜잭션 액세스를 지원해야 합니다.

J2EE 컴포넌트

다음 섹션에서는 모든 유형의 J2EE 컴포넌트에 대한 간략한 설명을 제공합니다. J2EE 컴포넌트는 애플릿, 응용프로그램 클라이언트, 웹 컴포넌트엔터프라이즈 JavaBean을 포함합니다. J2EE 컴포넌트는 J2EE 컨테이너에서 실행됩니다.

애플릿

애플릿은 웹 페이지와 함께 전송되고 웹 브라우저에서 실행될 수 있는 작은 프로그램입니다. 또한 애플릿 프로그래밍 모델을 지원하는 기타 환경에서도 실행될 수 있습니다.

애플릿은 주로 사용자 인터페이스 구현에 사용되며 HTML 페이지의 성능을 크게 확장시킬 수 있습니다.

응용프로그램 클라이언트

응용프로그램 클라이언트는 Java 응용프로그램입니다. J2EE 중간 층 및 EIS 층의 기능에 액세스합니다. 보통 사용자 인터페이스를 제공하는 데스크탑 응용프로그램입니다. 개념: 분배 패턴의 설명대로 "thick 클라이언트"를 구현하는 데 사용할 수 있습니다.

웹 컴포넌트

Java Servlet

Java Servlet 기술은 웹 서버가 웹 클라이언트로부터의 요청을 처리하고 동적 컨텐츠를 포함하는 응답을 제공하게 합니다. Java servlet은 기타 웹 및 EJB 컴포넌트와 상호 작용하여 이러한 동적 컨텐츠를 생성합니다. 생성된 컨텐츠는 HTML 및 XML을 포함하여 텍스트 기반 문서의 양식을 취할 수 있습니다. 또한 Java Servlet은 JAX-RPC API와의 협업에서 웹 서비스 종료점으로 사용할 수 있습니다.

참고: 웹 서비스 종료점으로서의 Servlet 사용은 J2EE 1.4(JAX-RPC 1.1)의 새 기능이므로 이전 버전에서는 지원되지 않습니다.

J2EE servlet에 대한 자세한 정보는 http://java.sun.com/을 참조하십시오(J2EE > Blueprints 링크 수행).

JSP

JSP(JavaServer Pages) 기술은 Java Servlet에 근거하지만, 코드 기반이 아니라 텍스트 기반입니다. JSP 페이지는 servlet과 같이 요청을 처리하고 응답을 생성하지만, 로직은 주로 프리젠테이션 위주입니다. JSP 페이지는 주로 JavaBean 및 EJB와 같은 기타 소스에서 획득된 데이터의 프리젠테이션의 형식을 정의하는 정적 HTML을 포함합니다. 웹 컴포넌트 개발자는 사용자 정의 태그 라이브러리를 작성하여 JSP를 확장하고 새 성능을 추가할 수 있습니다.

JSP에 대한 자세한 정보는 http://java.sun.com/을 참조하십시오(J2EE > Blueprints 링크 수행).

HTML 페이지

HTML 페이지는 사용자 인터페이스를 지원하기 위해 사용될 수 있습니다. 정적 웹 페이지로 정의되거나, servlet 및 JSP 페이지로 생성될 수 있습니다. J2EE 스펙에서는 J2EE 웹 클라이언트가 HTML 페이지의 표시를 지원하도록 요구합니다.

JavaBean

JavaBean API는 단순 재사용가능한 컴포넌트 작성을 위한 아키텍처를 정의합니다. 이 명령은 응용프로그램 빌더 도구를 사용하여 편집 및 어셈블될 수 있습니다. 일반 Java 코드는 JavaBean을 구현하기 위해 사용되어, 도구에 대해서는 물론 이 컴포넌트를 사용할 수 있는 기타 프로그래머가 구현을 읽을 수 있습니다.

JavaBean은 J2EE 기술이 아니지만, J2EE 기술에 의해 사용됩니다. 예를 들어, EJB는 값 오브젝트로 JavaBean을 사용할 수 있습니다. JavaBean 및 엔터프라이즈 JavaBean 간의 차이점은 JavaBean 및 EJB 비교 섹션을 참조하십시오.

JavaBean에 대한 자세한 정보는 개념: JavaBean을 참조하십시오.

엔터프라이즈 JavaBean

엔터프라이즈 JavaBean 스펙은 컴포넌트 기반, 트랜잭션 분산 비즈니스 응용프로그램의 개발 및 배치의 아키텍처를 규정합니다.

EJB 스펙으로 정의되는 컴포넌트를 EJB(Enterprise JavaBean)라고 합니다. EJB는 사용자 응용프로그램의 비즈니스 규칙을 구현하는 서버측 Java 컴포넌트입니다.

EJB는 이전에 트랜잭션 관리, 데이터베이스 연결성보안과 같은 서비스를 제공하는 표제 EJB 컨테이너 아래에서 설명한 EJB 컨테이너라는 환경으로 배치되고 실행됩니다. 이러한 복잡도를 숨겨, EJB 아키텍처는 컴포넌트 개발자가 비즈니스 로직에 초점을 둘 수 있게 합니다.

EJB는 Java 인터페이스, EJB 구현 클래스 및 XML 배치 설명자를 결합한 것입니다. EJB 인터페이스 및 구현 클래스는 특정 인터페이스를 구현하고 특정 콜백 메소드를 제공하는 것과 같이, EJB 스펙으로 정의된 규칙과 일치해야 합니다.

EJB 인터페이스는 EJB 인스턴스를 찾고 작성하는 메소드를 제공하는 홈 인터페이스를 포함하며, 특정 EJB 인스턴스의 비즈니스 메소드를 제공하는 컴포넌트 인터페이스를 포함합니다. 이것은 네트워크에서 호출될 수 있음을 의미하는 원격 인터페이스 또는 호출자가 동일한 프로세스(더 정확하게, 동일한 JVM)에 있어야 함을 의미하는 로컬 인터페이스일 수 있습니다. EJB 인터페이스는 메소드를 EJB 구현 클래스로 위임하는 EJB 컨테이너 클래스에 의해 구현됩니다. 예외는 컨테이너 클래스에서 처리되는 컨테이너 관리 엔티티 EJB의 파인더 메소드입니다.

세 가지 유형의 EJB가 있습니다(세션 Bean, 엔티티 Bean메시지 구동 Bean).

EJB에 대한 자세한 정보는 http://java.sun.com/을 참조하십시오(J2EE > Blueprints 링크 수행).

세션 Bean

세션 Bean 컴포넌트는 클라이언트 특정 비즈니스 로직을 구현하는 서비스를 제공합니다. 단일 클라이언트는 로컬 또는 원격 인터페이스를 통해 각 세션 Bean 인스턴스에 액세스할 수 있습니다. 세션 Bean은 데이터를 데이터베이스에 저장할 수 있지만, 보통 데이터를 저장하기 위해 비즈니스 오브젝트를 나타내는 엔티티 Bean을 호출합니다. 세션 Bean 인스턴스는 임시 대화 상태를 유지보수할 수 있습니다.

세션 Bean에는 데이터베이스의 모든 고객의 콜렉션을 리턴하는 getAllCustomers() 메소드가 있을 수 있습니다. 이 Bean은 고객 엔티티 Bean에서 정보를 얻어 결과를 클라이언트로 전달할 수 있습니다.

Stateless 세션 Bean은 JSR 및 EJB 스펙에서 정의한 대로 웹 서비스 엔드포인트로 사용될 수 있습니다.

참고: 웹 서비스로서의 Stateless 세션 Bean 사용은 J2EE 1.4(JSR 109 및 EJB 2.1)의 새 기능이므로 이전 버전에서는 지원되지 않습니다.

세션 Bean에 대한 자세한 정보는 http://java.sun.com/의 엔터프라이즈 JavaBean 스펙, 버전 2.1을 참조하십시오(Products & Technologies > J2EE > Enterprise JavaBeans 링크 수행).

엔티티 Bean

엔티티 Bean 컴포넌트는 비즈니스 오브젝트 특정 로직을 구현하는 서비스를 제공합니다. 다중 클라이언트는 로컬 또는 원격 인터페이스를 통해 동시에 엔티티 Bean 인스턴스에 액세스할 수 있습니다. 엔티티 Bean은 비즈니스 오브젝트 데이터를 데이터베이스에 저장하고 지속된 데이터는 컨테이너 또는 클라이언트 고장에도 남아 있을 수 있습니다.

엔티티 Bean은 고객을 표시할 수 있으며, 관계형 데이터베이스의 고객 테이블의 행으로 저장될 수 있습니다. EJB 개발자는 지속성 메소드를 선택할 수 있으며, 이 경우 관계형 데이터베이스입니다.

두 가지 유형의 엔티티 Bean 지속성이 있습니다(BMP 및 CMP). BMP 엔티티 Bean은 데이터 액세스 코드를 구현해야 하지만, CMP 엔티티 Bean에는 컨테이너에서 구현된 이 기능이 있습니다. CMP 컨테이너 구현은 보통 관계형 데이터베이스 지속성을 위해 제공되지만, 기타 유형의 지속성(오브젝트 데이터베이스, 파일 기반 지속성 등)도 가능합니다.

엔티티 Bean에 대한 자세한 정보는 http://java.sun.com/의 엔터프라이즈 JavaBeans 스펙, 버전 2.1을 참조하십시오(Products & Technologies > J2EE > Enterprise JavaBeans 링크 수행).

메시지 구동 Bean

메시지 구동 Bean 컴포넌트는 메시지 처리 특정 비즈니스 로직을 구현하는 서비스를 제공합니다. 컨테이너만이 이 서비스를 호출할 수 있으며, 클라이언트는 원격 또는 로컬 인터페이스를 통해 직접 이 서비스를 호출할 수 없습니다. 대신 메시지가 Bean에서 서비스하는 엔드포인트나 목적지에 도달하면, 컨테이너는 목적지에 MessageListener로 지정된 메시지 구동 Bean의 인스턴스를 호출합니다. 메시지 구동 Bean 인스턴스는 대화 상태를 유지보수하지 않지만, 메소드 호출에서 자원 참조(예: 데이터베이스 연결)로 인스턴스 변수를 유지보수할 수 있습니다.

참고: 메시지 구동 Bean은 EJB 2.0 이전에는 지원되지 않습니다. JMS와는 다른 메시지 전달 유형의 지원은 EJB 2.1 스펙의 새 기능이므로 이전 버전에서는 지원되지 않습니다.

메시지 구동 Bean에 대한 자세한 정보는 http://java.sun.com/의 엔터프라이즈 JavaBean 스펙, 버전 2.0을 참조하십시오(Products & Technologies > J2EE > Enterprise JavaBeans 링크 수행).

JavaBean 및 EJB 비교

이름은 유사하지만, EJB는 일반 JavaBean보다 훨씬 더 복잡합니다. 둘 다 재사용가능한 컴포넌트의 아키텍처를 정의하지만, EJB는 분산, 다중 사용자 서비스 작성에 필요한 지원을 추가합니다. 두 유형의 컴포넌트 모두 응용프로그램 빌더 도구를 사용하여 어셈블될 수 있지만, EJB는 실행할 EJB 컨테이너로 배치될 필요가 있습니다.

J2EE 컴포넌트의 서비스(API)

J2EE 컨테이너는 컨테이너 유형에 따른 J2EE API의 서브세트는 물론, 모든 J2SE 표준 API를 지원합니다. 컨테이너 내의 컴포넌트는 이 사용 가능한 서브세트에 액세스할 수 있습니다. 다음 표는 각 API에 대한 간략한 설명을 제공하며 각 API를 사용할 수 있는 J2EE 컨테이너를 나열합니다.

이름
설명
API를 사용할 수 있는
J2EE 컨테이너

EJB 2.1

EJB 스펙은 원격 커뮤니케이션, 트랜잭션 관리, 보안 및 지속성과 같은 서비스를 자동으로 지원하는 EJB-비즈니스 층 컴포넌트의 컴포넌트 모델을 정의합니다.

EJB에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2EE > Enterprise JavaBeans 링크를 참조하십시오.

  • EJB
  • 응용프로그램 클라이언트*
  • 웹*

* 클라이언트 API만

JAAS

JAAS(Java Authentication and Authorization Service)는 조치를 수행할 권한을 가지도록 사용자의 인증 및 권한 부여 서비스를 제공합니다.

JAAS에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2SE > Core Java > Java Authentication and Authorization Service (JAAS) 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

JAF 1.0

JAF(JavaBeans Activation Framework)는 데이터를 식별하고 JavaBean을 인스턴트하여 해당 데이터를 조작할 수 있는 서비스를 제공합니다.

JAF에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2SE > Desktop Java > JavaBeans > JavaBeans Activation Framework 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

JAXP 1.2

JAXP(Java API for XML Processing)는 DOM SAX 또는 XSLT를 사용하는 준수 구문 분석기 및 변환기에서 사용할 수 있는 XML 문서 처리의 추상 인터페이스를 제공합니다.

JAXP에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2EE > Java API for XML Processing (JAXP) 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

JAX-RPC 1.1

JAX-RPC 스펙은 웹 서비스 종료점 구현을 위한 기법은 물론 웹 서비스 액세스를 위한 클라이언트 API를 정의합니다.

JAX-RPC에 대한 자세한 정보는 JAX-RPC/font>를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

J2EE 1.1용 웹 서비스

J2EE용 웹 서비스 스펙(JSR-109)은 J2EE 응용프로그램 서버가
웹 서비스 종료점의 배치를 위해 지원해야 하는 기능을 정의합니다.

J2EE의 웹 서비스에 대한 자세한 정보는 http://jcp.org/aboutJava/communityprocess/final/jsr109/index.html을 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

SAAJ 1.2

SSAJ API는 SOAP 메시지를 조작하는 기능을 제공합니다.

JAXP에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2EE > SOAP with Attachments API for Java (SAAJ) 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

JAXR 1.0

JAXR 스펙은 WebXML 레지스트리 및 UDDI 레지스트리와 같은 XML 기반 레지스트리에 대한 클라이언트 액세스를 위한 API를 정의합니다.

JAXP에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2EE > Java API for XML Registries (JAXR) 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

JavaMail 1.3

JavaMail API는 Java 기반 메일 응용프로그램을 빌드하도록 확장될 수 있는 프레임워크를 제공합니다.

JavaMail에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2EE > JavaMail 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

JDBC 3.0

JDBC(Java Database Connectivity)는 SQL 데이터베이스, 스프레드시트 및 텍스트 파일과 같은 테이블 형식의 데이터 소스에 액세스하기 위한 API입니다.

JDBC에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2EE > JDBC 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

JMS 1.1

JMS(Java Message Service)는 데이터 전송 및 이벤트 알림을 위한 비동기 메시지 전달 서비스를 제공합니다. JMS 사용 시, 메시지 구동 EJB를 사용하여 JMS 주제 및 대기열로 전달되는 메시지를 비동기적으로 처리할 수 있습니다.

JMS에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2EE > Java Message Service 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

JNDI

JNDI(Java Naming and Directory Interface Specification)는 분산 컴포넌트 및 자원을 등록하고 찾아보기 위한 이름 지정 및 디렉토리 서비스를 제공합니다. 클라이언트는 컴포넌트 또는 자원의 등록된 JNDI 이름만 알아도 되며 실제 네트워크 위치를 알 필요는 없습니다.

예: EJB는 배치 설명자 ejb-name 필드를 사용하여 배치 시 엔터프라이즈 디렉토리에 등록됩니다. J2EE 클라이언트는 JNDI 찾아보기를 사용하여 EJB를 찾습니다. 클라이언트는 EJB가 디렉토리에 등록된 이름만 알면 됩니다. JNDI 찾아보기는 EJB의 홈 오브젝트에 대한 참조를 리턴합니다.

JNDI에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2SE > Core Java > Java Naming and Directory Interface (JNDI) 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

JTA 1.0

JTA(Java Transaction API)는 트랜잭션 관리자, 자원 관리자, 응용프로그램 서버 및 응용프로그램 간의 분산 트랜잭션 서비스를 관리하기 위한 인터페이스를 정의합니다.

JTA에 대한 자세한 정보는 http://java.sun.com/ Products & Technologies > J2EE > Transactions 링크를 참조하십시오.

  • EJB

J2EE Connector 1.5

J2EE 커넥터 아키텍처 SPI(Service Provider Interface)는 EIS 자원을 J2EE 컨테이너에 연결하는 표준을 정의하며, EIS 특정 자원 어댑터(EIS 벤더 제공)는 해당 EIS에 대한 안전한 트랜잭션 지원을 제공하도록 컨테이너를 확장하여 J2EE 컨테이너로 플러그인됩니다. 그런 다음, 컨테이너의 컴포넌트가 J2EE 커넥터 아키텍처 SPI를 통해 EIS에 액세스할 수 있습니다.

J2EE 커넥터에 대한 자세한 정보는 http://java.sun.com/ Products & Technologies > J2EE > J2EE Connector Architecture 링크를 참조하십시오.

  • EJB

JSP 2.0

JavaServer Pages 기술은 동적 웹 페이지를 작성하고 유지보수하는 기능을 웹 개발자에게 제공합니다. JSP 페이지는 텍스트 기반이며 XML과 유사한 태그를 사용하여 비즈니스 로직을 수행하고 사용자 정의 컨텐츠를 생성합니다. JSP 기술은 프리젠테이션 로직만 JSP 페이지에 임베드될 필요가 있도록 비즈니스 로직을 다른 컴포넌트에 위임시킵니다.

JSP에 대한 자세한 정보는 http://java.sun.com/ Products & Technologies > J2EE > JavaServer Pages 링크를 참조하십시오.

Servlet 2.4

Java Servlet은 웹 기반 응용프로그램 빌드를 돕기 위해 웹 서버의 성능을 확장시킵니다. Servlet은 기존 비즈니스 시스템에서 획득된 동적으로 생성된 컨텐츠를 통해 웹 서버가 사용자 요청에 응답하는 대화식 웹 응용프로그램에서 자주 사용됩니다.

Java Servlet에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2EE > Java Servlet 링크를 참조하십시오.

RMI-IIOP

RMI-IIOP(Remote Method Invocation technology run over Internet Inter-Orb Protocol)는 Java 컴포넌트가 C++ 또는 Smalltalk와 같은 다른 언어로 작성된 레거시 CORBA 컴포넌트와 통신할 수 있게 합니다.

RMI-IIOP에 대한 자세한 정보는 http://java.sun.com/Products and API > RMI-IIOP 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

J2EE Management 1.0

J2EE Management API는 J2EE 응용프로그램 서버를 조회하여 현재 상태,
배치된 응용프로그램 등을 판별하기 위한 관리 도구에 대한 API를 제공합니다.

RMI-IIOP에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2EE > J2EE Management Specification 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

JMX 1.2

JMX API는 J2EE Management API에서 J2EE 제품의 관리에 필요한 지원을 제공하는 데 사용됩니다.

RMI-IIOP에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2SE > Core Java > Java Management Extensions (JMX) 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

J2EE Deployment 1.1

J2EE Deployment API는 J2EE 응용프로그램 서버에서 제공하는 플러그인 컴포넌트 및 배치 도구의 런타임 환경 간 인터페이스를
정의합니다.

J2EE Deployment에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2EE > J2EE Deployment Specification 링크를 참조하십시오.

JACC 1.0

JACC 스펙은 J2EE 응용프로그램 서버와
권한 부여 정책 제공자 간의 계약을 정의합니다.

JACC에 대한 자세한 정보는 http://java.sun.com/Products & Technologies > J2EE > Java Authorization Contract for Containers 링크를 참조하십시오.

  • 응용프로그램 클라이언트
  • EJB

어셈블리 및 배치

J2EE 응용프로그램은 응용프로그램을 구성하는 하나 이상의 J2EE 모듈과 응용프로그램 배치 설명자(application.xml)로 이루어집니다. 모듈은 재사용가능하고 이식 가능한 컴포넌트입니다. J2EE 응용프로그램은 .ear 아카이브에 패키지됩니다.

배치 설명자

배치 설명자는 J2EE 응용프로그램 및 J2EE 모듈에서 사용되는 XML 파일입니다. 배치 시 J2EE 서버가 읽는 구성 정보를 제공합니다. 이 구성 정보는 서버가 소스 코드 또는 클래스를 변경하지 않고 선언적으로 J2EE 응용프로그램 또는 모듈을 사용자 정의하게 합니다.

각 J2EE 응용프로그램 또는 모듈마다 일반 배치 설명자 유형이 있습니다. EJB 모듈의 ejb-jar.xml과 같은 일반 배치 설명자는 배치되는 서버와 무관하게 EJB에 적용되는 정보를 정의합니다. 서버 특정 배치 설명자는 특정 서버에만 의미가 있는 정보를 지정합니다. 서버 특정 배치 설명자는 나타내려는 서버를 반영하는 이름을 갖습니다.

J2EE 모듈

J2EE 모듈은 다음을 포함하여 모듈을 구성하는 여러 요소와 모듈의 배치 설명자로 구성됩니다.

  • 웹 서버에서 배치되는 비Java 요소(JSP 페이지, 이미지 파일, 정적 HTML 페이지), 다시 말해서 가상 디렉토리 요소
  • 웹 서버에서 배치되는 Java 요소(servlet, JavaBean, Java 클래스)
  • EJB 서버에서 배치되는 요소(EJB 및 지원 Java 클래스)

세 가지 종류의 J2EE 모듈이 있습니다.

J2EE 응용프로그램 클라이언트

J2EE 응용프로그램 클라이언트 모듈은 .jar 아카이브에 패키지되며 다음을 포함합니다.

  • application-client.xml 배치 설명자
  • 응용프로그램 클라이언트 구현 .class 파일
웹 컴포넌트

웹 컴포넌트 모듈은 .war 아카이브에 패키지되며 다음을 포함합니다.

  • web.xml 배치 설명자 및 서버 특정 배치 설명자
  • JSP 페이지
  • HTML 페이지
  • 이미지(예: .gif 및 .jpg)
  • Servlet 클래스 파일

모듈이 웹 서비스인 경우, .war 아카이브는 다음을 포함합니다.

  • webservices.xml 배치 설명자
  • Servlet 클래스 파일
  • WSDL 파일
엔터프라이즈 JavaBean

단일 엔터프라이즈 JavaBean JAR 아카이브는 여러 가지 EJB를 포함할 수 있지만, 이러한 EJB의 배치 정보는 하나의 배치 설명자 세트(ejb-jar.xml와 임의의 서버 특정 배치 설명자)에 저장됩니다.

표준 엔터프라이즈 JavaBean 모듈은 다음을 포함합니다.

  • ejb-jar.xml 및 서버 특정 배치 설명자
  • EJB 구현 클래스 파일

웹 서비스 엔터프라이즈 JavaBean 모듈은 다음을 포함합니다.

  • webservices.xml 배치 설명자
  • EJB 구현 클래스 파일

J2EE 패키징 및 배치에 대한 자세한 정보는 http://java.sun.com/을 참조하십시오. Docs & Training > J2EE Platform, Enterprise Edition > Java Blueprints Program 링크를 참조하십시오.

J2EE 응용프로그램 개발

J2EE 응용프로그램 개발 프로세스는 여러 역할 및 단계를 정의합니다. 다음 섹션에서는 J2EE 스펙에서 제공하는 개발 역할 및 이러한 역할에 관련되는 개발 단계를 정의합니다.

J2EE 응용프로그램 개발 역할

다음 표에는 응용프로그램 개발 역할이 요약되어 있습니다.

역할 이름 설명

J2EE 제품 제공자

J2EE 제품 제공자는 J2EE 제품으로 알려진 J2EE 플랫폼 구현의 공급자입니다. J2EE 제품 제공자는 BEA, IBM 및 Sun을 포함합니다. 이 조직은 보통 J2EE 플랫폼의 구현을 전달할 때 기존 능력을 발휘합니다. 예를 들어, BEA 구현은 아주 성공적인 BEA의 Tuxedo 트랜잭션 처리 모니터에 빌드됩니다. 또한 J2EE 제품 제공자는 응용프로그램 배치 및 관리를 지원하는 데 필요한 도구를 지원합니다.

응용프로그램 컴포넌트 제공자

응용프로그램 컴포넌트 제공자는 실제로 EJB 개발자 및 HTML 문서 디자이너와 같은 여러 가지 역할을 포함합니다. 이 역할은 제공된 도구를 사용하여 J2EE 응용프로그램 컴포넌트를 생성하는 데 관여합니다.

응용프로그램 어셈블러

응용프로그램 어셈블러는 제공된 도구를 사용하여 J2EE 응용프로그램 컴포넌트에서 J2EE 응용프로그램을 작성합니다. J2EE 응용프로그램은 EAR 파일로 전달됩니다. 또한 응용프로그램 어셈블러는 J2EE 응용프로그램의 외부 종속성을 설명합니다. 실제로 J2EE 응용프로그램 배치 시 배치자가 이 종속성을 분석합니다.

배치자

배치자는 운영 환경을 구성하는 응용프로그램 컴포넌트와 J2EE 응용프로그램 배치에 관여합니다. 배치의 첫 번째 단계는 관련된 J2EE 컨테이너에 다양한 응용프로그램 컴포넌트를 설치하는 것입니다. 배치의 두 번째 단계는 선언된 외부 종속성을 분석할 수 있도록 외부 종속성을 구성하는 것입니다. 예를 들어, 정의된 보안 역할은 운영 환경에서 사용자 그룹 및 계정으로 맵핑됩니다. 배치의 세 번째 단계는 새 응용프로그램을 실행하여 요청을 수신하도록 준비하는 것입니다.

시스템 관리자

시스템 관리자는 배치된 J2EE 응용프로그램을 포함하는 런타임 인프라스트럭처에 관여합니다. 이 역할은 이 타스크를 수행하기 위해 J2EE 제품 제공자가 제공하는 적절한 도구를 사용합니다.

도구 제공자

도구 제공자는 응용프로그램 컴포넌트 개발 및 패키징을 지원하는 도구를 제공합니다. 이 도구는 흔히 생산되는 응용프로그램 컴포넌트의 여러 유형에 대응하며, IBM VisualAge for Java 및 Borland JBuilder와 같은 IDE를 포함합니다.

시스템 컴포넌트 제공자

시스템 컴포넌트 제공자는 자원 어댑터나 권한 부여 정책 제공자와 같은 여러 시스템 레벨 컴포넌트를 제공합니다.


이 역할은 독점적이지 않으며 한 사람이 둘 이상의 역할을 할 수 있습니다. 특히 소규모 개발 팀이나 프로토타입 상황에서 그렇습니다.

J2EE 응용프로그램 개발 단계

이 섹션에서는 J2EE 스펙에서 규정한 대로, J2EE 응용프로그램 개발의 여러 단계를 설명합니다. 개발 단계는 다음과 같습니다.

  • 컴포넌트 개발
  • J2EE 응용프로그램이 최소한 하나의 J2EE 모듈을 포함해야 하므로 최소한 하나의 컴포넌트 개발 단계가 필요합니다. 모든 J2EE 응용프로그램을 어셈블하고 배치해야 하므로 마지막 두 단계는 항상 필요합니다.

    다음 표에서는 J2EE 응용프로그램의 개발 단계를 요약합니다.

    J2EE 개발 단계 타스크 J2EE 역할이 수행 결과(인도물)

    J2EE 응용프로그램 클라이언트 작성

    • 클라이언트 코드를 작성하고 클래스를 컴파일합니다.
    • application-client.xml 배치 설명자를 작성합니다.
    • 클래스 및 XML 파일을 포함하여 JAR 파일 아카이브를 작성합니다.

    응용프로그램 컴포넌트 제공자(소프트웨어 개발자)

    J2EE 응용프로그램 클라이언트를 포함하는 JAR 파일

    웹 컴포넌트 작성

    • servlet 코드를 작성하고 클래스를 컴파일합니다.
    • JSP 및 HTML 페이지를 작성합니다.
    • web.xml 배치 설명자를 작성합니다.
    • 클래스, .jsp, .html 및 XML 파일이 포함된 WAR(Web Application aRchive) 파일 아카이브를 작성합니다.

    응용프로그램 컴포넌트 제공자(소프트웨어 개발자: Servlet, 웹 디자이너: JSP 페이지, HTML 페이지)

    웹 컴포넌트를 포함하는 WAR 파일

    엔터프라이즈 JavaBean 작성

    • EJB 코드를 작성하고 클래스를 컴파일합니다.
    • ejb-jar.xml 및 서버 특정 배치 설명자를 작성합니다.
    • 클래스 및 XML 파일을 포함하여 JAR 파일 아카이브를 작성합니다.

    응용프로그램 컴포넌트 제공자(소프트웨어 개발자)

    엔터프라이즈 JavaBean을 포함하는 JAR 파일

    J2EE 응용프로그램 어셈블리

    • application.xml 배치 설명자를 작성합니다.
    • EJB(JAR), 웹 컴포넌트(WAR) 및 XML 파일을 포함하는 EAR 파일 아카이브를 작성합니다.

    응용프로그램 어셈블러

    J2EE 응용프로그램을 포함하는 EAR 파일

    J2EE 응용프로그램 배치

    • J2EE 응용프로그램(EAR)을 J2EE 서버 환경에 추가합니다.
    • 로컬 환경 구성으로 application.xml 배치 설명자를 편집합니다.
    • J2EE 응용프로그램을 J2EE 서버로 배치합니다.

    배치자

    J2EE 응용프로그램 설치 및 구성


    개발 프로세스의 각 단계에서 다음 단계에서 사용할 인도물을 생성합니다. 컴포넌트 개발 단계에서 작성된 컴포넌트는 J2EE 응용프로그램 어셈블리 단계에서 사용되어 J2EE 응용프로그램 EAR 아카이브를 생성합니다. J2EE 응용프로그램 배치 단계에서 EAR 아카이브가 J2EE 서버로 배치됩니다.

    각 단계의 인도물은 이식 가능하며 환경에서 J2EE 플랫폼 요구사항을 충족시키는 한, 동일한 사람이나 심지어 동일한 환경에서 수행될 필요가 없습니다.

    J2EE 패키징 및 배치에 대한 자세한 정보는 http://java.sun.com/을 참조하십시오(J2EE > Blueprints 링크 수행).

    자세한 정보

    J2EE에 대한 추가 정보는 Sun J2EE Blueprints에서 찾을 수 있습니다. http://java.sun.com/의 해당 정보에 액세스할 수 있습니다. J2EE > Blueprints > Guidelines: Designing Enterprise Applications with the J2EE Platform, Second Edition 링크를 참조하십시오.

    이 문서의 사본도 Rational Unified Process에 포함됩니다.

    특정 주제에 대한 정보에 해당하는 Sun J2EE Blueprints 내의 장이 다음 표에 요약되어 있습니다.

    J2EE 개념 J2EE Blueprints 장

    J2EE 플랫폼 용어

    제 2 장

    엔터프라이즈 JavaBean

    제 5 장

    트랜잭션

    제 8 장

    보안

    제 9 장

    Servlet

    제 4 장

    JavaServer 페이지

    제 4 장

    배치 및 패키징

    제 7 장