이 장에서는 서버에 포함된 J2EE 컨테이너를 구성하는 방법에 대해 설명합니다. 이 장은 다음 내용으로 구성되어 있습니다.
J2EE 컨테이너에서는 응용 프로그램 구성 요소에 대한 런타임 지원을 제공합니다. J2EE 응용 프로그램 구성 요소에서는 컨테이너의 프로토콜 및 메소드를 사용하여 서버에서 제공하는 다른 응용 프로그램 구성 요소와 서비스에 액세스합니다. Application Server는 응용 프로그램 클라이언트 컨테이너, 애플릿 컨테이너, 웹 컨테이너 및 EJB 컨테이너를 제공합니다. 컨테이너를 표시하는 다이어그램은 Application Server 구조 절을 참조하십시오.
웹 컨테이너는 웹 응용 프로그램을 호스트하는 J2EE 컨테이너입니다. 웹 컨테이너는 개발자에게 서블릿 및 JavaServer Pages(JSP 파일)를 실행하는 환경을 제공함으로써 웹 서버 기능을 확장합니다.
Enterprise Bean(EJB 구성 요소)은 비즈니스 논리를 포함하는 프로그래밍 언어 서버 구성 요소입니다. EJB 컨테이너는 Enterprise Bean에 대한 로컬 및 원격 액세스를 제공합니다.
Enterprise Bean에는 Session Bean, Entity Bean 및 Message-Driven Bean의 3가지 유형이 있습니다. Session Bean은 임시 객체와 프로세스를 나타내며 대개 단일 클라이언트에서 사용합니다. Entity Bean은 일반적으로 데이터베이스에서 유지 관리되는 지속성 데이터를 나타냅니다. Message-Driven Bean은 응용 프로그램 모듈과 서비스에 비동기적으로 메시지를 전달하기 위해 사용합니다.
컨테이너는 Enterprise Bean을 만들고 다른 응용 프로그램 구성 요소가 Enterprise Bean을 액세스할 수 있도록 이를 이름 지정 서비스에 바인딩하며, 권한이 있는 클라이언트만 Enterprise Bean 메소드에 액세스할 수 있게 하고, Bean의 상태를 영구 저장소에 저장하고 Bean의 상태를 캐싱하고 필요한 경우 Bean을 활성화하거나 비활성화하는 일을 담당합니다.
이 릴리스에는 관리 콘솔의 웹 컨테이너에 대한 컨테이너 차원의 설정이 없습니다.
이 절에서는 웹 컨테이너의 HTTP 세션 설정에 대해 설명합니다. HTTP 세션은 영구 저장소에 상태 데이터를 기록하는 고유한 웹 세션입니다.
관리 콘솔을 사용하여 HTTP 세션 시간 초과 값을 설정합니다. 세션 시간 초과 값은 HTTP 세션이 유효한 기간을 나타냅니다.
관리 콘솔에서 구성 > 웹 컨테이너 > 세션 등록 정보로 이동하십시오. 세션 시간 초과 필드에 세션이 유효한 시간(초)을 입력합니다.
세션 시간 초과 값 설정에 대한 자세한 지침을 보려면 관리 콘솔에서 도움말을 누르십시오.
세션 관리자는 세션을 만들고 삭제하는 방법과 세션 상태 저장 위치 및 최대 세션 수를 구성할 수 있는 방법을 제공합니다.
관리 콘솔에서 세션 관리자 설정을 변경하려면 구성 > 웹 컨테이너 > 관리자 등록 정보로 이동하십시오.
구성할 인스턴스를 선택합니다.
특정 인스턴스를 구성하려면 해당 인스턴스 구성 노드를 선택합니다. 예를 들어, 기본 인스턴스 server에 대해 server-config 노드를 선택합니다.
모든 인스턴스의 기본 설정을 구성하려면 default-config 노드를 선택합니다.
관리자 등록 정보 탭에서 다음 등록 정보를 설정합니다.
최대 세션 값. 최대 세션 필드는 허용된 최대 세션 수입니다.
세션 아이디 생성기 클래스 이름 필드를 사용하면 고유한 세션 아이디를 생성하는데 필요한 사용자 정의 클래스를 지정할 수 있습니다. 서버 인스턴스당 세션 아이디 생성기 클래스 하나만 허용되므로 클러스터의 모든 인스턴스는 세션 키 충돌을 방지하기 위해 동일한 세션 아이디 생성기를 사용해야 합니다.
사용자 정의 세션 아이디 생성기 클래스는 com.sun.enterprise.util.uuid.UuidGenerator 인터페이스를 구현해야 합니다.
package com.sun.enterprise.util.uuid; public interface UuidGenerator { public String generateUuid(); public String generateUuid(Object obj); //obj is the session object }
클래스가 Application Server 클래스 경로에 있어야 합니다.
관리자 등록 정보 설정에 대한 자세한 지침을 보려면 관리 콘솔에서 도움말을 누르십시오.
세션 저장소 데이터를 저장할 위치를 지정하려면 관리 콘솔에서 구성 > 웹 컨테이너 > 저장소 등록 정보로 이동하십시오.
구성할 인스턴스를 선택합니다.
특정 인스턴스를 구성하려면 해당 인스턴스 구성 노드를 선택합니다. 예를 들어, 기본 인스턴스 server에 대해 server-config 노드를 선택합니다.
모든 인스턴스의 기본 설정을 구성하려면 default-config 노드를 선택합니다.
세션 저장소 등록 정보 설정에 대한 자세한 지침을 보려면 관리 콘솔에서 도움말을 누르십시오.
Application Server를 설치할 때 Application Server 인스턴스의 기본 가상 서버가 만들어집니다. 이 가상 서버의 기본 docroot는 instance-dir domains/domain1/docroot에 만들어지며 instance_name/docroot와 동기화됩니다. 가상 서버는 사용자가 만든 각 추가 Application Server 인스턴스당 하나씩 만들어집니다.
이 절에서는 서버의 모든 Enterprise Bean 컨테이너에 적용되는 다음 설정에 대해 설명합니다.
기본값을 컨테이너별로 대체하려면 Enterprise Bean의 sun-ejb-jar.xml 파일에서 값을 조정합니다. 자세한 내용은 Application Server Developer’s Guide를 참조하십시오.
세션 저장 위치 필드는 비활성화된 Bean과 영구 HTTP 세션을 파일 시스템에 저장하는 디렉토리를 지정합니다.
비활성화된 Bean은 파일 시스템의 파일에 상태를 기록한 Enterprise Bean입니다. 일반적으로 비활성화된 Bean은 일정 기간 동안 유휴 상태에 있으므로 현재 클라이언트가 액세스할 수 없습니다.
비활성화된 Bean과 마찬가지로 영구 HTTP 세션은 파일 시스템의 파일에 자신의 상태를 기록한 개별 웹 세션입니다.
완결 옵션 필드는 컨테이너가 트랜잭션 간의 비활성화된 Entity Bean 인스턴스를 캐시하는 방법을 지정합니다.
옵션 B는 트랜잭션 간의 Entity Bean 인스턴스를 캐시하며 기본적으로 선택되어 있습니다. 옵션 C는 캐싱을 비활성화합니다.
Bean을 작성하여 생기는 성능 저하 없이 클라이언트 요청에 응답할 수 있도록 컨테이너는 Enterprise Bean 풀을 유지 관리합니다. 이 설정은 Stateless Session Bean 및 Entity Bean에만 적용됩니다.
배포된 Enterprise Bean을 사용하는 응용 프로그램에서 성능 문제가 발생하면 풀을 만들거나 기존 풀이 관리하는 Bean 수를 늘려서 응용 프로그램의 성능을 증가시킬 수 있습니다.
기본적으로 컨테이너는 Enterprise Bean의 풀을 유지 관리합니다.
컨테이너는 자주 사용되는 Enterprise Bean에 대해 Enterprise Bean 데이터 캐시를 유지 관리합니다. 이렇게 하면 컨테이너가 다른 응용 프로그램 모듈의 Enterprise Bean 데이터 요청에 빨리 응답할 수 있습니다. 이 절은 Stateful Session Bean과 Entity Bean에만 적용됩니다.
캐시된 Enterprise Bean의 상태는 활성, 유휴 또는 비활성 중 하나입니다. 활성화된 Enterprise Bean은 현재 클라이언트가 액세스하고 있습니다. 유휴 Enterprise Bean의 데이터는 현재 캐시에 있지만 Bean에 액세스하는 클라이언트가 없습니다. 비활성화된 Bean의 데이터는 임시로 저장되지만 클라이언트가 Bean을 요청할 경우 다시 캐시로 읽어 들입니다.
Message-Driven Bean의 풀은 EJB 풀 설정 구성에 설명된 Session Bean의 풀과 유사합니다. 기본적으로 컨테이너는 Message-Driven Bean의 풀을 관리합니다.
이 풀의 구성을 조정하려면 다음 작업을 수행합니다.
타이머 서비스는 Enterprise Bean 컨테이너에서 사용하는 알림이나 이벤트를 예약하기 위해 컨테이너에서 제공하는 영구적인 트랜잭션 알림 서비스입니다. Stateful Session Bean을 제외한 모든 Enterprise Bean은 타이머 서비스를 통해 알림을 받을 수 있습니다. 서비스에 설정된 타이머는 서버가 종료되거나 다시 시작되어도 삭제되지 않습니다.