EJB 모듈

본 장에서는 EJB 모듈의 구조와 관리 방법에 대해서 설명한다.

1. 개요

EJB 모듈은 EJB 엔진에 deploy할 수 있는 기본 단위이다. 또한 EJB 컴포넌트들을 그룹화하고 이들의 설정 정보를 DD로 표현할 수 있도록 한 것이다. EJB를 deploy할 경우에는 단 하나의 EJB 컴포넌트를 deploy하더라도 반드시 EJB 모듈로 패키징해야 한다.

EJB 2.1 이하의 컴포넌트인 경우에는 EJB 모듈에 반드시 DD(ejb-jar.xml)가 있어야 하지만 3.0 이상의 컴포넌트부터는 Annotation을 지원하게 되면서 DD는 선택 사항으로 변경되었다.

2. EJB 모듈 관리

다음은 JEUS 내부적으로 EJB 모듈을 관리하기 위한 4가지 주요 작업으로 각 작업에 대한 상세한 설명은 세부 절을 참고한다.

EJB 모듈의 관리 순서는 다음과 같다.

figure ejb sequence diagram
EJB 모듈 관리 순서도
EJB 모듈 JAR 파일 구조

다음은 표준 EJB 모듈 JAR 파일의 구조에 대한 설명이다.

EJB Module JAR
     |--META-INF
     |     |--[X]ejb-jar.xml
     |     |--[X]jeus-ejb-dd.xml
     |--<package_name>
     |     |--[C]Bussiness Interface
     |     |--[C]EJB Implementation
     |     |--[C]Helper class
     |--[J]Helper library

* Legend
- [01]: binary or executable file
- [X] : XML document
- [J] : JAR file
- [T] : Text file
- [C] : Class file
- [V] : jaba source file
- [DD] : deployment dexcriptor
META-INF

다음은 하위 파일에 대한 설명이다.

파일 설명

ejb-jar.xml

실제적인 표준 EJB DD 파일이다. Annotation으로 설정 정보를 표현한 경우에는 존재하지 않을 수 있다. 단, EJB 2.x 스타일의 경우에는 반드시 필요하다.

jeus-ejb-dd.xml

JEUS에서 EJB를 deploy할 때 필요한 DD 파일이다. (선택 사항)

<package_name>

EJB 클래스들을 포함하고 있다. EJB 소스 코드에 정의되어 있는 것과 같이 Java 패키지 구조를 반영하는 구조로 되어 있어야 한다. 예를 들어 하나의 EJB가 "mypackage"라는 패키지에 속해 있다고 선언되어 있으면 EJB의 클래스는 반드시 EJB JAR의 "mypackage"라는 디렉터리 아래에 위치해야 한다.

다음과 같은 EJB 컴포넌트를 포함한다.

EJB 컴포넌트 설명

인터페이스

클라이언트가 접근하기 위한 EJB 2.x 스타일의 인터페이스, 3.0 이상의 인터페이스들이다.

엔터프라이즈 Bean 클래스

인터페이스에 맞춰서 실제 업무 로직을 구현한 Bean 클래스들을 의미한다.

Helper library

MANIFEST.MF Class-Path Entry에 명시한 라이브러리에 해당한다.

3. EJB 모듈 조립

EJB 모듈 관리 순서도와 같이 EJB 모듈을 조립(Assembling)할 때는 다음의 과정을 수행한다.

  1. EJB 클래스 컴파일

    개발자가 구현한 EJB 소스 파일들을 컴파일한다.

  2. DD 작성

    • ejb-jar.xml DD 작성

    • jeus-ejb-dd.xml DD 작성

  3. EJB JAR 파일 패키징

    JAR 파일로 EJB 클래스와 DD를 패키징한다.

다음 절부터는 "counter" 예제를 통해 EJB 모듈 조립 과정을 설명한다. "counter"는 JEUS_HOME/samples/ejb/basic/statefulSession/ 디렉터리에 위치한 Stateful Session Bean으로, 다음과 같은 2개의 Java 소스 파일이 갖는다.

  • Counter.java(business interface)

  • CounterEJB.java(bean implementation)

Stateful Session Bean이나 다른 종류의 Bean에 대한 자세한 정보는 Session Bean, Message Driven Bean(MDB)을 참고한다.

3.1. EJB 클래스 컴파일

EJB 소스 파일들로부터 EJB 모듈을 조립하는 첫 번째 과정은 개발자가 구현한 EJB 소스 파일들을 컴파일하는 것이다. 이는 JDK의 javac 컴파일러를 이용한다. 클래스 패스는 기본적으로 JEUS_HOME/lib/system/javaee.jar를 사용하며, jeus-ejb-dd.xml에 대응되는 Annotation을 사용했다면 JEUS_HOME/lib/system/jeusapi.jar를 추가하고, 또 다른 helper 클래스가 있다면 모두 추가한다.

다음은 "counter" Bean에서 사용될 EJB Java 파일들을 UNIX 환경에서 컴파일하는 명령어를 실행하는 예이다.

$ javac –classpath JEUS_HOME/lib/system/javaee.jar *.java

위 명령어를 실행하면 클래스 파일들이 생성된다.

3.2. Deployment Descriptors(DD) 작성

EJB 모듈을 deploy할 때 사용되는 DD는 다음과 같이 2가지로 나누어진다.

  • 표준 EJB DD

    ejb-jar.xml로 명명되고, EJB 모듈의 "META-INF/" 디렉터리에 위치한다. 개발자가 EJB 컴포넌트를 작성할 때는 설정 정보의 일부 또는 전부를 Annotation으로 작성할 수도 있다. 만약 Annotation 정보를 무시하고 DD의 설정만을 적용하고 싶은 경우에는 ejb-jar.xml에 <metadata-complete>를 true로 설정한다. Annotation과 DD를 혼용해서 사용한 경우는 DD가 Annotation에 우선한다.

  • JEUS EJB DD

    jeus-ejb-dd.xml로 명명되고, EJB 모듈의 "META-INF/" 디렉터리에 위치한다. 이 파일의 내용에 대한 정보는 아래의 jeus-ejb-dd.xml DD 작성을 참고한다.

표준 EJB DD(ejb-jar.xml) 작성

DD의 포맷은 EJB 표준에 따른다. 대부분 Annotation으로 가능하지만 필요한 경우 DD를 사용한다.

package ejb.basic.statefulSession;
@Remote
public interface Counter
{
   public void increase();
  ...
}
package ejb.basic.statefulSession;
@Stateful
@EJB(name="counter")
@TransactionManagement( TransactionManagementType.BEAN)
public class CounterEJB implements Counter {
   private int count = 0;

   public void increase()
   {
      count++;
   }
 ...
}

다음 예제는 Annotation을 "counter" Bean의 간단한 EJB 표준 DD(ejb-jar.xml)를 나타낸 것이다.

EJB 표준 DD : <ejb-jar.xml>
<?xml version="1.0"?>
<ejb-jar version="3.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd">
    <enterprise-beans>
        <session>
            <ejb-name>counter</ejb-name>
            <business-remote>ejb.basic.statefulSession.Counter</business-remote>
            <ejb-class>ejb.basic.statefulSession.CounterEJB</ejb-class>
            <session-type>Stateful</session-type>
            <transaction-type>Bean</transaction-type>
        </session>
    </enterprise-beans>
    <assembly-descriptor/>
</ejb-jar>

EJB 3.0 이상부터는 ejb-jar.xml의 모든 내용은 Annotation으로 표현 가능하므로 선택적으로 사용한다.

JEUS EJB DD(jeus-ejb-dd.xml) 작성

JEUS EJB DD가 필요한 이유는 EJB 엔진에 deploy하기 위한 기본 설정 및 External Reference들을 JEUS 서비스에 매핑시키기 위함이다. 그 외에도 인스턴스 Pooling과 Entity Bean, DB 테이블과의 매핑 설정도 jeus-ejb-dd.xml에서 한다.

이러한 설정들은 EJB 모듈을 JEUS에 맞추어 deploy하기 위해서 필요한 작업들이지만 일부는 Annotation으로 설정 가능하고 jeus-ejb-dd.xml이 존재하지 않아도 기본값으로 설정되기 때문에 별도로 환경설정을 해야 하는 경우에만 이 작업을 수행한다.

JEUS EJB DD는 표준 EJB DD에 부가적인 설정으로 볼 수 있다. 표준 EJB DD와 마찬가지로 JEUS EJB DD도 EJB 모듈에 적용된다.

다음은 JEUS EJB DD의 전반적인 구성이다.

JEUS EJB DD : <jeus-ejb-dd.xml>
<?xml version="1.0"?>
<jeus-ejb-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    <module-info>
        <role-permission>
            <!-- See chapter  "4.2.5. EJB 보안 설정" -->
            . . .
        </role-permission>
    </module-info>
    <beanlist>
        <jeusbean>
            <!-- See chapters "제4장 EJB의 공통 특성"
                 and  "제7장 Session Bean" -->
            . . .
        </jeusbean>
        <jeusbean>
            <!-- See chapters "제4장 EJB의 공통 특성"
                 and  "제7장 Session Bean" -->
            . . .
        </jeusbean>
            . . .
    </beanlist>
    <ejb-relation-map>
        <!-- See chapter "제8장 Entity Bean" -->
    </ejb-relation-map>
    <message-destination>
        <jndi-info>
            <ref-name>ejb/AccountEJB</ref-name>
            <export-name>ACCEJB</export-name>
        </jndi-info>
    </message-destination>

    <library-ref>
        <library-name>jsf</library-name>
        <specification-version>
            <value>1.2</value>
        </specification-version>
        <implementation-version>
            <value>1.2</value>
        </implementation-version>
    </library-ref>

</jeus-ejb-dd>

JEUS EJB DD의 주요 요소들은 다음과 같다.

항목 설명

<module-info>

EJB 모듈 전체에 적용되는 포괄적인 정보를 설정한다. Role Assignment에 관련된 정보는 EJB 보안 설정을 참고한다.

<beanlist>

모듈에 포함되는 EJB들을 선언한다. 이 하위 태그의 이름과 내용은 Bean의 종류(Session Bean. Entity Bean, MDB)에 따라 세부 설정이 달라진다.

<beanlist>와 그것의 하위 태그는 EJB의 공통 특성, Session Bean부터 Message Driven Bean(MDB)을 통해 자세히 설명한다.

<ejb-relation-map>

CMP 2.0 Bean들을 위한 CMR 매핑을 정의한 EJB Relation Mapping 설정이다. CMP는 더 이상 사용을 권장하지 않으므로 JPA를 사용한다.

<message-destination>

ejb-jar.xml의 <message-destination>에 선언된 message destination과 JNDI에 등록된 실제 Destination 객체를 매핑한다.

<library-ref>

애플리케이션에서 사용할 공유 라이브러리(shared library) 정보를 설정한다.

3.3. EJB JAR 파일 패키징

EJB JAR 파일을 패키징할 때에는 jar 유틸리티를 사용하고, 다음의 사항을 가정한다.

  • ejb/basic/statefulSession 디렉터리에 "counter" EJB 클래스 파일들이 존재한다.

  • 클래스에 Annotation으로 설정하여 ejb-jar.xml과 jeus-ejb-dd.xml은 존재하지 않는다.

EJB JAR 파일의 패키징 과정은 다음과 같다.

  1. 다음과 같이 EJB 클래스들을 하나의 JAR 파일로 묶는다.

    $ jar cf countermod.jar ejb/basic/statefulSession

    이것으로 countermod.jar라는 Jakarta EE EJB 모듈을 완성한다.

  2. 클라이언트에서 이 EJB를 사용하기 위해서는 인터페이스 파일이 필요하다. 클라이언트에서 사용하기 위해 배포할 counterbeanclient.jar는 다음과 같이 생성한다.

    $ jar cf counterbeanclient.jar ejb/basic/statefulSession/Counter.class

    counterbeanclient.jar는 원격 클라이언트에서 사용하기 위한 배포용 라이브러리이다.

4. EJB 모듈 Deploy

본 절에서는 EJB 모듈의 deploy에 대한 내용을 설명한다.

4.1. Deploy

일반적으로는 deploy할 때 EJB 클래스를 컴파일하지만 appcompiler를 사용해서 EJB 클래스를 미리 컴파일하면 deploy할 때의 속도를 향상시킬 수 있다. 또한 Auto Deploy 기능을 사용해서 손쉽게 EJB 모듈을 deploy할 수도 있다. Deploy에 대한 자세한 내용은 JEUS Applications & Deployment 안내서를 참고한다.

EJB 모듈 관리 순서도에서 JEUS는 다음과 같은 방법으로 EJB 모듈을 deploy한다.

  • appcompiler 툴 이용

    appcompiler 툴을 사용하면 Stub과 Skeleton 파일들을 미리 생성하여 Deploy 속도를 빠르게 할 수 있다.

  • EJB 모듈의 Boot-time Deploy

    EJB 엔진이 시작할 때마다 EJB 모듈이 자동으로 deploy되도록 한다.

  • EJB 모듈의 Runtime Deploy

    EJB 엔진이 시작되고 난 후에 즉, EJB 엔진이 운영되고 있을 때 EJB 모듈을 deploy한다. 콘솔 툴과 WebAdmin을 사용해서 EJB 모듈을 EJB 엔진에 deploy한다.

appcompiler 툴 이용

EJB 2.x 모듈의 경우 appcompiler 툴을 사용함으로써 Stub과 Skeleton 파일들을 미리 생성하여 Deploy 속도를 빠르게 할 수 있다. appcompiler를 사용할 경우에는 콘솔 툴의 deploy 명령어를 실행할 때 –fast 옵션을 사용한다. 이 옵션이 사용되지 않을 경우에는 appcompiler는 효과가 없다. appcompiler 툴에 대한 자세한 정보는 JEUS Reference 안내서의 appcompiler를 참조한다.

EJB 모듈의 Boot-time Deploy

MS가 기동(Booting)될 때 deploy되는 것을 Boot-time Deploy라고 하는데, MASTER를 통해 한 번 deploy된 애플리케이션은 MS를 기동할 때마다 Boot-time Deploy가된다. 애플리케이션의 Deploy 설정에 대한 자세한 내용은 JEUS Applications & Deployment 안내서의 애플리케이션 작성 및 Deploy를 참고한다.

하나의 도메인에 여러 개의 애플리케이션을 등록할 수 있다.

EJB 모듈의 Runtime Deploy

Runtime deploy는 실행되고 있는 EJB 엔진에 EJB 모듈을 deploy하는 것을 의미한다. 콘솔 툴의 deploy 명령어를 사용해서 실행되고 있는 EJB 엔진에 모듈을 설치할 수 있다.

"countermod" EJB 모듈의 deploy 과정을 설명한다. 모듈을 deploy하기 위해 다음의 사항을 가정한다.

  • JEUS의 adminServer이라는 MASTER와 server1이라는 MS가 이미 기동(Booting)되어 있다.

  • countermod 모듈이 JEUS_HOME/apphome 하위의 countermod.jar나 countermod 디렉터리 형태로 존재한다.

EJB 모듈의 Runtime Deploy는 콘솔 툴을 사용하거나 WebAdmin을 사용할 수 있다.

  • WebAdmin 사용

    WebAdmin을 사용하여 deploy하는 과정은 다음과 같다.

    1. WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [ 애플리케이션]을 선택한다.

    2. 애플리케이션 목록 조회화면에서 deploy할 애플리케이션을 체크하고 [배포] 버튼을 클릭한다.

      figure application info
      애플리케이션 Deploy - 애플리케이션 목록 조회
    3. 배포화면에서 애플리케이션의 타겟 및 deploy 속성을 설정하고 [배포] 버튼을 클릭한다.

      figure application deploy
      애플리케이션 Deploy - 속성 설정

      WebAdmin에서의 애플리케이션 Deploy 설정에 대한 자세한 내용은 JEUS Applications & Deployment 안내서 애플리케이션 작성 및 Deploy의 deploy 항목을 참고한다.

    4. deploy된 애플리케이션은 'Action' 컬럼에 [재배포], [타겟 추가], [타겟 삭제]의 버튼이 활성화된다. 각 버튼의 기능과 제어에 대한 자세한 내용은 EJB 모듈 제어를 참고한다.

      figure application deployed
      애플리케이션 Deploy - 결과
  • 콘솔 툴 사용

    콘솔 툴을 사용하여 deploy하는 과정은 다음과 같다.

    1. 콘솔 툴을 실행한다. 콘솔 툴에 대한 자세한 설명은 JEUS Reference 안내서의 Local 명령어를 참고한다.

      $ jeusadmin -host localhost:9736
    2. 사용자 이름과 패스워드를 입력한다.

      User name: administrator
      Password:
      Attempting to connect to localhost:9736.
      The connection has been established to Domain Administration Server adminServer
      in the domain domain1.
      JEUS8 Administration Tool
      To view help, use the 'help' command.
      [MASTER]domain1.adminServer>
    3. deploy 명령어를 실행해서 "countermod" EJB 모듈을 deploy한다.

      [MASTER]domain1.adminServer> deploy countermod -servers server1
    4. deploy를 확인하기 위해 다음과 같이 application-info 명령어를 실행하면 "countermod" 모듈이 포함된 모든 deploy된 애플리케이션들이 출력된다.

      [MASTER]domain1.adminServer> application-info

4.2. Deploy된 EJB 모듈의 디렉터리 구조

EJB 모듈이 deploy된 후에 클래스 파일들과 설정 파일들은 다음과 같은 구조로 JEUS 설치 디렉터리에 배포된다.

{JEUS_HOME}
  |--domain/<domain_name>/servers/<server_name>
       |--.workspace/deployed
            |--<application_id>
            |    |--<EJB_archive_file>_jar__
            |    |    |--META-INF
            |    |    |   |--[X]J2EE EJB DD
            |    |    |   |--[X]JEUS EJB DD
            |    |    |--[C]Bussiness Interfaxe(Home Inferface, Component Interface)
            |    |    |--[C]EJB Implementation
            |    |    |--[C]Helper calss
            |    |--[J]<EJB_archive_file>
            |--<EAR_archive_file>_ear__
                 |--APP-INF
                 |--lib
                     |--META-INF
                     |--<EJB_archive_file>_jar__
                     |    |--META-INF
                     |    |   |--[X]J2EE EJB DD
                     |    |   |--[X]JEUS EJB DD
                     |    |--[C]Bussiness Interfaxe(Home Inferface, Component Interface)
                     |    |--[C]EJB Implementation
                     |    |--[C]Helper calss
                     |--[J]<EJB_archive_file>

* Legend
- [01]: binary or executable file
- [X] : XML document
- [J] : JAR file
- [T] : Text file
- [C] : Class file
- [V] : jaba source file
- [DD] : deployment dexcriptor

JEUS_HOME/domains/<domain_name>/servers/<server_name>/.workspace/deployed/ 디렉터리는 <server name>에 해당하는 MS에 deploy된 애플리케이션들이 존재하는 디렉터리이다. 여기에는 deploy된 EJB 모듈의 EJB 구현 클래스들뿐만 아니라 helper 클래스들이 위치한다.

Deploy 방식은 다음과 같이 나누어지며, 방식에 따라 deploy되는 파일이 위치하는 디렉터리가 달라진다.

Deploy 방식 설명

EAR Deploy 방식

EAR 파일이 deploy되는 경우에는 해당 EAR 파일 이름으로 생성된 디렉터리 아래에 EAR에 포함된 모듈이 각각 놓인다.

Standalone Deploy 방식

JAR 파일이 deploy된 경우에는 해당 JAR 파일 이름으로 생성된 디렉터리에 "<jar 파일 이름>_jar___" 디렉터리 아래에 놓인다.

Exploded EAR Deploy 방식

EAR 파일을 Archive 형태가 아닌 풀어놓은 상태에서 deploy하는 방식이다.

Exploded Standalone Deploy 방식

JAR 파일을 Archive 형태가 아닌 풀어놓은 상태에서 deploy하는 방식이다.

Exploded EAR Deploy 방식과 Exploded Standalone Deploy 방식은 webhome 디렉터리로 복사되지 않고 원래의 위치를 참조한다. JEUS에서는 Archive 파일이 존재하는 standalone Deployment를 COMPONENT Type, 풀어놓은 것을 EXPLODED COMPONENT Type이라고 부른다.

이후의 설명에서는 Standalone 모듈에 대해서만 설명한다. EAR Deploy 방식이나 Deploy 전반에 대한 상세한 설명은 JEUS Applications & Deployment 안내서의 Deploy 관련 부분을 참고한다.

5. EJB 모듈 제어 및 모니터링

Deploy된 EJB 모듈에 대해 WebAdmin과 콘솔 툴을 사용해서 실행 상태를 제어하거나 모니터링할 수 있다. (EJB 모듈 관리 순서도 참고)

5.1. EJB 모듈 제어

Deploy된 EJB 모듈을 stop-application, start-application, redeploy-application, undeploy 명령어를 사용해서 EJB 모듈 내의 실행 상태를 제어할 수 있다. 애플리케이션 목록에 deploy된 애플리케이션은 'Action' 컬럼에 [재배포],[타겟 추가], [타겟 삭제]의 버튼이 활성화된다. 각 버튼은 콘솔 툴의 옵션과 각각 대응된다.

WebAdmin 사용

다음은 WebAdmin을 사용하여 undeploy하는 과정에 대한 설명이다.

  1. WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한다.

    figure 11 deployed application
    Deploy된 애플리케이션 목록
  2. 조회된 애플리케이션 목록에서 undeploy할 애플리케이션을 체크하고 상단에 위치한 [배포 해제] 버튼을 클릭한다. 배포 해제 화면에서 각 항목을 설정하고 [배포 해제] 버튼을 클릭하면 undeploy가 수행된다.

    figure application undeploy
    애플리케이션 Undeploy - 속성 설정

    다음은 주요 항목에 대한 설명이다.

    항목 설명

    Timeout

    요청 중인 서비스가 완료될 때까지 기다리는 시간을 설정한다.

    Graceful

    Graceful Redeploy가 진행된 경우 old 애플리케이션과 new 애플리케이션 중 어느 것을 undeploy할지 결정한다.

  3. 정상적으로 undeploy가 되면 결과 메시지가 나타나고 해당 애플리케이션의 'State''Action' 컬럼이 변경된 것을 확인할 수 있다.

    figure application undeployed
    애플리케이션 Undeploy - 결과
콘솔 툴 사용

Deploy된 EJB 모듈을 stop-application, start-application, redeploy-application, undeploy 명령을 통해 EJB 모듈 내의 실행 상태를 제어할 수 있다. 모든 명령어는 EJB 모듈의 ID를 파라미터로 받는다. 콘솔 툴에 대한 상세한 정보는 JEUS Reference 안내서의 jeusadmin을 참조한다.

  • redeploy-application

    redeploy-application은 지정한 EJB 모듈을 다시 로딩하는 명령어로 현재 활성화되어 있는 EJB 모듈을 EJB 실행 환경에서 undeploy했다가 다시 디스크로부터 읽어 deploy하는 것을 의미한다.

    undeploy가 실행되고 다시 로딩이 수행될 때 undeploy된 EJB 모듈의 모든 트랜잭션 상태는 잃어버린다. 이는 undeploy되거나 redeploy되는 모듈과 연관있는 모든 EJB 트랜잭션이 rollback된다는 것을 의미한다.

    redeploy-application <application-id>
  • stop-application

    stop-application 명령어는 선택된 EJB 모듈을 일시적으로 중지시켜 클라이언트의 요청으로부터 한시적으로 EJB 모듈이 접근이 불가능한 상태가 된다. start-application 명령어로 다시 EJB 모듈을 접근 가능한 상태로 되돌린다.

    stop-application <application-id>
  • start-application

    stop-application 명령어로 중지되었던 EJB 모듈을 다시 활성화한다.

    start-application <application-id>
  • undeploy

    undeploy 명령어는 선택된 모듈을 EJB 엔진의 실행 메모리에서 제거해서 EJB 엔진의 운영 메모리에서 EJB 모듈을 내려 EJB 클라이언트가 EJB에 접근 불가능한 상태가 된다. 그러나 파일을 물리적으로 삭제하지는 않는다.

    undeploy <application-id>

    다음은 콘솔 툴을 사용하여 EJB 모듈을 undeploy하는 과정에 대한 예이다.

    1. 콘솔 툴을 실행한다.

      $ jeusadmin -host localhost:9736
    2. 사용자 이름과 패스워드를 입력한다.

      User name: administrator
      Password:
      Attempting to connect to localhost:9736.
      The connection has been established to Domain Administration Server adminServer
      in the domain domain1.
      JEUS8 Administration Tool
      To view help, use the 'help' command.
      [MASTER]domain1.adminServer>
    3. 다음과 같이 undeploy 명령어를 실행하고 성공하면 "countermod" EJB 모듈이 undeploy된다.

      [MASTER]domain1.adminServer> undeploy countermod
    4. undeploy된 것을 확인하기 위해 다음과 같이 application-info 명령어를 실행한다. "countermod" 모듈을 제외한 deploy된 모든 모듈들이 조회된다.

      [MASTER]domain1.adminServer> application-info

5.2. EJB 모듈 모니터링

콘솔 툴을 사용하여 EJB 모듈을 모니터링할 수 있다. 콘솔 툴에서 application-info 명령어를 실행하면 다음과 같이 deploy되고 활성화된 EJB 모듈로부터 상태와 운영 정보를 조회할 수 있다. application-info 명령어에 대한 자세한 내용은 JEUS Reference 안내서의 EJB 엔진 관련 명령어를 참고한다.

  • 모듈 정보 조회

    해당 모듈에 대한 정보를 조회한다.

    [MASTER]domain1.adminServer>application-info -server server1 -id countermod -detail
    General information about the EJB module [countermod].
    ==============================================================
    +-------------+----------------------------------------------+
    | Module Name |              Unique Module Name              |
    +-------------+----------------------------------------------+
    | countermod  | countermod                                   |
    +-------------+----------------------------------------------+
    ==============================================================
    
    Beans
    ================================================================================
    
    +-----------+-------------------------+-------------------+--------------------+
    | Bean Name |           Type          | Local Export Name | Remote Export Name |
    +-----------+-------------------------+-------------------+--------------------+
    | Count     | StatelessSessionBean    |                   | Count              |
    +-----------+-------------------------+-------------------+--------------------+
    
    ================================================================================
  • Bean 조회

    해당 모듈("application-id")에 포함된 EJB의 목록을 조회한다.

    [MASTER]domain1.adminServer>application-info -server server1 -id countermod -bean Count
    Module name : countermod
    Bean name : Count
    ================================================================================
    
    +---------------+-----------+-------------------+--------------+---------------+
    |      Name     |  (Count)  | WaterMark(High:Low| Bound(Upper:L| Time(Max:Min:T|
    |               |           |       :Cur)       |    ower)     |     otal)     |
    +---------------+-----------+-------------------+--------------+---------------+
    | create        | times(0)  |                   |              |               |
    +---------------+-----------+-------------------+--------------+---------------+
    | comitted      | transactio|                   |              |               |
    |               |n(0)       |                   |              |               |
    +---------------+-----------+-------------------+--------------+---------------+
    | total-remote-t|           |thread(100:100:100)|              |               |
    |hread          |           |                   |              |               |
    +---------------+-----------+-------------------+--------------+---------------+
    | timed-rb      | transactio|                   |              |               |
    |               |n(0)       |                   |              |               |
    +---------------+-----------+-------------------+--------------+---------------+
    | remove        | times(0)  |                   |              |               |
    +---------------+-----------+-------------------+--------------+---------------+
    | active-bean   |           | bean(0:0:0)       |              |               |
    +---------------+-----------+-------------------+--------------+---------------+
    | request       | request(0)|                   |              |               |
    +---------------+-----------+-------------------+--------------+---------------+
    | total-bean    |           | bean(0:0:0)       |              |               |
    +---------------+-----------+-------------------+--------------+---------------+
    | rolledback    | transactio|                   |              |               |
    |               |n(0)       |                   |              |               |
    +---------------+-----------+-------------------+--------------+---------------+
    | active-thread |           | thread(0:0:0)     |              |               |
    +---------------+-----------+-------------------+--------------+---------------+
    | MethodReadyCou|           | bean(0:0:0)       |              |               |
    |nt             |           |                   |              |               |
    +---------------+-----------+-------------------+--------------+---------------+
    
    ================================================================================

EJB 모듈의 모니터링은 WebAdmin을 사용할 수도 있지만 콘솔 툴을 사용할 경우에 더 자세한 정보를 조회할 수 있다. WebAdmin을 사용할 경우 [Monitoring] 메뉴의 [JNDI] 또는 [EJBTimer] 메뉴를 통해 EJB 모듈의 일부 정보를 모니터링할 수 있다. 모니터링하는 자세한 방법은 각각 JEUS Server 안내서의 바인딩된 객체 확인과 본 안내서의 Timer 모니터링을 참고한다.