제2장 EJB 엔진

내용 목차

2.1. 개요
2.2. 주요 기능
2.3. EJB 엔진 디렉터리 구조
2.4. EJB 엔진 설정
2.4.1. Basic 설정
2.4.2. Active Management 설정
2.4.3. Timer Service 설정
2.5. 시스템 로그 설정
2.6. EJB 엔진 제어 및 모니터링
2.7. EJB 엔진 튜닝
2.7.1. Resolution 설정 튜닝
2.7.2. Fast Deploy
2.7.3. 최대 성능을 위한 시스템 로그 설정
2.7.4. Active Management 사용하지 않기
2.7.5. HTTP Invoke 모드 사용

본 장에서는 EJB 엔진에 대한 기초적인 사항과 JEUS EJB의 최상위 레벨의 개념인 구조, 설정, 운영, 모니터링과 튜닝에 대해 설명한다.

EJB 엔진은 EJB의 운영 환경을 제공한다. 본 안내서에서 사용한 EJB 엔진은 EJB 표준에서 사용하는 EJB 컨테이너라는 용어와 동일한 개념이다. EJB 모듈, EJB deploy에 대한 상세한 정보는 각각 “제3장 EJB 모듈”“제4장 EJB의 공통 특성”을 참고한다.

다음은 EJB 엔진의 주요 기능에 대한 설명이다.

다음은 EJB 엔진을 관리할 때 사용하게 되는 디렉터리와 파일의 목록이다.


기본 디렉터리에 대한 내용은
“1.3.1. 디렉터리 구조”와 동일하고, 다음은 EJB 엔진에서 주로 사용하는 디렉터리에 대한 설명이다.

bin

EJB 엔진을 관리하는 툴이 위치한 디렉터리이다.

EJB 엔진 관리 툴설명
appcompilerEJB를 deploy하기 위해 필요한 클래스를 생성하고 컴파일해서 Fast Deploy를 수행한다.
jeusadminEJB 엔진을 제어하고 모니터링하기 위해 사용된다.
domains/<doamin name>/servers/<server name>/logs

EJB 엔진의 로그 파일이 위치한 디렉터리이다. EJB 로그의 파일 핸들러를 별도로 지정한 경우 별도의 파일로 생성된다. 핸들러가 없는 경우에는 서버의 로그 설정을 따르게 된다.

본 절에서는 WebAdmin을 사용하여 EJB 엔진을 설정하는 방법을 설명한다.

WebAdmin을 통한 EJB 엔진 설정은 크게 다음의 3가지 설정으로 나눌 수 있다. WebAdmin을 사용하여 설정된 내용은 JEUS_HOME/domains/<domain name>/config에 위치한 domain.xml 파일에 저장된다.

참고

하나의 MS에는 하나의 EJB 엔진이 존재한다. MS를 추가하는 방법에 대한 자세한 내용은 JEUS Server 안내서”의 “제2장 JEUS 설정”을 참고한다.

WebAdmin을 사용한 EJB 엔진의 Basic 설정 과정은 다음과 같다.

  1. WebAdmin의 [Servers] 메뉴를 선택하면 서버 목록 조회 화면으로 이동한다. 서버 목록에서 실행할 서버를 선택하여, 서버 설정 화면으로 이동한 후 [Engine] > [Ejb Engine] > [Basic] 메뉴를 선택한다.

  2. [LOCK & EDIT] 버튼을 클릭해서 설정변경 모드로 전환한다.

  3. EJB Engine 화면에서 EJB 엔진에 대한 기본적인 항목을 설정하고 [확인] 버튼을 클릭한다.


    다음은 기본 정보고급 선택사항의 영역별 설정 항목에 대한 설명이다.

    • 기본 정보

      항목설명
      ResolutionActive Management의 체크 주기와 Passivation 체크 주기를 설정한다. 즉, block된 스레드를 감지하는 주기와 Passivation 타임아웃 동안 클라이언트로부터 요청을 받지 않은 Bean을 감지하는 주기이다.
      Use Dynamic Proxy For Ejb2기존 RMI Stub 방식 대신 Dynamic Proxy 방식을 사용한다.
    • 고급 선택사항

      • Ejb Engine

        항목설명
        Enable User Notify옵션을 설정하면 EJB Exception이 서버에 설정한 user log에 남게 된다. user log에 대한 설명은 JEUS Server 안내서”의 “제8장 Logging”을 참고한다.
      • Async Service

        Asynchronous Invocation Service를 위한 설정이다.

        항목설명
        Thread Min유지할 스레드 개수의 최솟값을 설정한다.
        Thread Max유지할 스레드 개수 최댓값을 설정한다.
        Access Timeout

        Async 메소드가 수행이 완료된 후 일정 시간이 지나도 클라이언트에서 get을 하지 않으면 Future 객체를 삭제하는 시간이다.

        이는 클라이언트의 실수로 get을 하지 않는 경우 Memory Leak의 발생을 방지하기 위한 설정이다.

      • Invoke Http

        EJB RMI Stub이 RMI 런타임 포트를 접근할 수 없는 상황일 경우에 설정한다.

        항목설명
        Url

        RMI Stub으로부터 호출되는 RMI 핸들러 서블릿의 URI를 입력한다.

        • URI에는 프로토콜, IP 주소, 포트를 제외한 서블릿 요청 경로만을 넣는다. 즉, rmiHandlerServlet.war의 jeus-web-dd.xml에 설정한 <contex-path>와 web.xml에 설정한 <url-pattern>을 이어서 입력한다. jeus-web-dd.xml을 별도로 생성하지 않으면 <contex-path>의 기본값인 war 이름으로 예에서는 rmiHandlerServlet이 된다.

        • 프로토콜은 "HTTP"로 IP는 RMI 런타임과 동일한 주소로 간주된다. HTTP-RMI 요청을 받은 웹 서버와 웹 엔진이 RMI 런타임과 같은 머신에 있어야 한다. 그러면 RMI 런타임의 주소는 RMI Stub에게 알려지게 된다. 웹 서버의 포트는 반드시 다음 <http-port>에 설정해야 한다.

        • JEUS에서 제공하는 rmiHandlerServlet.war에는 jeus-web-dd.xml이 포함되어 있지 않다. 따라서 기본적으로 컨텍스트는 모듈 이름과 같은 rmiHadlerServlet을 사용하게 된다. 또한 web.xml에는 <url-pattern>이 서블릿 핸들러가 설정되어 있다. 기본값 외의 설정을 사용하고 싶은 경우에는 jeus-web-dd.xml을 생성하고 web.xml를 수정한 후 rmiHandlerServlet.war를 deploy한다.

        Http PortHTTP-RMI 요청을 받을 포트 번호를 설정한다. 웹 서버 및 웹 엔진에는 반드시 RMI 핸들러 서블릿이 deploy되어 실행되고 있어야 한다.
  4. 설정 내용의 동적 반영을 위해 [Activate Changes] 버튼을 클릭한다.

Active Management 설정은 엔진 재시작 조건들과 이메일 통보 기능으로 나누어진다. 엔진 재시작 조건은 EJB 엔진이 재시작하기 전까지의 허용 가능한 최대 block된 EJB 스레드 수로 결정된다.

WebAdmin을 사용한 EJB 엔진의 Active Management 설정 과정은 다음과 같다.

  1. WebAdmin의 [Servers] 메뉴를 선택하면 서버 목록 조회 화면으로 이동한다. 서버 목록에서 실행할 서버를 선택해서 서버 설정 화면으로 이동한 후 [Engine] > [Ejb Engine] > [Active Management] 메뉴를 선택한다.

  2. [LOCK & EDIT] 버튼을 클릭해서 설정변경 모드로 전환한다.

  3. Active Management 화면에서 항목을 설정하고 [확인] 버튼을 클릭한다.


    다음은 기본 정보고급 선택사항의 영역별 설정 항목에 대한 설명이다.

    • 기본 정보

      항목설명
      Max Blocked Thread

      EJB 엔진이 재시작 권고하기 전까지 허용할 수 있는 block된 EJB 스레드의 최대 개수이다. 이 값이 작게 설정되어 있다면 EJB 엔진 재시작 권고가 너무 자주 될 수도 있기 때문에 주의해야 한다.

      기본값으로 설정하면 block된 스레드 개수에 대한 제한이 없음을 의미한다. 즉, 기본적으로 EJB 엔진은 block된 스레드 때문에 재시작 권고를 하지 않는다.

      Max Idle Time

      지정된 시간 동안 스레드가 block된 상태로 요청을 받지 않고 Idle 상태에 있으면 "block된 스레드 리스트"로 추가된다.

      이 설정은 엔진에서 block된 스레드로 판단하는 기준이 된다.

    • 고급 선택사항

      • Email Notify

        재시작 권고 조건에 따라 EJB 엔진이 시작될 경우에 이메일 통보를 보내기 위한 정보를 설정한다.

        항목설명
        Smtp Host Address메시지를 전송할 때 사용할 SMTP의 주소로 이 주소는 호스트 이름이나 IP 주소로 설정해야 한다.
        From Address메일 송신자의 주소를 설정한다.
        Sender IdSMTP 주소를 통해 인증 받을 ID를 설정한다.
        Sender PasswordSMTP 주소를 통해 인증 받을 ID의 암호를 설정한다.
        To Address메일 수신자의 주소를 설정한다.
        Property기본적인 SMTP property 외에 추가로 필요한 property가 있다면 key, value의 형태로 설정한다.
        Cc Address메일을 참조로 받을 수신자의 주소를 설정한다.
        Bcc Address메일을 숨은 참조로 받을 수신자의 주소를 설정한다.

  4. 설정 내용의 동적 반영을 위해 [Activate Changes] 버튼을 클릭한다.

EJB 엔진의 System Logging과 User Logging은 WebAdmin의 다음 메뉴에서 설정할 수 있다.

  • System Logging 설정

    WebAdmin의 [Servers] > 서버 선택 > [Basic] > [System Logging] 메뉴에서 설정한다.

  • User Logging 설정

    WebAdmin의 [Servers] > 서버 선택 > [Basic] > [User Logging] 메뉴에서 설정한다.

System Logging 설정은 EJB 엔진뿐만 아니라 다른 모든 엔진에도 적용되는 공통적인 설정이므로 자세한 내용은 JEUS Server 안내서”의 “제8장 Logging”을 참고한다.

EJB 엔진을 제어하는 것은 다른 JEUS 엔진(서블릿 또는 JMS)을 제어하는 것과 유사하다.

WebAdmin 및 콘솔 툴을 사용하여 EJB 엔진의 실행 환경 정보와 상태 정보를 모니터링할 수 있다. WebAdmin을 사용한 EJB 엔진의 제어 및 모니터링 방법은 다음과 같다.

  • EJB 엔진 제어

    WebAdmin의 [Servers] 메뉴를 선택하여 나타나는 서버 목록에서 원하는 서버명을 선택한 후 [Engine] > [Ejb Engine]을 선택한다.

  • EJB 엔진 모니터링

    WebAdmin의 [RUNTIME INFO] 버튼을 클릭한 뒤 EJB 엔진 제어를 위한 메뉴 선택과 같은 방법으로 모니터링하려는 EJB 엔진을 선택한다.

EJB 엔진의 전체적인 성능 향상을 위해 설정을 변경할 수 있다. 본 절에서는 EJB 엔진의 성능 관련 설정을 간략하게 설명한다.

튜닝을 위해 필요한 사항은 다음과 같다.

  • Resolution 설정 튜닝

  • Fast Deploy 기능 사용

  • 최대 성능을 위한 시스템 로그 설정

  • Active Management 사용하지 않기

  • HTTP Invoke 모드 사용

참고

EJB 엔진의 정보나 팁에 대해서는 "JEUS XML Reference"의 "11. domain.xml EJB 엔진 설정"을 참고한다. XML/Schema 중 "P"라고 표시된 것은 성능과 관련된 것이다.