1. EJB 란 무엇입니까?
EJB (Enterprise Java Beans)는 Javaee의 상업용 응용 프로그램 구성 요소 기술이며 Javaee (Servlet, JSP, EJB)의 세 가지 주요 구성 요소 중 하나입니다. EJB는 클라이언트가 원격 분산 객체를 사용할 수있는 프레임 워크를 제공하여 확장 성이 우수한 엔터프라이즈 수준의 응용 프로그램 개발을 크게 단순화합니다. EJB 구성 요소 구조는 구성 요소를 기반으로 한 분산 컴퓨팅 구조이며 분산 응용 프로그램 시스템의 구성 요소입니다.
EJB는 Java 서버 측 서비스 프레임 워크의 사양이며 서버 측 컴포넌트 시스템의 기술 사양을 정의합니다. 이 사양은 표준, 분산 객체 지향 아키텍처를 제공 할 수 있습니다. 구성 요소 개발자 및 사용자를위한 복잡한 시스템 수준의 기본 기능 구현을 차단하여 개발자가 비즈니스 로직 구현에 집중할 수 있으며 일부 복잡한 기본 서비스는 EJB 컨테이너를 담당합니다. 응용 프로그램의 성장에 따라 EJB를 확장 할 수 있으며 EJB 서버는 리소스 액세스 제어뿐만 아니라로드 밸런싱 기능을 제공합니다.
2. EJB 컨테이너와 구성 요소 간의 통신
EJB 컨테이너는 EJB 구성 요소에 작동 환경을 제공합니다. EJB 컨테이너가 EJBS를 관리하는 방식은 웹 컨테이너가 서블릿을 관리하는 방식과 유사합니다. EJB는 EJB 컨테이너로 실행해야합니다. EJB 컨테이너는 주로 EJB 지속성, 수명주기 관리, 보안 관리, 거래 관리, 원격 연결, 동시 처리, 클러스터링 및로드 밸런싱을 관리합니다. 컨테이너는 EJB 구성 요소 인스턴스를 관리하여 EJB 구성 요소가 최대의 성능 및 메모리 활용을 달성 할 수 있도록합니다. 컨테이너는 EJB 구성 요소를 활성화 및 통과하고 인스턴스 풀을 관리 할 수 있습니다. 컨테이너는 분산 트랜잭션 처리의 복잡한 문제를 관리하고 원격 연결을위한 저수준 통신 문제 관리 및 EJB 구성 요소 개발자 및 고객을위한 커뮤니케이션 문제를 은폐 할 수 있습니다. 따라서 EJB 구성 요소 개발자는 비즈니스 로직 캡슐화에 집중할 수 있으며 컨테이너는 다른 모든 트랜잭션을 처리 할 책임이 있습니다. EJB는 EJBContent, JNDJ, 콜백 함수와 같은 메커니즘을 통해 컨테이너와 상호 작용합니다.
JBoss는 EJB를 관리하고 EJB1.1, EJB2.0 및 EJB3 사양을 지원하는 컨테이너 및 서버이며 일반적으로 Tomcat 또는 Jetty에 바인딩됩니다.
그림 1 (EJB 컨테이너의 작동 회로도)을 참조하십시오.
그림 1 : EJB 컨테이너의 작동 원리
EJB 구성 요소는 인스턴스화 될 때 다른 주소 공간의 응용 프로그램과 통신 할 수있는 분산 객체입니다. eJB 인스턴스는 스커트 객체를 통해 클라이언트와 통신하는 골격 객체에 캡슐화됩니다. 스터브에는 비즈니스 로직이 포함되어 있지 않지만 비즈니스 인터페이스를 구현합니다. 스터브 상용 인터페이스의 상업적 방법을 호출 할 때마다 스텁은 네트워크 메시지를 프레임 워크로 보내고 어떤 메소드를 호출했는지 알려줍니다. 프레임 워크는 EJB 인스턴스의 해당 메소드를 호출하고 EJB 인스턴스에서 리턴 한 결과를 스터브로 보냅니다. 스텁은 이러한 결과를 해당 응용 프로그램으로 반환합니다. 두 개의 중간 객체, 스터브 및 프레임 워크를 통해 분산 객체 간의 복잡한 통신 프로세스가 차단됩니다. 프레임 워크는 컨테이너에 의해 구현되며, 스터브는 개발 도구에 의해 자동으로 생성되며, 그 중 어느 것도 코드를 작성할 필요가 없습니다. 그림 2 (EJB 구성 요소 통신 회로도)를 참조하십시오.
그림 2 : EJB 구성 요소 간의 통신 원리
3. EJB 분류
EJB 구성 요소는 세션 Bean과 메시지 구동 Bean의 두 가지 유형으로 나눌 수 있습니다. 세션 Bean은 비즈니스 로직을 캡슐화합니다. 클라이언트는 로컬, 원격 및 웹 서비스를 통해 세션 Bean 메소드를 호출하여 서버에 배포 된 응용 프로그램에 액세스하여 다른 Bean의 방법을 호출 할 수 있습니다. 세션 Bean은 영구적이지 않습니다. 즉, 데이터가 데이터베이스에 저장되지 않습니다. 그 중에서도 세션 Bean에는 세 가지 유형의 세 가지 유형이 포함되어 있습니다. 상태가 많은 세션 Bean, 무국적 세션 Bean 및 단일 피스 세션 Bean이 포함됩니다. 메시지 구동 콩은 종종 특정 유형의 메시지의 리스너로 사용되므로 Javaee는 비동기 메시지를 처리 할 수 있으며 클라이언트는 인터페이스를 통해 메시지 구동 콩에 액세스하지 않습니다.
다음은 Stateful Session Bean, Stateless Session Bean, 단일 피스 세션 Bean 및 메시지 중심 세션 Bean을 차례로 소개합니다.
4. 무국적 세션 Bean
무국적 세션 Bean은 고객에게만 비즈니스 논리를 제공하며 고객에게는 세션 상태를 유지하지 않습니다. 클라이언트가 무국적 세션 Bean의 메소드를 호출 할 때 해당 세션 Bean의 속성은 호출 상태를 설명하지만 메소드 호출 중에만이 상태를 유지합니다. 메소드 호출이 완료되면 상태가 지워집니다.
무국적 세션 Bean의 수명주기는 컨테이너에 의해 제어됩니다. EJB 컨테이너가 클라이언트의 무국적 세션 Bean에 대한 클라이언트의 요청을 받으면 EJB가 존재하지 않으면 컨테이너가 Bean 인스턴스를 생성하고 필요한 리소스를 구성 요소에 주입 한 다음 컨테이너가 우편 구성 메소드를 다시 호출하고 구성 요소가 생성됩니다. 이때, Bean은 "존재하지 않는"상태에서 "존재"상태로 전이됩니다. 클라이언트 호출이 완료되면 컨테이너는 PRODSTROY 방법을 다시 호출하고 Bean이 파괴됩니다. 이때 콩은 "존재하지 않는"상태에서 "존재하지 않는"상태로 변환됩니다. 그림 3 (무국적 세션 Bean의 수명주기)을 참조하십시오.
그림 3 : 무국적 세션 Bean의 수명주기
5. 상태의 세션 Bean
상태가 많은 세션 Bean은 사용자의 세션 상태를 유지합니다. 다른 사용자가 무국적 세션 Bean처럼 공유 할 수 있도록 구성 요소 풀에 배치 할 수 없습니다. 클라이언트가 요청을 보내는 한 상태 가득한 세션 Bean의 경우 컨테이너는 클라이언트에 해당하는 인스턴스를 생성하고 한 클라이언트는 인스턴스에 해당합니다. 평생 동안 상태가 많은 세션 Bean은 사용자의 정보를 유지하고 세션이 끝나면 상태가 많은 세션 Bean의 수명주기도 끝납니다.
상태가 많은 세션 Bean에는 비 존재, 능동 및 패시베이션의 세 가지 활성 상태가 있습니다. Stateful Session Bean이 일정 기간 동안 활성화되면, 외부 클라이언트의 요청이 아직 수신되지 않으면 시스템 리소스를 저장하기 위해 컨테이너는 Stateful Session Bean의 상태 정보를 임시 저장 공간으로 직렬화하고 Stateful Session Bean을 메모리에서 제거합니다. 이 과정을 "패시베이션"이라고합니다. 컨테이너는 패시베이션하기 전에 사전 관련 방법을 다시 호출합니다. 컨테이너가 통행 된 상태가 많은 세션 Bean에 대한 요청을 받으면 상태가 많은 세션 Bean의 인스턴스를 다시 구분하고 임시 공간에서 상태 정보를 가져와 활성 상태로 반환합니다. 이 과정을 "활성화"라고합니다. 활성화 후 컨테이너는 Proactivate 방법을 다시 호출합니다. Stateful Session Bean이 일정 기간 동안 유동적 인 경우, 컨테이너는 인스턴스를 완전히 지우고 PRODSTROY 방법을 다시 호출합니다. 그림 4 (상태가 많은 세션 Bean의 수명주기)를 참조하십시오.
그림 4 : 상태가 많은 세션 Bean의 수명주기
6. 단일 객실 세션 Bean
단일 피스 세션 Bean은 각 애플리케이션마다 한 번 인스턴스화되며 응용 프로그램의 수명주기 전체에 항상 존재합니다. 단일 피스 세션 Bean은 특정 시나리오를 위해 설계되었으며 클라이언트는 공유 및 동시 모드 에서이 고유 한 EJB 인스턴스에 액세스 할 수 있습니다.
단일 피스 세션 Bean은 무국적 세션 Bean과 매우 유사합니다. 차이점은 단일 피스 세션 Bean이 응용 프로그램에 하나의 인스턴스 만있는 반면, 무국적 세션 Bean에는 많은 인스턴스가있을 수 있으며 각 인스턴스는 사용자가 공유 할 수 있도록 구성 요소 풀에 배치됩니다.
단일 피스 세션 콩은 무국적 세션 콩과 같으며 결코 통행되지 않습니다. 수명주기에는 "존재하지 않는"과 "존재"라는 두 가지 유형의 신체 만 포함됩니다. 그림 5 (단일 피스 세션 Bean의 수명주기)를 참조하십시오.
그림 5 : 단일 피스 세션 Bean의 수명주기
7. 메시지 구동 콩
메시지 중심 콩은 메시지 기반 요청을 구체적으로 처리하도록 설계된 구성 요소입니다. 메시지 중심 콩은 JMS (Java Message Service) 및 엔터프라이즈 콩의 기능을 통합합니다. 클라이언트는 참조를 직접 얻을 수없고 메소드를 호출 할 수는 없지만 시스템 메시지로만 시작할 수 있습니다.
EJB 컨테이너는 일반적으로 메시지 구동 콩의 구성 요소 풀을 만듭니다. 무국적 세션 콩과 마찬가지로, 메시지 구동 콩은 결코 통행되지 않으며, 그들의 수명주기에는 존재하지 않는 존재와 존재의 두 단계 만 포함됩니다.
메시지 중심 Bean 클래스는 Messagelistener 인터페이스를 구현해야합니다. 컨테이너가 대기열에서 콩이 듣고 있다는 메시지를 감지하면 onMessage () 메소드를 호출하고 메시지를 매개 변수로 전달합니다.
J2EE의 기본 EJB에 대한 위의 포괄적 인 이해는 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.