주제

소개To top of page

오늘날 복잡한 분산 어플리케이션의 발빠른 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 링크 수행).

Nutshell에서 J2EE 개발To top of page

어플리케이션 개발자 Perspective:

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

To top of page

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

J2EE 사용 이유To top of page

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

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

표준화되고 산업화된 테스트 프레임워크To top of page

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

  • J2SE 1.4
    • JDBC
    • Java IDL
    • RMI-IIOP
    • JNDI
    • JAAS
  • JTA
  • JavaMail
  • JMS.
    JMS에 대한 자세한 정보는 개념: JMS를 참조하십시오.
  • JAF
  • EJB
  • Java Servlet
  • JAXP
  • Java 커넥터(: J2EE 1.3 이전에는 지원되지 않음)
  • JSP
  • J2EE의 웹 서비스(: J2EE 1.4 이전에서는 지원되지 않음)
  • JAX-RPC(: J2EE 1.4 이전에는 지원되지 않음)
  • SAAJ(: J2EE 1.4 이전에는 지원되지 않음)
  • JAXR(: J2EE 1.4 이전에는 지원되지 않음)
  • J2EE 관리(: J2EE 1.4 이전에는 지원되지 않음)
  • JMX(: J2EE 1.4 이전에는 지원되지 않음)
  • J2EE 전개(: J2EE 1.4 이전에는 지원되지 않음)
  • JACC(: J2EE 1.4 이전에는 지원되지 않음)

이식성 To top of page

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

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

재사용 가능한 컴포넌트To top of page

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

컴포넌트를 개발하면 필요한 경우 다른 어플리케이션에서 재사용하거나 다른 J2EE 준수 서버로 전개할 수 있습니다.

시도 및 실제 구조 및 설계 패턴To top of page

J2EE 플랫폼은 잘 구조화된 다중 층 어플리케이션 구조를 정의합니다. J2EE 구조를 사용하여, 개발자는 어플리케이션의 실제 비즈니스 논리 개발을 신속하게 진척시킬 수 있습니다.

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

  • J2EE 어플리케이션을 개발하는 방법에 대한 베스트 프랙티스 정보를 제공하며 J2EE 플랫폼을 자세히 설명하는 어플리케이션 개발의 청사진.
  • 일반 J2EE 구조 및 설계 문제점에 대한 솔루션을 설명하는 잘 문서화된 J2EE 패턴(산업 베스트 프랙티스).

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

확장성To top of page

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

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

개발 및 전개 툴To top of page

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

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

백엔드 통합To top of page

백엔드는 어플리케이션의 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 이전에서는 지원되지 않습니다.

보안To top of page

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

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

다중 층 구조 To top of page

J2EE는 클라이언트 층, 중간 층EIS 또는 백엔드 층으로 구성된 다중 층 분산 어플리케이션 구조입니다.

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

첨부 텍스트에 설명된 다이어그램

그림 1: J2EE 다중 층 구조

클라이언트 층To top of page

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

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

중간 층To top of page

중간 층은 웹 층비즈니스 층으로 구성됩니다. 웹 층 컴포넌트는 웹 컨테이너를 제공하는 J2EE 웹 서버에서 실행됩니다. 비즈니스 층 컴포넌트는 EJB 컨테이너를 제공하는 J2EE 어플리케이션 서버에서 실행됩니다.

웹 층To top of page

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

비즈니스 층To top of page

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

  • 어플리케이션 비즈니스 논리를 포함합니다.
  • 일반적으로 웹 층으로부터의 요청에 응답하여 비즈니스 논리에 따라 EIS 층에 요청을 작성합니다.

EIS 층To top of page

EIS 층은 흔히 RDBMS의 양식으로 어플리케이션의 저장된 데이터를 표시합니다. 또한 EIS 층은 J2EE 커넥터 구조 API를 통해 액세스되는 레거시 시스템 또는 ERP 시스템으로 구성될 수 있습니다.

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

J2EE 표준 전개 형상에 대한 자세한 정보는 개념: J2EE 전개 형상을 참조하십시오.

J2EE 서버 To top of page

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

"J2EE 서버" 용어의 사용은 다소 자유롭습니다. 보통, 의미하는 것은 "웹 컨테이너 및 EJB 컨테이너 둘 다를 지원하는 J2EE 서버"입니다. 더 압축된 용어를 사용하면 J2EE 웹 서버(예: J2EE 참조 웹 서버 구현 Tomcat)는 웹 컨테이너를 지원하며, J2EE 어플리케이션(또는 EJB) 서버는 EJB 컨테이너를 지원합니다.

J2EE 컨테이너 To top of page

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

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

어플리케이션 클라이언트 컨테이너To top of page

J2EE 어플리케이션 클라이언트는 다음 J2EE API를 지원하는 어플리케이션 클라이언트 컨테이너에서 실행됩니다(JDBC, JMS, JAXP, JAAS, JavaMail, JAF, JSR, JAX-RPC, SAAJ, J2EE 관리 및 JMX).

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

애플릿 컨테이너To top of page

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

웹 컨테이너To top of page

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

EJB 컨테이너To top of page

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

EJB 컨테이너는 다음 J2EE API 및 기술을 지원합니다(EJB, JDBC, JMS, JAXP, JAX-RPC, JAXR, JAAS, Java 메일, JAF, JTA, JSR, SAAJ, J2EE 관리 및 J2EE 커넥터 구조).

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

원격 의사소통 To top of page

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

동시성 To top of page

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

이름 지정 To top of page

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

지속성 To top of page

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

트랜잭션 관리To top of page

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

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

Bean 관리 트랜잭션 구분 To top of page

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

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

컨테이너 관리 트랜잭션 구분To top of page

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

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

분산 트랜잭션To top of page

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

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

보안 관리To top of page

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

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

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

라이프사이클 관리To top of page

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는 컨테이너가 복원하는 활성화된 상태 정보입니다.

데이터베이스 연결 풀링To top of page

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

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

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

메시지 전달 To top of page

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

J2EE 컴포넌트To top of page

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

애플릿 To top of page

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

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

어플리케이션 클라이언트 To top of page

어플리케이션 클라이언트는 Java 어플리케이션입니다. J2EE 중간 층 및 EIS 층의 기능에 액세스합니다. 보통 사용자 인터페이스를 제공하는 데스크탑 어플리케이션입니다. 개념: 분배 패턴에서 설명한 대로 "thick 클라이언트"를 구현하기 위해 사용될 수 있습니다.

웹 컴포넌트To top of page

Java Servlet To top of page

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 To top of page

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

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

HTML 페이지 To top of page

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

JavaBeans To top of page

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

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

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

엔터프라이즈 JavaBean To top of page

엔터프라이즈 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 링크 수행).

세션 BeanTo top of page

세션 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/에서 엔터프라이즈 JavaBeans 스펙, 버전 2.1을 참조하십시오(Products & Technologies > J2EE > Enterprise JavaBeans 링크 수행).

엔티티 Bean To top of page

엔티티 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 To top of page

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

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

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

JavaBean 및 EJB 비교 To top of page

이름은 유사하지만, 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에 대한 자세한 정보는 http://java.sun.com/을 참조하여 Products & Technologies > J2EE > Java API for XML-based RPC (JAX-RPC) 링크를 따르십시오.

  • 어플리케이션 클라이언트
  • 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 스펙은 ebXML 레지스트리 및 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 커넥터 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 페이지 기술은 동적 웹 페이지를 작성하고 유지보수하는 기능을 웹 개발자에게 제공합니다. 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 관리 1.0

    J2EE 관리 API는 관리 툴에 대한 API를 제공하여 J2EE 어플리케이션
    서버가 현재 상태, 전개된 어플리케이션 등을 판별할 수 있게 합니다.

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

  • 어플리케이션 클라이언트
  • EJB
  • JMX 1.2

    JMX API는 J2EE 관리 API에서 사용되어 J2EE 제품의 관리에 필요한
    일부 지원을 제공합니다.

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

  • 어플리케이션 클라이언트
  • EJB
  • J2EE 전개 1.1

    J2EE 전개 API는 J2EE 어플리케이션 서버에서 제공하는 플러그인
    컴포넌트 및 전개 툴의 런타임 환경 간의 인터페이스를 정의합니다.

    J2EE 전개에 대한 자세한 정보는 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

  • 어셈블리 및 전개 To top of page

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

    전개 설명자To top of page

    전개 설명자는 J2EE 어플리케이션 및 J2EE 모듈에서 사용되는 XML 파일입니다. 전개시 J2EE 서버가 읽는 형상 정보를 제공합니다. 이 형상 정보는 서버가 소스 코드 또는 클래스를 변경하지 않고 선언적으로 J2EE 어플리케이션 또는 모듈을 사용자 정의하게 합니다.

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

    J2EE 모듈 To top of page

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

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

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

    J2EE 어플리케이션 클라이언트To top of page

    J2EE 어플리케이션 클라이언트 모듈은 .jar 아카이브에 패키지되며 다음을 포함합니다.

    • application-client.xml 전개 설명자
    • 어플리케이션 클라이언트 구현 .class 파일
    웹 컴포넌트 To top of page

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

    • web.xml 전개 설명자 및 서버 특정 전개 설명자
    • JSP 페이지
    • HTML 페이지
    • 이미지(예를 들어, .gif 및 .jpg)
    • Servlet 클래스 파일

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

    • webservices.xml 전개 설명자
    • Servlet 클래스 파일
    • WSDL 파일
    엔터프라이즈 JavaBeanTo top of page

    단일 엔터프라이즈 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 어플리케이션 개발 To top of page

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

    J2EE 어플리케이션 개발 역할To top of page

    다음 테이블에는 어플리케이션 개발 역할이 요약되어 있습니다.

    역할 이름 설명

    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 어플리케이션 개발 단계 To top of page

    이 섹션에서는 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 링크를 따르십시오.

    자세한 정보To top of page

    J2EE에 대한 추가 정보는 Sun J2EE Blueprints에서 찾을 수 있습니다. http://java.sun.com/에서 해당 정보에 액세스할 수 있습니다. J2EE > Blueprints > 가이드라인: J2EE 플랫폼으로 엔터프라이즈 어플리케이션 설계, 제 2 판의 링크를 따르십시오.

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

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

    J2EE 개념 J2EE Blueprints 장

    J2EE 플랫폼 용어

    제 2 장

    엔터프라이즈 JavaBean

    제 5 장

    트랜잭션

    제 8 장

    보안

    제 9 장

    Servlet

    제 4 장

    JavaServer 페이지

    제 4 장

    전개 및 패키징

    제 7 장



    Rational Unified Process   2003.06.15