EJB 세션 구성 요소 분석
EJB 구성 요소: 기본 구조 해석에서 우리는 EJB 구성 요소의 홈 인터페이스, 리모트 인터페이스와 EJB 구성 요소 클래스 등 내용을 상세하게 소개했다.오늘 EJB의 세션 구성 요소 적용 및 분류를 분석합니다.
세션 구성 요소의 적용 방법
세션 유형 EJB 구성 요소는 클라이언트 응용 프로그램이 EJB 구성 요소의 홈 인터페이스를 통해 만들고 클라이언트에 연결하는 전용 구성 요소 유형으로, 일반적으로 EJB 서버에서 만든 세션 구성 요소 대상의 실례는 다른 클라이언트 응용 프로그램과 공유되지 않습니다.하나의 세션 구성 요소는 비즈니스 프로세스, 간단한 계산 프로세스나 논리 처리 프로세스를 실현하고 응용 과정에서 클라이언트의 세션 역할에 변화가 일어나지 않는다.
예를 들어 인터넷 쇼핑의 전자상거래 응용 프로그램에서 고객은 쇼핑을 탐색하기 전에 쇼핑카트를 만들 수 있다. 이 쇼핑카트의 기능은 세션 유형 구성 요소로 완성할 수 있다.고객이 쇼핑하는 동안 카트의 소유자는 카트를 만드는 고객이며 다른 고객은 자신이 소유하지 않는 카트에 상품을 추가할 수 없습니다.고객이 결제한 후 쇼핑 카트 역할을 하는 세션 구성 요소를 EJB 컨테이너의 인스턴스 풀에서 제거하여 세션 프로세스를 종료합니다.
세션 유형의 EJB 구성 요소는 일반적으로 분산 다중 계층 응용 시스템에서 두 가지 유형으로 적용됩니다.
3층 체계 구조에서의 응용 방식
일반적인 3층 체계 구조의 분포식 응용에서 비즈니스 논리를 처리하는 코드를 EJB 서버에 배치된 EJB 구성 요소로 봉인하고 시스템의 디스플레이 논리를 클라이언트에 배치함으로써 전체 시스템 구조를 더욱 명확하게 한다. 아래 그림과 같다.
그림 1 3 계층 구조 분산 응용 프로그램 세션 유형 EJB 구성 요소 배포도
위의 그림과 같이 EJB 서버에 여러 개의 EJB 구성 요소 객체를 배치합니다.세션 유형 EJB 구성 요소의 경우 클라이언트 응용 프로그램이 제출한 서비스 요청에 따라 비즈니스 논리 처리를 하고 응용 시스템 백그라운드에 배치된 데이터베이스와 상호작용을 하는 것이 주요 역할이다.세션 유형 EJB 구성 요소와 데이터베이스의 상호작용은 JDBC 등 Java 언어 데이터베이스 접근 방식을 통해 이루어진 것이지 실체 유형 EJB 구성 요소처럼 구성 요소 자체가 데이터베이스 테이블의 기록을 나타내는 것이 아니다.
WEB 분산 응용 프로그램 기반 응용 프로그램
세션 구성 요소는 WEB 기반의 분산 응용 프로그램에서 클라이언트 브라우저는 HTTP 프로토콜을 이용하여 하이퍼텍스트로 WEB 서버에 배치된 WEB 구성 요소와 상호작용을 한다.웹 구성 요소에 JSP나 Servlet 등 하이퍼텍스트 페이지의 동적 생성 코드를 봉하여 비즈니스 논리적 처리 상황에 따라 클라이언트 브라우저에 표시된 페이지 내용을 동적 생성합니다.세션 유형 EJB 구성 요소는 다음 그림과 같이 WEB를 기반으로 적용됩니다.
그림 2 WEB 응용 프로그램의 세션 유형 EJB 구성 요소 배포도
WEB 기반의 분포식 응용에서 비즈니스 논리 처리 부분의 코드를 WEB 서버에서 WEB 구성 요소의 코드로 직접 작성할 수 있다.그러나 비즈니스 규칙 코드를 EJB 구성 요소로 봉인하여 서로 다른 유형의 클라이언트 응용 프로그램이 EJB 서버에 배치된 구성 요소 대상을 공유할 수 있게 하여 코드의 중용성과 이식성을 향상시켰다.
세션 구성 요소의 상속 관계 세션 유형 EJB 구성 요소의 정의는 SessionBean 인터페이스 객체를 구현합니다.이 인터페이스의 정의는 아래 코드와 같다:
<ccid_code>public interface javax.ejb.SessionBean extends javax.ejb.EnterpriseBean
{
public void ejbActivate() throws RemoteException;
public void ejbPassivate() throws RemoteException;
public void ejbRemove() throws RemoteException;
public void setSessionContext(SessionContext context)
throws RemoteException;
}</ccid_code>
위의 SessionBean 인터페이스 정의에서 EnterpriseBean 인터페이스는 빈 인터페이스 정의로 세션 유형 EJB 구성 요소와 실체 유형 EJB 구성 요소가 공통된 부모 인터페이스입니다.SessionBean 인터페이스는 EnterpriseBean 인터페이스를 상속합니다.세션 유형 EJB 구성 요소의 활성화와 닫기는 EJB 서버의 작업 효율을 높이고 EJB 구성 요소가 서버 자원에 대한 소모를 줄이기 위해 EJB 규범은 세션 유형 EJB 구성 요소의 활성화와 닫기 메커니즘을 정의하여 EJB 용기의 구성 요소 실례 풀에서 활동하는 EJB 구성 요소 실례 대상의 수량과 상태를 동적으로 조정하는 데 사용한다.EJB 서버에서 구성 요소의 인스턴스 상태를 조정하는 방법은 다음과 같습니다. EJB 컨테이너의 속성에는 세션 유형 EJB 구성 요소가 비활성 상태인 시간별 값 속성이 포함됩니다.이 시간 속성은 EJB 구성 요소의 배치자가 응용 시스템의 구성 요소 수량과 EJB 서버의 성능에 따라 설정합니다.EJB 구성 요소 객체의 인스턴스가 비활성 상태인 시간이 이 시간 한계에 도달하면 EJB 컨테이너는 이 EJB 구성 요소 인스턴스를 2단계 스토리지 디바이스로 복제하고 인스턴스 풀에서 구성 요소 인스턴스를 제거하며 이 EJB 구성 요소가 사용하고 참조하는 시스템 리소스를 방출합니다.EJB 구성 요소 중 어떤 방법이 실행 중인 업무의 일부분이라면, 이 EJB 구성 요소 실례의 활성화 상태를 닫은 상태로 전환할 수 없습니다.클라이언트가 세션 유형의 EJB 구성 요소를 호출하는 방법을 적용할 때 이 EJB 구성 요소 인스턴스가 닫힌 상태이면 EJB 용기에서 구성 요소 객체를 다시 활성화하고 EJB 용기에서 이 구성 요소의 인스턴스를 만들어 클라이언트의 호출 요청에 응답합니다.무상태 세션 유형 EJB 구성 요소는 클라이언트 상태를 유지하지 않기 때문에 구성 요소에 포함된 클라이언트 정보를 저장할 필요가 없습니다. EJB 용기는 비활성 시간 궐위 값에 도달한 EJB 구성 요소를 EJB 용기에서 직접 삭제할 수 있습니다.이러한 상태 변환은 EJB 서버에서 이루어지기 때문에 클라이언트는 EJB 구성 요소의 실제 상태 변화를 느끼지 못할 것입니다.이에 따라 SessionBean 인터페이스에서 jbActivate 방법과 jbPassivate 방법을 정의하여 EJB 용기에서 이 방법을 호출하여 EJB 구성 요소의 상태를 변환하는 데 사용한다.이렇게 하면 SessionBean 인터페이스에서 정의한 EJB 구성 요소의 상태를 제어하는 방법을 통해 한동안 EJB 구성 요소의 실례적인 수량과 상태를 제어하여 EJB 서버의 작업 효율을 크게 향상시키고 EJB 구성 요소가 서버 측 자원에 대한 소모를 줄일 수 있다.세션 유형 EJB 구성 요소의 분류는 클라이언트가 EJB 서버에 적용되는 상태를 유지 관리하는지에 따라 세션 유형 EJB 구성 요소를 상태 (Stateful) 와 상태 없음 (Stateless) 두 가지 유형으로 나눌 수 있습니다.상태 세션 유형 EJB 구성 요소 상태 세션 유형 EJB 구성 요소 인스턴스와 EJB 구성 요소를 만드는 클라이언트 응용 프로그램 사이에는 일일이 대응하는 관계가 있으며, EJB 용기 프록시 클라이언트 응용 프로그램은 상태 세션 유형 EJB 구성 요소 인스턴스에서 방법을 호출합니다.클라이언트 응용 프로그램과 EJB 용기의 상태 세션 유형 EJB 구성 요소 실례 간의 대응 관계는 아래 그림과 같다. 그림 3 클라이언트 응용 프로그램과 상태 세션 유형 EJB 구성 요소 실례 간의 대응 관계 그림은 위의 그림에서 알 수 있듯이 클라이언트가 EJB 구성 요소 대상 실례를 만들어 EJBObject 유형 대상을 얻는다.클라이언트가 이 구성 요소 객체의 인스턴스에서 비즈니스 방법을 호출할 때 EJB 컨테이너는 구성 요소의 RMI 유형 객체 인스턴스에서 원격 호출 에이전트로 인스턴스 풀의 상태 세션 유형 EJB 구성 요소 인스턴스와 상호 작용하여 EJB 구성 요소에 정의된 방법을 호출합니다.EJB 컨테이너에 정의된 모든 상태 세션 유형 EJB 구성 요소에 대해 EJB 구성 요소와 클라이언트 간의 에이전트로 RMI 유형의 원격 객체를 만듭니다.무상태 세션 유형 EJB 구성 요소 무상태 세션 유형 EJB 구성 요소는 클라이언트가 구성 요소를 호출하는 동안 클라이언트의 상태 정보를 유지하지 않습니다.EJB 컨테이너는 생성된 모든 무상태 세션 유형의 EJB 구성 요소 인스턴스를 하나의 구성 요소 인스턴스 풀에 유지합니다. 클라이언트가 동일한 EJB 구성 요소에 대한 호출 프로세스를 동일한 EJB 구성 요소 객체 인스턴스로 수행할 수 있습니다.클라이언트 응용 프로그램과 EJB 용기의 무상태 세션 유형 EJB 구성 요소 개체 인스턴스 간의 대응 관계는 아래 그림과 같다. 그림 4 클라이언트 응용 프로그램과 무상태 세션 유형 EJB 구성 요소 인스턴스 간의 대응 관계 그림은 위의 그림에서 알 수 있듯이 모든 클라이언트 응용 프로그램은 EJB 서버에 배치된 무상태 세션 유형 EJB 구성 요소를 호출하는 방법에 동일한 RMI 유형의 원격 대상을 EJB 구성 요소의 호출 에이전트로 사용한다.상태 없는 세션 유형 EJB 구성 요소는 서로 다른 클라이언트 응용 프로그램 간에 공유할 수 있습니다.그러나 공유의 과정은 어느 순간 클라이언트 응용 프로그램이 EJB 구성 요소를 호출하는 것과 같은 방법이다.EJB 구성 요소는 클라이언트 응용 프로그램의 상태를 유지할 필요가 없기 때문에 클라이언트가 무상태 세션 유형의 EJB 구성 요소 실례와 같은 방법으로 같은 서비스를 받을 수 있기 때문에 EJB 용기는 비교적 작은 EJB 구성 요소 실례 탱크를 유지하고 서버 자원에 대한 소모를 절약할 수 있다.EJB의 세션 구성 요소에 대해 알아본 후에 EJB 구성 요소의 무상태 세션 유형을 소개할 것입니다. 개발자 채널 계속 지켜봐 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fortinet FortiWeb Web Application Firewall Policy BypassFrom: Geffrey Velasquez Date: Wed, 2 May 2012 20:33:23 -0500...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.