|
|
| Sun ONE Application Server 7, Update 1 관리자 설명서 |
J2EE 컨테이너 구성Sun ONE Application Server는 J2EE 1.3 사양에 따른 다양한 J2EE 컨테이너를 제공합니다. 컨테이너는 EJB (Enterprise Java Bean) 및 MDB (Message Driven Bean)와 같은 J2EE 응용 프로그램 구성 요소에 대한 런타임 지원을 제공합니다. MDB와 EJB는 다른 J2EE 응용 프로그램 구성 요소와 직접 상호 작용하지 않습니다. 이들 구성 요소는 EJB 컨테이너의 프로토콜과 메소드를 사용하여 서로 상호 작용하거나 Java Transaction Service와 같은 플랫폼 서비스와 상호 작용합니다. 컨테이너는 응용 프로그램 구성 요소와 J2EE 서비스 간의 상호 작용을 지원합니다. 따라서 컨테이너는 구성 요소 배포 설명자로 정의되는, 선언적 트랜잭션 관리, 보안 검사, 자원 풀링, 상태 관리 등의 서비스를 투명하게 제공할 수 있습니다.
Sun One Application Server는 웹 컨테이너와 EJB 컨테이너를 통합합니다.
이 장에서는 다음 내용을 설명합니다.
웹 컨테이너에 대한 정보
웹 컨테이너는 웹 응용 프로그램을 호스트하는 J2EE 컨테이너입니다. 웹 컨테이너는 개발자에게 서블릿과 Java Server Page (JSP)를 실행하는 환경을 제공함으로써 웹 서버 기능을 확장합니다. 서블릿은 CGI (Common Gateway Interface) 프로그램의 성능 제한 없이 웹 기반 응용 프로그램을 구축하기 위한 구성 요소 기반 및 플랫폼 독립적인 방법을 제공합니다. JSP 기술은 서블릿 기술을 확장한 것으로, HTML 및 XML 페이지 작성을 지원하기 위해 만들어졌습니다. 웹 컨테이너에 포함된 서블릿이나 JSP는 EJB (Enterprise Java Bean) 컨테이너에서 Bean 메소드를 호출할 수 있습니다. Bean 메소드는 ORB (Object Request Broker)를 사용하여 로컬 호출 또는 원격 호출을 통해 호출할 수 있습니다.
웹 컨테이너는 JNDI (Java Naming Directory Interface)를 사용하여 찾은 로컬 EJB에 웹 응용 프로그램에 대한 액세스를 제공합니다.
그림 "Sun ONE Application Server 구조 내부의 웹 컨테이너"는 Sun ONE Application Server 구조에서 웹 컨테이너의 역할과 위치를 설명합니다.
  
![]()
Sun ONE Application Server 구조 내부의 웹 컨테이너이 절에서는 다음 항목에 대해 설명합니다.
웹 컨테이너의 역할 이해
웹 컨테이너의 주된 역할은 웹 응용 프로그램을 위한 런타임 환경을 제공하고, 해당 컨테이너에 호스트하는 웹 응용 프로그램에 데이터베이스 액세스, 보안, 다중 스레딩과 같은 서비스를 제공하는 것입니다. 웹 응용 프로그램은 서블릿과, HTML 페이지, 클래스 및 Sun ONE Application Server에서 완전한 응용 프로그램을 구성하는 기타 자원의 집합입니다.
웹 응용 프로그램의 요소는 다음과 같습니다.
- 서블릿
- JSP 페이지
- 유틸리티 클래스
- 정적 문서(html, 이미지, 사운드 파일 등)
- 클라이언트측 Java 애플릿, Bean, 클래스
- 위의 모든 요소를 함께 결합하는 설명적 메타 정보
웹 응용 프로그램은 Sun ONE Application Server에서 실행 중인 웹 컨테이너에 배포될 수 있습니다.
Sun ONE Application Server와 함께 웹 서버 플러그 인을 구성하고 사용하는 방법에 대한 자세한 내용은 "웹 서버 플러그 인 구성"을 참조하십시오.
웹 응용 프로그램 구성
또한 웹 컨테이너는 가상 서버 내부에 웹 응용 프로그램을 배포하도록 구성할 수 있습니다. 이 때 웹 컨테이너는 둘 이상의 가상 서버를 포함하도록 구성할 수 있으며, 각 가상 서버는 웹 응용 프로그램을 호스트하도록 구성할 수 있습니다. 웹 응용 프로그램의 배포 범위는 가상 서버의 컨텍스트 내부입니다. 가상 서버에 대한 자세한 내용은 "가상 서버 사용"을 참조하십시오.
이 절에서는 다음 항목에 대해 설명합니다.
가상 서버 속성
가상 서버에 구성할 수 있는 특정 속성에 대한 값을 지정할 수 있습니다. 가상 서버는 관련 웹 응용 프로그램을 둘 이상 가질 수 있습니다. 사용자는 웹 응용 프로그램에 사인 온해야 합니다.
단일 사인 온(SSO)에 대한 속성인 sso-enabled가 server.xml 파일에서 기본값인 true로 설정되어 있는 경우, 사용자는 특정 가상 서버와 관련된 모든 웹 응용 프로그램에 사인 온할 수 있습니다. 이 때 사용자의 ID는 동일한 가상 서버에서 실행 중인 다른 모든 응용 프로그램에 의해 인식됩니다. 그러나 sso-enabled 값이 false로 설정되어 있을 경우에는 이 가상 서버의 모든 웹 응용 프로그램에 대해 단일 사인 온(SSO)이 비활성화됩니다.
sso-enabled 속성은 동적으로 구성할 수 있으며, 서버를 다시 시작하지 않아도 변경 사항이 적용됩니다.
단일 사인 온(SSO)에 대한 자세한 내용은 "단일 사인 온(SSO) 기능"을 참조하십시오.
Web-module 속성
Sun ONE Application Server 고유의 배포 설명자는 sun-web.xml라는 파일에 지정되어 있으며, 이 파일은 해당 웹 응용 프로그램의 WEB-INF 디렉토리에 들어 있습니다.
일반적으로 각 웹 응용 프로그램에 대해 sun-web.xml 파일이 구성되어 있습니다. 그러나 웹 컨테이너의 모든 웹 응용 프로그램이 sun-web.xml 파일을 가질 필요는 없습니다. sun-web.xml 파일이 없을 경우, 웹 컨테이너는 Sun ONE Application Server 고유의 모든 속성에 대해 기본값을 사용합니다.
context-root 속성
이 속성은 웹 응용 프로그램이 설치된 컨텍스트 루트를 정의합니다. 이 속성이 비어 있는 문자열인 경우, 이 웹 응용 프로그램은 가상 서버에 대한 기본 웹 응용 프로그램으로 지정됩니다. 가상 서버에 대한 기본 웹 응용 프로그램은 가상 서버에 배포된 다른 웹 응용 프로그램에서 처리할 수 없는 모든 요청에 응답합니다. 모든 가상 서버는 기본 웹 응용 프로그램을 갖습니다.
기본 웹 응용 프로그램에서 이 필드의 값은 빈 문자열 " "이어야 합니다.
location 속성
이 속성을 입력할 때는 기본 웹 응용 프로그램의 위치를 나타내는 유효한 디렉토리 경로를 입력해야 합니다. 설치 과정 중에 기본 웹 응용 프로그램의 위치는 modules/default-web-app/ 디렉토리로 설정됩니다.
location 속성은 필수 항목이며, WAR (Web ARchive) 파일 내용의 압축을 푼 디렉토리에 대한 정규화된 경로 또는 상대 경로가 될 수 있습니다. 지정된 경로가 상대 경로인 경우, 가상 서버 수준에서 정의된 응용 프로그램 루트 디렉토리에 대해 상대 경로이어야 합니다.
예를 들면 다음과 같습니다.
location="applications/<ear name>/<war-module name>/"
location="modules/<war-module name>"
location="/u/myapps/<war-module name>"
location="/u/myapps/<ear-name>/<war-module name>"
enabled 속성
이 속성의 기본값은 웹 응용 프로그램이 요청을 처리할 수 있음을 나타내는 true입니다. enabled 속성 값이 false로 설정되면, 웹 응용 프로그램이 임시로 요청을 서비스할 수 없게 됩니다. 그러나 하드 디스크에 저장된 웹 응용 프로그램의 내용은 제거되지 않습니다.
웹 응용 프로그램 배포
웹 컨테이너는 WAR (Web ARchive) 파일이나 WAR 파일의 구조 정보(WEB-INF/lib,WEB-INF/클래스 등)를 포함하는 디렉토리에서 웹 응용 프로그램을 배포합니다. 응용 프로그램을 배포하기 위하여 서버를 다시 시작할 필요는 없습니다.
웹 컨테이너는 각 가상 서버에 "기본" 웹 응용 프로그램을 배포합니다. 기본 위치(디렉토리)는 가상 서버의 app root 디렉토리 아래 modules/default-web-app/ 하위 디렉토리에 있습니다. 이 기본 웹 응용 프로그램은 가상 서버에 배포된 다른 웹 응용 프로그램에서 처리할 수 없는 모든 요청에 응답합니다. 이러한 웹 응용 프로그램은 JSP 페이지를 표시할 수 있도록 /servlet/*에 대한 요청을 처리하는 호출자 서블릿과 JSP 페이지를 처리하는 JSP 서블릿으로 구성됩니다. 기본 웹 응용 프로그램은 사용자가 web.xml과 sun-web.xml 파일에서 EJB 참조를 표시하면 EJB에 액세스할 수 있습니다.
기본 웹 응용 프로그램은 가상 서버의 server.xml에서 정의되며 다음과 같습니다.
<web-module context-root="" location="modules/default-web-app/">
동적 재배포와 핫 배포
동적 재배포는 서버를 다시 시작하지 않고 기존 응용 프로그램을 재배포하는 기능입니다. 동적 재배포는 응용 프로그램의 구성(xml 파일의 내용)과 특정한 클래스가 변경되었을 때 발생합니다. 동적 재배포를 수행하면 전체 응용 프로그램 클래스가 동적으로 다시 로드되는 것과 같은 동작이 발생합니다. 또한 응용 프로그램 컨텍스트(web 및 ejb)가 새로 만들어지고 이전 응용 프로그램 컨텍스트는 제거됩니다. 따라서 동적 재배포 결과, 새로운 응용 프로그램(기존 세션 데이터 제외) 인스턴스가 만들어지게 됩니다. 이 기능은 개발 모드에서만 지원되며, 동적 재로드 시와 유사한 예외를 발생시킵니다. 또한 구성 변경 사항은 서버를 다시 시작해야만 적용됩니다. 동적 재로드는 중앙 구성에서 이 기능이 지정되어 있는 응용 프로그램과 비공유 독립 실행형 모듈에서만 활성화됩니다.
웹 응용 프로그램이 다시 로드되는 경우, 기존의 모든 세션 정보는 영구 메커니즘이 이러한 세션 관리자에 구성되어 있는지의 여부와 상관없이 자동으로 저장되고 복원됩니다.
핫 배포는 서버를 다시 시작할 필요 없이 서버 런타임에 응용 프로그램을 배포하는 기능입니다. 이 기능은 동적 재배포 작업과 동일한 인프라를 사용합니다. 그러나 이전 구현에서 어떠한 상태도 남아 있지 않기 때문에 이 기능은 실제 작업 시에 지원됩니다.
단일 사인 온(SSO) 기능
사용자가 특정 가상 서버의 웹 응용 프로그램에 있는 보호되지 않은 자원에만 액세스하는 경우에는 인증 절차가 필요 없습니다.
그러나 사용자가 특정 가상 서버와 관련된 웹 응용 프로그램의 보호되는 자원에 액세스하는 경우에는 현재 액세스하는 웹 응용 프로그램에 대해 정의된 로그인 방법을 사용하여 자신을 인증하는 절차를 거쳐야 합니다.
일단 인증을 통과하면 사용자의 역할은 관련된 모든 웹 응용 프로그램에 걸쳐 액세스 제어를 결정하는 데 사용됩니다. 그러면 사용자는 각 웹 응용 프로그램에 대해 개별적으로 인증을 받지 않아도 됩니다.
사용자가 웹 응용 프로그램에서 로그아웃하게 되면, 모든 웹 응용 프로그램의 사용자 세션은 무효화됩니다. 따라서 사용자가 응용 프로그램의 보호되는 자원에 다시 액세스를 하려면 재인증을 받아야 합니다.
단일 사인 온(SSO) 기능은 HTTP 쿠키를 사용하여 각 요청을 저장된 사용자 ID에 연결하는 토큰을 전송합니다. 따라서 단일 사인 온(SSO) 기능은 쿠키를 지원하는 클라이언트 환경에서만 사용할 수 있습니다.
웹 컨테이너 로깅
서로 다른 로그 수준을 설정하여 웹 컨테이너와 가상 서버에 호스트되는 응용 프로그램의 기본 로깅 동작을 제어할 수 있습니다. 로깅 동작은 응용 프로그램의 고유한 로깅에 영향을 주지 않아야 합니다.
로그 수준 지정은 기록되는 메시지의 유형을 제어합니다. 예를 들어, 로그 수준 FATAL을 가진 메시지만 기록되도록 지정하면, 이 값보다 "높은" 로그 수준의 메시지는 자연스럽게 무시됩니다. 그리고 명시적 로그 수준으로 기록되는 메시지만 이 값과 비교됩니다.
명시적 로그 수준을 갖지 않은 메시지는 무제한으로 기록됩니다. 기본 동작은 모든 경고, 오류 및 치명적 메시지를 기록하는 것입니다.
웹 컨테이너에 대한 로그 수준을 설정하려면, 다음 작업을 수행합니다.
- 관리 인터페이스의 왼쪽 창에서 Sun ONE Application Server 인스턴스 트리를 확장하여 수정할 웹 컨테이너 구성을 찾습니다.
- "컨테이너" 탭을 확장하여 J2EE 컨테이너 목록이 나타나면 이 목록에서 "웹 컨테이너"를 선택합니다. 관리 인터페이스의 오른쪽 창에서 "웹 컨테이너 로깅"이라고 표시된 페이지가 나타납니다.
   웹 컨테이너 로깅
![]()
- "로그 수준" 드롭다운 목록에서 원하는 로그 수준을 선택합니다. 모든 로그 수준과 정의 목록을 보려면, "로깅 사용"을 참조하십시오.
- "저장"을 눌러 해당 설정을 저장합니다.
웹 컨테이너에 대한 추가 등록 정보를 만들려면 "등록 정보" 버튼을 누릅니다.
EJB 컨테이너에 대한 정보
Enterprise Java Bean 컨테이너는 Enterprise Bean을 제어하고 이 Bean에 중요한 시스템 수준 서비스를 제공하는 런타임 환경입니다. EJB는 EJB 컨테이너에서 실행되는 구성 요소로서, EJB 서버 내부에서 차례로 실행됩니다. Bean에 제공되는 시스템 수준 서비스는 다음과 같습니다.
- 트랜잭션 관리
- 보안
- lifecycle 관리
- 원격 연결
- 데이터베이스 연결 풀링
- 이름 지정 서비스
Enterprise Bean은 비즈니스 논리를 포함하는, Java로 작성된 서버 구성 요소입니다. EJB 컨테이너는 Bean에 원격 액세스를 제공합니다. EJB는 항상 컨테이너의 컨텍스트 내에서 동작하며, EJB와 이를 호스트하는 서버 간의 링크의 역할을 합니다. EJB 컨테이너는 고유의 구성 요소와 다른 공급업체의 구성 요소를 사용하여 분산 응용 프로그램을 구축할 수 있습니다.
EJB 컨테이너를 통해 Sun ONE Application Server는 높은 수준의 트랜잭션, 상태 관리, 다중 스레딩 및 자원 풀링 래퍼를 제공하므로, 낮은 수준의 API 세부 정보를 알 필요가 없도록 보호해 줍니다. 이 컨테이너는 2.0 EJB Specification에서 가능한 모든 기본 컨테이너 서비스뿐 아니라 Sun ONE Application Server에 특정한 추가 서비스도 제공합니다.
또한 컨테이너는 비활성화와 활성화 프로세스를 사용하여 확장성을 보장할 있도록 Bean 동작을 관리합니다.
이 절에서는 다음 항목에 대해 설명합니다.
EJB 컨테이너 역할의 이해
EJB 컨테이너는 다음 기본 서비스를 제공합니다.
- 비활성화
EJB를 메모리에서 보조 저장 장치로 전달하는 프로세스입니다. 비활성화를 사용하면 Bean을 삭제하지 않고 Bean의 자원을 해제할 수 있습니다. 이 방법을 사용하여 Bean은 지속적인 상태로 만들 수 있고, 인스턴스화의 오버헤드 없이 재호출될 수 있습니다.
- 활성화
EJB를 보조 저장 장치에서 메모리로 전달하는 프로세스입니다. 컨테이너 계약은 EJB와 해당 컨테이너 간의 관계를 설정하며 클라이언트에 대해 완전하게 투명합니다. 이러한 관계는 다음과 같습니다.
lifecycle
Session Bean의 경우, lifecycle에는 javax.ejb.SessionBean 및 javax.ejb.SessionSynchronization 인터페이스 구현이 포함됩니다. Entity Bean의 경우, lifecycle에는 javax.ejb.EntityBean 인터페이스 구현이 포함됩니다. Message-Driven Bean의 경우, lifecycle에는 javax.ejb.MessageDriven 인터페이스 구현이 포함됩니다.
세션 컨텍스트
컨테이너는 Bean 인스턴스가 만들어질 때 Session Bean 인스턴스로 서비스와 정보를 전달할 수 있도록 javax.ejb.SessionContext 인터페이스를 구현합니다.
엔티티 컨텍스트
컨테이너는 Bean 인스턴스가 만들어질 때 Entity Bean으로 서비스와 정보를 전달할 수 있도록 javax.ejb.EntityContext 인터페이스를 구현합니다.
메시지 컨텍스트
컨테이너는 Bean 인스턴스가 만들어질 때 Message-Driven Bean으로 서비스와 정보를 전달할 수 있도록 javax.ejb.MDBContext 인터페이스를 구현합니다.
환경
컨테이너는 java.util.Properties를 구현하고 이러한 등록 정보를 EJB에 대해 사용할 수 있게 합니다.
서비스 정보
컨테이너는 EJB에서 사용할 수 있는 서비스를 만듭니다.
Sun ONE Application Server 서비스로는 원격 액세스, 이름 지정, 보안, 동시성, 트랜잭션 제어, 데이터베이스 액세스 등이 있습니다.
EJB 컨테이너의 기능은 다음과 같습니다.
- 원격 연결을 허용하는 구현 객체(EJBObject) 만들기
- EJBObject 작성을 허용하는 홈 구현 객체 만들기
- 클라이언트가 홈 객체를 찾을 수 있도록 홈 구현 객체를 이름 지정 서비스에 바인딩
- 권한이 있는 클라이언트만이 EJBObject 통해 Bean 메소드를 호출
- 비즈니스 메소드를 해당 트랜잭션에서 호출
- Bean의 lifecycle 관리 Bean의 lifecycle 관리에는 다음이 포함됩니다.
실제적인 구현 세부 정보는 컨테이너와 EJB 간의 표준 규정 인터페이스를 기반으로 하는 컨테이너의 일부입니다. 따라서 플랫폼별 구현 세부 정보를 이해하거나 처리할 필요가 없습니다. 그 대신 EJB 표준을 지원하는 공급업체의 제품과 함께 사용할 수 있도록 일반적이고 작업 중심적인 EJB를 만들 수 있습니다.
Sun ONE Application Server에서 사용되는 EJB의 유형을 알아 두면 도움이 됩니다.
Enterprise Java Bean의 유형
EJB는 다음 중 하나를 나타내는 객체입니다.
- 다중 클라이언트 호출 메소드에 대해 자동으로 상태를 유지하는 특정한 클라이언트의 세션
- 다중 클라이언트 간에 공유될 수 있는 지속적인 엔티티 객체
- 메시지 처리와 같은 상태 없는 서비스
Java Database Connectivity (JDBC) API를 사용하여 데이터 액세스를 처리하는 데 기본적으로 사용되는 Entity Bean입니다. 한편, Session Bean은 임시 응용 프로그램 객체를 제공하고 개별 비즈니스 작업을 수행합니다. EJB에는 다음과 같은 세 가지 종류가 있습니다.
Session Bean에 대한 정보
Session Bean은 특정한 클라이언트 요청에 대한 비즈니스 규칙이나 논리를 구현합니다.
Session Bean은 개별 클라이언트를 위한 단일 데이터베이스 기록, 편집을 위한 문서 복사 또는 전문화된 비즈니스 객체와 같이 임시 객체와 프로세스를 나타내기 위해 고안되었습니다. 다시 말해, Session Bean은 이 Bean을 만든 클라이언트에 의해서만 사용되는 개인 자원입니다. 이 객체는 한 클라이언트에서만 사용할 수 있으므로, Session Bean은 대화 상태라고 하는 클라이언트 고유의 세션 정보를 유지할 수 있습니다.
예를 들어, 전자 장바구니를 생성하기 위해 EJB를 만들 수 있습니다. 그러면 사용자가 응용 프로그램에 로그인할 때마다 응용 프로그램은 이 사용자의 구매를 위한 장바구니 Session Bean을 만들게 됩니다. 사용자가 로그아웃하거나 쇼핑을 끝내면 이 Session Bean은 해제됩니다.
세션은 다음과 같은 특징을 갖습니다.
- Session Bean은 단일 클라이언트와 관련하여 실행됩니다.
- Session Bean은 비교적 수명이 짧습니다.
- Session Bean은 서버 충돌에서 살아 남지 못할 수도 있습니다.
- EJB 컨테이너가 충돌하는 경우, Session Bean은 제거됩니다.
- Session Bean은 등록 정보 설정에 따라 트랜잭션 관리를 처리합니다. 이것은 선택 사항입니다.
- Session Bean은 기본 데이터베이스에서 공유 데이터를 업데이트합니다. 이것은 선택 사항입니다.
- Stateless Session Bean이거나 Stateful Session Bean일 수 있습니다.
Stateless Session Bean. Stateless Session Bean은 제한된 시간 범위 내에서 특정한 고객에 필요한 비즈니스 논리의 임시 부분을 캡슐화합니다. Stateless Session Bean은 대화 상태를 유지하지 않습니다.
Stateful Session Bean. StatefulSession Bean은 임시적이나 클라이언트 호출 간에 내용과 값에 대한 정보를 보존할 수 있도록 대화 상태를 유지합니다. 대화 상태를 통하여 Bean의 컨테이너는 Session Bean 상태에 대한 정보를 유지하고 필요한 경우, 나중에 프로그램 실행에서 상태를 다시 만들 수 있습니다.
Entity Bean에 대한 정보
Entity Bean은 일반적으로 데이터베이스에서 직접 유지되거나 객체로서 Enterprise Information System (EIS) 응용 프로그램을 통해 액세스되는 지속적인 데이터를 나타냅니다. EJB를 호스트하는 서버와 EJB 컨테이너는 동시에 활성화되는 엔티티 EJB에 대한 확장 가능한 런타임 환경을 제공합니다.
Entity Bean의 간단한 예로는 데이터베이스 테이블의 한 행을 나타내기 위해 정의되는 Entity Bean이 있습니다. 이 때 각 Bean 인스턴스는 특정한 행을 나타냅니다. 더 복잡한 예로는 데이터베이스의 결합된 테이블의 복잡한 보기를 나타내기 위해 설계된 Entity Bean이 있습니다. 여기서 각 Bean 인스턴스는 단일 장바구니의 내용을 나타냅니다.
Entity Bean은 다음과 같은 특징을 갖습니다.
- Entity Bean은 EIS 자원(일반적으로 데이터베이스)에서 데이터의 객체 보기를 제공합니다.
- Entity Bean은 모든 사용자가 액세스할 수 있습니다.
- Entity Bean은 서버 충돌에서 투명하게 보존됩니다.
- Entity Bean은 컨테이너 관리 트랜잭션 또는 Bean 관리 트랜잭션을 사용합니다.
Entity Bean은 컨테이너 관리 지속성(CMP) 또는 Bean 관리 지속성(BMP)으로 지속성 데이터를 나타냅니다. Bean 자체 또는 컨테이너에서 Entity Bean의 지속성을 관리할 수 있습니다.
Bean 관리 지속성. Entity Bean이 고유 지속성을 관리하는 경우 Bean 개발자는 EJB 클래스 메소드에서 직접 지속적인 코드(예: JDBC 호출)를 구현합니다. 소유 인터페이스를 사용하는 경우, 이식성이 떨어지거나 특정한 데이터베이스에 Bean을 연결시킬 때 위험성이 있다는
단점이 있습니다.컨테이너 관리 지속성. Entity Bean이 컨테이너에서 관리되는 경우 컨테이너는 지속성 상태를 투명하게 관리하기 때문에 Bean 메소드에서 데이터 액세스 코드를 구현할 필요가 없습니다. 이 메소드는 더욱 쉽게 구현할 수 있을 뿐 아니라 특정한 데이터베이스에 연결하지 않아도 Bean을 완전 이식할 수 있습니다.
컨테이너 관리 지속성을 사용하는 Entity Bean은 Bean 관리 지속성을 사용하는 Entity Bean의 (컨테이너에 의한) 자동 생성 버전이어야 합니다.
Entity Bean의 구축과 사용에 대한 자세한 내용은 Sun ONE Application Server Developer's Guide to Enterprise JavaBeans Technology를 참조하십시오.
Message-Driven Bean에 대한 정보
Message-Driven Bean은 J2EE 응용 프로그램이 비동기적으로 메시지를 처리할 수 있도록 해주는 EJB입니다. Message-Driven Bean은 Java Message Service 메시지가 도착하면 구동됩니다.
Message-Driven Bean 인스턴스는 생성되어 삭제될 때까지 Message-Driven Bean 컨테이너에서 상주합니다. 컨테이너는 보안, 트랜잭션, 메시지 동시 처리, Message-Driven Bean 인스턴스의 lifecycle 관리 및 Message-Driven Bean에 대한 기타 서비스를 제공합니다. EJB와 EJB 컨테이너를 호스트하는 서버는 동시 활성화된 Message-Driven Bean에 대한 확장 가능한 런타임 환경을 제공합니다.
J2EE 1.3 플랫폼의 Java Message Service API는 다음 내용을 지정합니다.
- 응용 프로그램 클라이언트, EJB 구성 요소 및 웹 구성 요소는 Java Message Service 메시지를 전송하거나 비동기적으로 수신할 수 있습니다. 또한 응용 프로그램 클라이언트는 Java Message Service 메시지를 비동기적으로 사용할 수 있습니다.
- Message-Driven Bean은 메시지의 비동기적인 소모가 가능합니다. Java Message Service 제공자는 Message-Driven Bean에 의해 메시지의 동시 처리를 선택적으로 구현할 수도 있습니다.
Message-Driven Bean은 상태 없는 서비스를 나타냅니다. 따라서 기본적으로 완전 익명이거나 클라이언트 표시 ID가 없는 비동기 메시지 사용자입니다. Message-Driven Bean에는 홈과 구성 요소 인터페이스가 없습니다. 클라이언트는 Message-Driven Bean 클래스가 MessageListener가 되는 Java Message Service 대상(대기열 또는 항목)에 메시지를 전송하여 Java Message Service를 통하여 Message-Driven Bean에 액세스합니다.
Message-Driven Bean만이 비동기적으로 메시지를 수신할 수 있습니다. 세션 또는 Entity Bean은 Java Message Service MessageListener가 될 수 없습니다.
Message-Driven Bean은 다음과 같은 특징을 갖습니다.
- 단 하나의 클라이언트 메시지를 받아 실행됩니다.
- 비동기적으로 호출됩니다.
- 비교적 수명이 짧습니다.
- 데이터베이스에서 공유 데이터를 직접 나타내지는 않지만, 이 데이터를 액세스하거나 업데이트할 수 있습니다.
- EJB 서버 충돌 시에는 제거됩니다.
- 상태가 없습니다.
- 선택적으로 트랜잭션을 인식합니다.
EJB 컨테이너 구성
EJB 컨테이너에 대한 로그 수준을 구성할 수 있으며, 모니터링도 가능합니다. EJB 컨테이너는 EJB와 MDB를 처리합니다. 관리 인터페이스를 사용하여 컨테이너가 관리하는 EJB와 MDB에 대한 설정을 구성할 수 있습니다. 이 절에서는 다음 항목에 대해 설명합니다.
일반 구성 수행
EJB 컨테이너의 다음 부분을 구성할 수 있습니다.
- 로깅
- 모니터링
- 트랜잭션 속성
모니터링이 가능하고 트랜잭션 속성을 설정할 수 있도록 EJB 컨테이너에 대한 로그 수준을 설정하려면 다음 작업을 수행합니다.
- 관리 인터페이스의 왼쪽 창에서 수정하려는 EJB 컨테이너 구성에 대한 Sun ONE Application Server 인스턴스 트리를 엽니다.
- "컨테이너" 탭을 확장하여 J2EE 컨테이너 목록이 나타나면 이 목록에서 "EJB 컨테이너"를 선택합니다. 관리 인터페이스의 오른쪽 창에서 "EJB 컨테이너 - 일반 구성"이라고 표시된 창이 나타납니다.
   EJB 컨테이너 - 일반 구성
![]()
- EJB 컨테이너를 모니터링하려면 "모니터링 사용 가능"에 해당하는 확인란을 선택하십시오. 이제 이 특정한 Sun ONE Application Server 인스턴스의 EJB에 대한 모니터링이 가능합니다. 모니터가 가능한 EJB 컨테이너 부분에 대한 목록을 보려면 표 "EJB 컨테이너에 대한 모니터링 통계"를 참조하십시오.
- "로그 수준" 드롭다운 목록에서 원하는 로그 수준을 선택합니다. 모든 로그 수준과 정의에 대한 목록은 "로깅 사용"을 참조하십시오. 로그 수준 지정은 기록되는 메시지의 유형을 제어합니다. 예를 들어, 로그 수준 FATAL을 가진 메시지만 기록되도록 지정하면, 이 값보다 "높은" 로그 수준의 메시지는 자연스럽게 무시됩니다. 그리고 명시적 로그 수준으로 기록되는 메시지만 이 값과 비교됩니다.
명시적 로그 수준을 갖지 않은 메시지는 무제한으로 기록됩니다. 기본 동작은 모든 경고, 오류 및 치명적 메시지를 로깅하는 것입니다.
- "완결 옵션" 드롭다운 목록에서 EJB 컨테이너에 대해 사용할 "완결 옵션"을 선택합니다.
트랜잭션은 두 가지 방법으로 끝낼 수 있습니다. 즉, 완결을 사용하거나 롤백을 사용할 수 있습니다. 트랜잭션을 완결하면 문을 사용한 데이터 수정이 저장됩니다. Enterprise Bean을 설계할 때는 완결이 컨테이너 관리 트랜잭션인지, 아니면 Bean 관리 트랜잭션인지를 결정합니다. 따라서 UI의 옵션은 Bean 관리 완결의 경우 B이며, 컨테이너 관리 완결의 경우 C입니다.
- "등록 정보" 버튼을 눌러 EJB 컨테이너에 대한 새 등록 정보를 만듭니다.
- 확인을 눌러 설정을 저장합니다.
다음 표는 모니터할 수 있는 EJB 컨테이너에 대한 속성을 나타냅니다.
EJB 설정 구성
관리 인터페이스를 사용하여 EJB 컨테이너에서 관리되는 EJB에 대한 기본 풀과 Bean 캐시 설정을 구성할 수 있습니다. 이와 관련한 내용은 다음 항목에서 설명합니다.
EJB 풀 설정 구성
EJB 풀 설정을 구성하려면 다음 작업을 수행합니다.
- 관리 인터페이스의 왼쪽 창에서 수정할 EJB 설정의 Sun ONE Application Server 인스턴스 트리를 엽니다.
- "컨테이너" 탭을 확장하여 J2EE 컨테이너 목록이 나타나면 이 목록에서 "EJB 컨테이너"를 선택합니다. 관리 인터페이스의 오른쪽 창에서 "EJB 풀 설정 구성"이라고 표시된 창이 나타납니다.
   EJB 풀 설정 구성
![]()
- "고정 풀 크기" 필드에서 풀의 최소 Bean 수를 지정합니다. 이 수는 Stateless Session Bean에 적용됩니다.
- "최대 풀 크기" 드롭다운 목록에서 지정된 시간 내에 원하는 풀의 최대 Bean 수를 지정합니다. 이 설정은 Stateless Session Bean에 적용됩니다.
- idle-timeout-in-seconds 태그에서 지정한 시간을 초과해서 Bean이 계속 유휴 상태로 있는 경우, 풀에서 제거할 Bean의 수를 "풀 크기 조정 개수" 필드에 지정합니다.
- "유휴 시간 초과(초)" 필드에서 Bean이 유휴 상태가 될 수 있는 시간(초)을 지정합니다. 유휴 시간 초과 기간이 경과해도 여전히 Bean이 유휴이면 삭제됩니다.
- "저장"을 눌러 변경 사항을 저장합니다.
EJB 캐시 설정 구성
EJB 캐시 설정을 구성하려면 다음 작업을 수행합니다.
- 관리 인터페이스의 왼쪽 창에서 수정할 EJB 설정의 Sun ONE Application Server 인스턴스 트리를 엽니다.
- "컨테이너" 탭을 확장하여 J2EE 컨테이너 목록이 나타나면 이 목록에서 "EJB 컨테이너"를 선택합니다. 관리 인터페이스의 오른쪽 창에서 "EJB 풀 설정 구성"이라고 표시된 창이 나타납니다.
   EJB 캐시 설정 구성
![]()
- Max Cache Size 필드에서, 캐시에서 유지하려는 최대 Bean의 수를 지정합니다. 이 속성에 대한 기본값은 idle-timeout-in-seconds 속성에서 지정한 것과 같습니다.
- Cache Resize Quantity 필드에서, 풀의 Bean 수가 Max Cache Size 속성에서 지정한 개수를 초과할 경우 삭제할 Bean의 개수를 지정합니다.
- 백업 저장소에서 유휴인 Bean이 비활성화 상태를 유지할 수 있는 시간을 Removal Timeout (secs) 필드에 지정합니다. removal-timeout-in-seconds 속성에서 지정한 값을 넘어 클라이언트가 Bean에 액세스하지 않는 경우, Bean은 백업 저장소에서 제거되므로 클라이언트에서 액세스할 수 없게 됩니다.
- Victim Selection Policy 드롭다운 목록에서, 풀에서 제거할 희생자 Bean을 선택하기 위해 사용해야 하는 희생자 선택 알고리즘을 선택합니다.
- Idle Timeout (secs) 필드에서 캐시에서 유휴하도록 허용된 Bean에 대한 시간을 지정합니다. 이 시간이 경과되면 Bean이 비활성화됩니다. Bean이 비활성화 상태에 있는 시간(유휴 백업 저장소 내)은 removal-timeout-in-seconds 매개 변수에 의해 제어됩니다.
- "저장"을 눌러 변경 사항을 저장합니다.
MDB 풀 설정 구성
관리 인터페이스를 사용하여 EJB 컨테이너에서 관리되는 MDB에 대한 기본 풀 설정을 구성할 수 있습니다. MDB에 대한 기본 풀 설정을 구성하려면, 다음 작업을 수행하십시오.
- 관리 인터페이스의 왼쪽 창에서 수정하려는 MDB 컨테이너 구성의 Sun ONE Application Server 인스턴스 트리를 엽니다.
- "컨테이너" 탭을 확장하여 J2EE 컨테이너 목록이 나타나면 이 목록에서 "EJB 컨테이너"를 선택합니다. 관리 인터페이스의 오른쪽 창에서 "MDB 풀 설정 구성"이라고 표시된 창이 나타납니다.
   MDB 풀 설정 구성
![]()
- MDB 설정을 누릅니다. Steady Pool Size 텍스트 필드에서 풀의 최대 Bean 수를 지정합니다. 이 수는 Stateless Session Bean에 적용됩니다.
- Max Pool Size 필드에서 지정된 시간 내에 원하는 풀의 최대 Bean 수를 지정합니다.
- idle-timeout-in-seconds 태그에서 지정한 시간을 초과해서 Bean이 계속 유휴 상태로 있는 경우 풀에서 제거할 Bean의 수를 "풀 크기 조정 개수" 필드에 지정합니다.
- Idle Timeout (secs) 필드에서 Bean이 유휴 상태를 유지할 수 있는 시간(초)을 지정합니다. 유휴 시간 초과 기간이 경과해도 Bean이 여전히 유휴 상태에 있으면 삭제됩니다.
- "저장"을 눌러 해당 설정을 저장합니다.