제4장 콘솔 툴

내용 목차

4.1. 개요
4.2. jeusadmin
4.2.1. 개요
4.2.2. 기동 및 종료 명령어
4.2.3. 공통 명령어
4.2.4. EJB 엔진 관련 명령어
4.2.5. 서블릿 엔진 관련 명령어
4.2.6. Connection Pool 모니터링과 제어 명령어
4.2.7. DB Connection Pool 관련 명령어
4.2.8. 트랜잭션 관련 명령어
4.2.9. 보안 관련 명령어
4.3. jmsadmin
4.3.1. 기동 및 종료 명령어
4.3.2. 공통 명령어
4.3.3. JMS 엔진 명령어
4.4. appcompiler
4.5. ejbddinit
4.6. encryption
4.7. jspc
4.8. wsgen
4.9. wsimport
4.10. java2wsdl
4.11. wsdl2java
4.12. wsdl2uddi
4.13. xjc
4.14. schemagen
4.15. tcpmon
4.15.1. 실행
4.15.2. Listener 모드의 사용
4.15.3. Proxy모드의 사용
4.15.4. 기타 기능

본 장에서는 JEUS에서 사용하는 콘솔 툴의 종류와 사용법에 대해 설명한다.

4.1. 개요

다음은 JEUS에서 사용하는 콘솔 툴의 목록이다.

  • Admin 툴

    콘솔 툴설명
    jeusadmin JEUS를 직접 관리하기 위해 사용하는 콘솔 툴이다.
    jmsadmin JEUS의 JMS 엔진을 관리하기 위한 콘솔 툴이다.
  • 기타 툴

    콘솔 툴설명
    appcompiler 애플리케이션의 EJB 인터페이스 impl, skeleton, stub 클래스, JSP를 컴파일하여 서블릿 클래스, 웹 서비스의 endpoint 클래스 등을 생성한다.
    ejbddinit EJB 모듈의 DD 파일(jeus-ejb-dd.xml), ejb-jar.xml 정보와 사전에 생성된 프로퍼티 파일을 이용하여 JEUS EJB DD 파일을 자동으로 생성할 수 있다.
    encryption 암호화할 문자열을 암호화하거나 그 반대로 복호화하는 기능을 제공한다.
    jspc JSP배치 컴파일러는 “처음 접속”하는 경우 성능향상을 위해 JSP 파일을 사전에 컴파일할 때 사용한다.
    wsgen JAX-WS 웹 서비스를 위한 툴로 Java 클래스로부터 WSDL 파일과 JAX-RPC 매핑 파일을 생성한다. 또한 웹 서비스 정책 설정 파일을 생성할 수 있다.
    wsimport WSDL 파일로부터 클라이언트 측 Java Stub 소스 파일들과 서버 측 웹 서비스 인터페이스 Java 소스 파일을 생성한다. 또한 웹 서비스 정책 설정 파일을 생성할 수 있다.
    java2wsdl Java 클래스로부터 WSDL파일과 JAX-RPC 매핑 파일을 생성한다.
    wsdl2java WSDL 파일로부터 클라이언트 측 Java Stub 소스 파일과 서버 측 웹 서비스 인터페이스 Java 소스 파일을 생성한다.
    wsdl2uddi 웹 서비스의 WSDL 파일로 부터 UDDI에 Publish할 수 있다.
    xjc XML 스키마 파일을 Java 프로그래밍 언어로 된 JAXB Content 클래스들로 변환한다.
    schemagen Java 클래스들에 나타나는 각각의 Namespace에 대해 하나의 스키마 파일을 생성한다.
    tcpmon 송수신하는 TCP 패킷을 조회한다. tcpmon은 HTTP의 SOAP 메시지를 조회할 수 있다.

4.2. jeusadmin

본 절에서는 JEUS의 관리 툴인 jeusadmin의 명령어와 그 사용법에 대해서 설명한다.

4.2.1. 개요

jeudadmin은 JEUS를 직접 관리하기 위해 사용하는 콘솔 툴이다. 이 툴을 사용하면 JEUS, 엔진, 엔진 컨테이너의 기동과 종료와 같은 기본적인 관리 작업을 할 수 있으며 애플리케이션의 Deploy/Undeploy와 logger 레벨 변경 작업, JMX MBean 목록 조회 등 여러 가지 주요 작업을 실행할 수 있다.

또한 JEUS 6부터는 JEUS 5에서 별도로 실행되던 ejbadmin, webadmin 등 기존의 여러 콘솔 툴이 jeusadmin으로 통합되었다. 각 절에서는 jeusadmin 명령어의 성격에 따라 그룹화하여 설명한다.

4.2.2. 기동 및 종료 명령어

jeusadmin의 기동과 종료 명령어에 대해 설명한다.

명령어설명
jeusadminjeusadmin에 접속한다.
exitjeuadmin을 통해 모든 작업을 완료하고 jeusadmin을 종료한다.

4.2.2.1. jeusadmin

jeusadmin에 접속한다. 이 파일은 JEUS_HOME\bin\에 위치한다.

  • 사용법

    jeusadmin [-h] [-version] [-fullversion] [-buildversion] [-licensedue]
              [-licenseinfo] [-verbose] [-jmx-connector jmx_connector_name]
              [nodename] [-U<username>] [-P<password>] [-f<filename>]
              [command] [command_option]
  • 파라미터

    파라미터설명
    [-h]

    jeusadmin 명령의 도움말과 명령어 목록을 조회한다.

    • 아무런 옵션 없이 jeusadmin을 입력하면 jeusadmin에 대한 도움말만을 조회한다.

    • [-h help [options] [command]] : jeusadmin에 등록된 명령어에 대한 자세한 설명을 나타낸다. 이는 jeusadmin의 help 명령과 동일하다.

    [-version]JEUS의 메이저 버전을 출력한다.
    [-fullversion]JEUS의 메이저 버전과 마이너 버전을 출력한다.
    [-buildversion]JEUS의 메이저 버전과 빌드 버전을 출력한다.
    [-licensedue]라이선스의 남은 기간을 출력한다. 남은 기간이 0이 되면 JEUS는 더 이상 동작하지 않으므로, TmaxSoft로부터 새로운 라이선스를 발급받아야 한다.
    [-licenseinfo]현재 설치된 라이선스에 대한 정보를 출력한다.
    [-verbose]현재 작업의 진행 상태를 자세히 출력한다.
    [-jmx-connector jmx_connector_name][-jmx-connector connector_JNDI_name]으로 사용할 수도 있다. 그럴 경우에는 JEUS의 기본적인 JMX Connector(jmx_connector_name) 대신에 옵션에서 주어진 JNDI name(connector_JNDI_name)으로 Export된 Reference를 사용하여 JMX Connector를 생성하여 사용한다.
    [node_name]node name을 가진 JEUS로 jeusadmin을 사용해서 접속한다. 그러면 사용자명과 패스워드를 입력하라는 인증 프롬프트가 나타난다.
    [-U<username>] [-P<password>]인증 프롬프트를 거치지 않고 바로 로그인할 때 사용한다. 명령어 파라미터를 사용할 때는 반드시 사용해야 한다. 이 옵션은 node_name을 항상 지정하고 사용해야 한다.
    [-f<filename>]

    암호화된 로그인 정보를 가진 파일이름을 지정하여 인증 프롬프트를 거치지 않고 바로 로그인할 때 사용한다.

    [-U<username>], [-P<password>] 파라미터와 동일한 효과를 가진다. 이 옵션은 node_name을 항상 지정하고 사용해야 한다.

    [command]jeusadmin의 명령어를 한 번 실행한다. 스크립트에서 사용할 때 유용하다. 기능은 대화형 명령어에서 실행할 때와 같지만 jeusexit는 down이 되어 있지 않으면 down 명령을 시도하고 jeusexit를 수행한다.
    [command_option]해당 명령어에 대한 옵션을 설정한다. 옵션에 대한 자세한 내용은 help를 사용하여 확인할 수 있다.
  • 예제

    • jeusadmin 접속하기

      johan이라는 노드에 사용자명, 패스워드를 각각 jeus, jeus를 입력하여 접속한다. [-U<username> -P<password>]을 사용하지 않을 경우에는 화면에 인증 프롬프트가 출력된다.

      c:\jeus>jeusadmin johan
      Login name>jeus
      Password>jeus -> 실제로 Command Line에는 입력한 패스워드가 보이지 않는다.
      johan>
      
      ---------------------------------------------------
       -U & -P 옵션을 사용하여 one step 로그인을 하는 경우
      ---------------------------------------------------
      c:\jeus>jeusadmin johan -Ujeus -Pjeus
      JEUS 6.0 (*****) administration tool
      johan>
    • 라이선스 정보 보기

      c:\jeus>jeusadmin -licensedue
      1500 days left
      
      c:\jeus>jeusadmin -licenseinfo
      ================ JEUS LICENSE INFORMATION ===================
      === EDITION : JEUS DEMO
      === DUE-DAY : 2010/12/31
      =============================================================

4.2.2.2. exit

jeuadmin을 통해 모든 작업을 완료하고 jeusadmin을 종료한다.

  • 사용법

    exit(quit/q)
  • 예제

    johan>exit
    c:\jeus>

4.2.3. 공통 명령어

jeusadmin에서 사용하는 공통 명령어의 사용법과 파라미터, 예제를 설명한다.

본 절에서는 공통 명령어를 종류별로 분류하여 간단히 설명한다.

  • 범용 명령어

    명령어설명
    help명령들에 대한 도움말을 출력한다.
    p바로 이전에 실행했던 명령어를 실행한다.
    setProperty현재 실행되고 있는 jeusadmin의 프로퍼티를 설정한다.
    unsetProperty현재 실행되고 있는 jeusadmin에 설정된 프로퍼티를 삭제한다.
    statusJEUS Manager 및 엔진 컨테이너의 현재 상태를 특정값으로 리턴한다.
  • JEUS Manager 명령어

    명령어설명
    jeusexit현재 접속한 JEUS Manager를 종료한다.
    suspend-webadminJEUS Manager의 WebAdmin을 일시 정지시킨다.
    resume-webadminJEUS Manager의 WebAdmin을 재가동한다.
  • 노드 및 그룹 명령어

    명령어설명
    bootJEUSMain.xml에서 설정 정보를 읽어와 JEUS를 기동한다.
    downJEUS를 종료한다.
    nodelistJEUS 시스템에서 활성화 중인 노드의 목록을 출력한다.
    allnodelist클러스터 내의 모든 노드의 목록을 출력한다.
    pidlist현재 jeusadmin이 접속된 노드의 매니저 프로세스와 각 엔진 컨테이너의 프로세스 ID 목록을 출력한다.
  • 엔진 컨테이너 명령어

    명령어설명
    startcon엔진 컨테이너를 실행(시작)한다.
    downcon엔진 컨테이너를 종료한다.
    conlist활성화된 엔진 컨테이너의 목록을 인덱싱하여 출력한다.
    setcon엔진 컨테이너 환경변수(container.names)를 설정한다.
  • 엔진 명령어

    명령어설명
    englist엔진 목록을 출력한다.
    allenglist해당 노드의 모든 엔진 목록을 출력한다.
  • 애플리케이션 및 Deploy 명령어

    명령어설명
    distribute애플리케이션을 각 엔진 컨테이너 디렉터리로 복사하여 디플로이를 준비한다.
    deploy모든 엔진 컨테이너에 지정한 경로의 Java EE 애플리케이션을 디플로이한다.
    undeployundeploy 명령어는 해당 대상에서 애플리케이션을 제거한다.
    redeploy해당 대상에서 애플리케이션을 다시 디플로이한다.
    start정지(stopped) 상태에 있는 애플리케이션을 실행한다.
    stop실행 중(running) 상태에 있는 애플리케이션을 정지한다.
    applist현재 Deploy된 애플리케이션의 목록을 출력한다.
  • 스레드 명령어

    명령어설명
    ti요청을 처리하는 서블릿 스레드와 EJB RMI 스레드의 정보를 출력한다.
    strace서블릿 또는 EJB RMI의 Thread Stack Trace를 조회한다.
    interrupt-thread서블릿 또는 EJB RMI 스레드에 인터럽트 시그널을 전송한다.
  • Logging 명령어

    명령어설명
    loglevel지정된 노드나 컨테이너의 지정된 Logger와 핸들러에 대한 레벨을 출력하거나, 새로운 레벨을 설정한다.
  • 기타 명령어

    명령어설명
    connect클러스터링 된 다른 노드에 접속하여 jeusadmin 명령을 수행한다.
    dumpJEUS Manager 프로세스의 스레드 덤프를 출력한다. 이때 덤프는 JEUS Manager 프로세스의 콘솔창에 출력된다.
    ftp파일을 다른 위치로 옮길 때 사용한다.
    gcGarbage Collection을 실행한다.
    jndi바인딩 되어 있는 객체의 정보를 출력한다.
    jndilistjndi 컨텍스트에 바인드 되어 있는 객체의 바인딩 이름 목록을 출력한다.
    mbeanlistJEUS에 존재하는 MBean들의 목록을 출력한다.
    pJEUS 프로세스의 메모리 정보를 출력한다.
    rftp파일을 다른 위치로 옮길 때 사용한다.

4.2.3.1. help

명령들에 대한 도움말을 출력한다. 각 명령에 대한 설명과 이름, Alias, 사용법, 파라미터에 대한 설명을 포함한다.

  • 사용법

    help(h) [-l] [-a] [-g group_name] [command]
  • 파라미터

    파라미터설명
    [-l]모든 명령어에 대한 간단한 설명을 출력한다. 다른 옵션없이 help 명령어만 사용할 경우에는 help 명령에 대한 설명과 명령어의 목록만 출력한다.
    [-a]모든 명령어에 대한 자세한 도움말을 출력한다. 이 옵션을 사용하면 각 명령어에 대한 자세한 설명을 모두 출력한다.
    [-g group_name]

    주어진 그룹(group_name)에 해당하는 명령어에 대한 목록을 출력한다.

    명령어 그룹 목록은 다음과 같다.

    • jeusadmin: jeusadmin commands

    • ejb: EJB

    • jdbc: DB Pool

    • tm: Transaction

    • web: Servlet

    • sec: Security

    • gen: General

    [command]도움말을 출력할 명령어의 이름이다.
  • 예제

    • help 명령어만 사용할 경우

      johan>help
       type 'help <command>' for the detailed help of each command.
      
       Usage:
             help [-l] [-a] [-g group_name] [command] 
      
             arguments:
               -l: print simple help for each command 
               -a: print detailed help for each command 
               -g group_name: print help for commands of the given group 
                   defined values: 
                       jeusadmin: jeusadmin Commands 
                       ejb: EJB 
                       jdbc: DB Pool 
                       tm: Transaction 
                       web: Servlet 
                       sec: Security 
                       gen: General 
               command: print help for command 
      
      [ jeusadmin Commands ]_________________________________________________________
      ...............
    • [-l] 옵션과 같이 help 명령어를 사용할 경우

      johan>help -l
      jeusadmin commands help
      
      [ jeusadmin Commands ]_________________________________________________________
      
       .......
      
       deploy             deploy application (distribute and start application) 
       undeploy           undeploy the deployed application 
      
       ........
    • [-a] 옵션과 같이 help 명령어를 사용할 경우

      johan>help -a
      jeusadmin commands help
      
      [ jeusadmin Commands ]_________________________________________________________
       allenglist   get a list of all working engines 
      
       Usage:
             allenglist [node_name] [engineType] 
      
             arguments:
               node_name: node name in which engines run 
                   default: the node admin connected 
               engineType: work for the specified engine type 
                   default: all engine types 
                   defined values: 
                       servlet: get a list of all working servlet engines 
                       ejb: get a list of all working ejb engines 
                       jms: get a list of all working jms engines 
      
       allnodelist(grlist)   list all nodes including clustered nodes 
      
       Usage:
             allnodelist 
      
       applist       list the deployed applications 
      
       Usage:
             applist [-con container_name] [-mod module_type] [-r] [-more] 
                     ([-n application_name]|[module_name]) 
      
             arguments:
               -con container_name: one or more container(s) in which applications 
                                    run. You can specify the multiple containers by 
                                    using ',' as a seperator 
                   default: use container.name property or all containers in the 
                            JEUS Manager 
               -mod module_type: work for the specified module type 
                   default: all module types 
                   defined values: 
                       WebModule: web module 
                       EJBModule: ejb module 
                       J2EEApplication: ear module 
                       AppClientModule: application client module 
                       ResourceAdapterModule: resource adapter module 
               -r: regard the module name as regular expression 
               -more: show more info for each application 
               -n application_name: application registered in JEUSMain.xml 
               module_name: module name 
                   default: work for all applications 
      
             examples:
                  ex> applist -more 
                  -> show the additional information of applications 
                  ex> applist -con jeus_container1 
                  -> show the applications in 'jeus_container1' engine container 
                  ex> applist -con jeus_container1,jeus_container2 
                  -> show the applications in 'jeus_container1' and 
                     'jeus_container2' engine containers 
      ...
    • [-g] 옵션과 같이 help 명령어를 사용할 경우: ejb engine 그룹 명령어 목록 출력

      johan>help -g ejb
      
      [ EJB ]________________________________________________________________________
      beanlist                list EJB Beans
      compile                 compile EJB module in the container
      moduleinfo              get EJB module information
      
    • 특정 명령어에 대한 help 명령어를 사용할 경우: englist 명령어 설명 출력

      johan>help englist
      englist                 list engines in the JEUS Manager
      
              usage :
                      englist [container_name]
              arguments :
                      container_name : the container name which contains engines
                              default : all engines in the JEUS Manager

4.2.3.2. p

바로 이전에 실행했던 명령어를 실행한다.

  • 사용법

    p(!)
  • 예제

    johan>help englist
    englist                 list engines in the JEUS Manager
    
            usage :
                    englist [container_name]
            arguments :
                    container_name : the container name which contains engines
                            default : all engines in the JEUS Manager
    
    johan>p
    englist                 list engines in the JEUS Manager
    
            usage :
                    englist [container_name]
            arguments :
                    container_name : the container name which contains engines
                            default : all engines in the JEUS Manager
    

4.2.3.3. setProperty

현재 실행되고 있는 jeusadmin의 프로퍼티를 설정한다.

  • 사용법

    setProperty(s) [key] [value]
  • 파라미터

    파라미터설명
    [key]

    프로퍼티의 키이다(키를 입력하지 않으면, 현재 설정된 모든 프로퍼티들을 출력한다).

    • container.name: 프로퍼티의 키값으로, 컨테이너의 이름을 설정한다. 이 값이 프로퍼티로 설정되어 있다면 컨테이너와 관련된 명령어를 실행할 때 매번 -con 옵션으로 컨테이너의 이름을 설정하지 않아도 자동으로 입력된다.

    [value]

    프로퍼티의 Value이다. 여러 개의 값을 설정할 경우에는 각각의 값들을 콤마(,)로 구분하여 입력한다(구분자로 콜론(:)과 세미콜론(;)도 지원한다).

    Value를 입력하지 않으면, 입력한 키에 대한 프로퍼티 Value를 출력한다.

  • 예제

    johan>setProperty container.name johan_container1
    
    johan>setProperty
    container.name      johan_container1

4.2.3.4. unsetProperty

현재 실행되고 있는 jeusadmin에 설정된 프로퍼티를 삭제한다.

  • 사용법

    unsetProperty(us) [key] [value]
  • 파라미터

    파라미터설명
    [key]

    프로퍼티의 키이다. 키를 입력하지 않으면, 현재 설정된 모든 프로퍼티들을 출력한다.

    • container.name: 설정된 컨테이너의 이름 프로퍼티를 삭제한다.

    • all: 현재 설정된 모든 프로퍼티를 삭제한다.

    [value]

    프로퍼티의 Value이다. 여러 개의 값들이 설정되어 있을 경우에는 그 중 삭제하고 싶은 값들만 콤마(,)로 구분하여 입력한다(구분자로 콜론(:)과 세미콜론(;)도 지원한다).

    값을 입력하지 않으면, 입력한 키에 대한 프로퍼티 값을 보여준다.

  • 예제

    johan>setProperty container.name johan_container1,johan_container2,johan_container3
    
    johan>setProperty
    container.name      johan_container1,johan_container2,johan_container3
    
    johan>unsetProperty
    container.name      johan_container1,johan_container2,johan_container3
    
    johan>unsetProperty container.name johan_container2,johan_container3
    container.name      johan_container1
    
    johan>unsetProperty all
    johan>setProperty
    any property is not registered
    

4.2.3.5. status

JEUS Manager 및 엔진 컨테이너의 현재 상태를 특정값으로 리턴하는 명령이다.

  • 사용법

    status [-manager] [-con container_name] [-total]
  • 파라미터

    파라미터설명
    [-manager]

    JEUS Manager의 상태를 리턴한다.

    정해진 상태값은 다음과 같다.

    • BOOTING

    • READY

    • SHUTTINGDOWN

    • SHUTDOWN

    위 상태에 대한 자세한 설명은 JEUS Server 안내서”의 “1.3.2. JEUS Manager의 Life Cycle”을 참조한다.

    [-con container_name]

    주어진 엔진 컨테이너의 상태를 리턴한다.

    정해진 상태값은 다음과 같다.

    • STARTING

    • READY

    • STOPPING

    • SHUTDOWN

    위 상태에 대한 자세한 설명은 JEUS Server 안내서”의 “1.4.3. 엔진 컨테이너의 Life Cycle”을 참조한다.

    [-total]

    <start-on-boot>가 true인 전체 엔진 컨테이너들의 READY 여부를 확인하여 상태값을 리턴한다.

    • NOT_READY

    • ALL_READY

    어느 하나라도 READY가 아니라면 NOT_READY를 리턴한다.

  • 예제

    johan>status -manager
    READY
    
    johan>status -con johan_container1
    READY 
    
    johan>status -con johan_container2
    STARTING
    
    johan>status -total
    NOT_READY
    
    .......... (노드 기동 과정에서 엔진 컨테이너 시작 중)
    
    johan>status -total
    ALL_READY

4.2.3.6. jeusexit

현재 접속한 JEUS의 JEUS Manager를 종료한다. 만약 JEUS 노드가 종료 상태(down)가 아니라면, down 명령을 수행하여 각 엔진 컨테이너를 종료한 후에 JEUS Manager를 종료한다.

  • 사용법

    jeusexit [-all]
  • 파라미터

    파라미터설명
    [-all]현재 접속하고 있는 JEUS Manager가 속한 클러스터의 모든 JEUS Manager를 종료한다.
  • 예제

    johan>jeusexit
    johan jeusexit successful

4.2.3.7. suspend-webadmin

JEUS Manager에서 사용 중인 WebAdmin을 일시 정지시킨다. 단, 일시 정지하더라도 이미 연결되어 있던 웹 브라우저는 계속 화면이 나올 수 있다.

  • 사용법

    suspend-webadmin

4.2.3.8. resume-webadmin

JEUS Manager에서 일시 정지시킨 WebAdmin을 재가동한다.

  • 사용법

    resume-webadmin

4.2.3.9. boot

JEUSMain.xml에서 설정 정보를 읽어와 JEUS를 기동한다. 노드를 기동하면 모든 엔진 컨테이너가 실행(시작)된다. boot 명령어 실행 후 기동이 완료되었다는 메시지가 출력되고 다음 줄에 성공한 컨테이너 목록이 출력된다.

  • 사용법

    boot [-all]
  • 파라미터

    파라미터설명
    [-all]현재 접속하고 있는 JEUS Manager가 속한 클러스터의 모든 JEUS를 기동한다.
  • 예제

    다음은 현재 노드가 johan이고, 2개의 컨테이너 container1, container2가 JEUSMain.xml에 설정되어 있고, 모두 정상적으로 기동된 경우에 대한 예제이다.

    johan>boot
    johan boot done
    johan_container1
    johan_container2

4.2.3.10. down

JEUS를 종료한다. 즉, 서비스하는 각 엔진 컨테이너를 종료한다.

down 명령어 실행 후 종료 확인(Do you really want to down whole JEUS? (y : n):>) 메시지가 출력되어 종료할지 사용자의 의사를 묻고, y를 입력하면 종료한다. 종료 후에는 성공적으로 종료되었다는 메시지가 출력된다.

  • 사용법

    down [-e] [-i] [-all] [-start-backup]
  • 파라미터

    파라미터설명
    [-e]JEUS를 종료한 후 jeusexit 명령을 직접 실행한다.
    [-i]JEUS를 종료하기 전에 “y/n”의 종료여부 확인을 무시하고 진행한다.
    [-all]현재 접속하고 있는 JEUS Manager가 속한 클러스터의 모든 JEUS를 종료한다.
    [-start-backup]현재 접속하고 있는 JEUS 노드를 종료하면서 백업 노드를 시작한다.
  • 예제

    johan>down
    Do you really want to shutdown the node [sangholee1]? (y : n):>y
    The JEUS node [sangholee1] is down.

4.2.3.11. nodelist

JEUS 시스템에서 활성화 중인 노드의 목록을 출력한다.

  • 사용법

    nodelist [-a]
  • 파라미터

    파라미터설명
    [-a]jeusadmin이 접속 중인 노드 목록에 대해 nodelist 명령을 반복적으로 실행해서 클러스터의 각 노드의 관점에서의 노드 목록을 출력한다.
  • 예제

    johan>nodelist
    johan
    johan1[backup]
    
    johan>nodelist -a
    [ johan ]
          johan      tmax
    [ tmax ]
          johan      tmax

4.2.3.12. allnodelist

클러스터 내 모든 노드의 목록을 출력한다.

  • 사용법

    allnodelist(grlist)
  • 예제

    johan>allnodelist
    johan
    tmax

4.2.3.13. pidlist

현재 jeusadmin이 접속된 노드의 Manager 프로세스와 각 엔진 컨테이너의 프로세스 ID 목록을 출력한다.

  • 사용법

    pidlist [-a]
  • 파라미터

    파라미터설명
    [-a]jeusadmin이 접속 중인 노드 목록에 대해 pidlist 명령을 실행해서 클러스터의 각 노드에 대해 프로세스 ID 목록을 출력한다.
  • 예제

    johan>pidlist
    __________________________________________________________________________
    | for the node johan                                                      |
    | node      : johan                                         | pid : 19139 |
    | container : johan_container1                              | pid : 19196 |
    --------------------------------------------------------------------------

4.2.3.14. startcon

엔진 컨테이너를 실행(시작)한다.

  • 사용법

    startcon [container_name]
  • 파라미터

    파라미터설명
    [container_name]

    실행(시작)할 엔진 컨테이너의 이름이다.

    (기본값: 엔진 컨테이너 이름을 입력하지 않는 경우에는 현재 노드의 모든 컨테이너를 실행(시작)한다.)

  • 예제

    johan>startcon johan_container1
    Succeeded to start johan_container1.

4.2.3.15. downcon

엔진 컨테이너를 종료한다.

  • 사용법

    downcon ([-node node_name]|[container_name])
  • 파라미터

    파라미터설명
    [-node node_name]해당 노드의 모든 컨테이너를 종료한다.
    [container_name]

    종료할 엔진 컨테이너 이름이다.

    (기본값: 노드 또는 엔진 컨테이너 이름을 입력하지 않는 경우에는 현재 노드의 모든 컨테이너를 종료한다.)

  • 예제

    johan>downcon -node johan
    johan_container1 : SHUTDOWN
    johan_container2 : SHUTDOWN
    johan>downcon johan_container1
    Succeeded to shutdown johan_container1.

4.2.3.16. conlist

활성화된 엔진 컨테이너의 목록을 인덱싱하여 출력한다.

  • 사용법

    conlist [node_name]
  • 파라미터

    파라미터설명
    [node_name]해당 노드의 모든 컨테이너 목록을 출력한다.

  • 예제

    johan>conlist
    container list of the node johan
            [1] johan_container1
            [2] johan_container2

4.2.3.17. setcon

엔진 컨테이너 환경변수(container.names)를 설정한다.

  • 사용법

    setcon [index_number]
  • 파라미터

    파라미터설명
    [index_number]

    conlist를 통해 확인할 수 있는 엔진 컨테이너의 인덱스 번호이다.

    입력하지 않을 경우 “4.2.3.16. conlist”의 결과와 동일하다.

  • 예제

    johan>conlist
    Engine container list of the node johan
            [1] johan_container1
            [2] johan_container2
    johan>setcon 1 
    johan_container1 selected 
    johan>setcon 2 
    johan_container2 selected 
    johan>setcon 1,2 
    johan_container1 selected 
    johan_container2 selected              

4.2.3.18. englist

엔진 목록을 출력한다.

  • 사용법

    englist [container_name]
  • 파라미터

    파라미터설명
    [container_name]

    해당 컨테이너의 모든 엔진 목록을 출력한다.

    (기본값: JEUS의 모든 엔진 목록을 출력)

  • 예제

    johan>englist
    ========================================
    engines in the container johan_container2
    johan_servlet_engine2
    johan_ejb_engine2
    ========================================
    ========================================
    engines in the container johan_container1
    johan_servlet_engine1
    johan_ejb_engine1
    ========================================
    
    johan>englist johan_container1
    johan_servlet_engine1
    johan_ejb_engine1

4.2.3.19. allenglist

해당 노드의 모든 엔진 목록을 출력한다.

  • 사용법

    allenglist [node_name] [engineType]
  • 파라미터

    파라미터설명
    [node_name]엔진 목록을 출력할 노드의 이름이다.
    [engineType]

    주어진 엔진의 종류에 해당하는 엔진을 출력한다.

    • servlet : 서블릿 엔진

    • ejb : EJB 엔진

    • jms : JMS 엔진

  • 예제

    johan>allenglist
    ========================================
    engines in the container johan_container2
    johan_servlet_engine2
    johan_ejb_engine2
    ========================================
    ========================================
    engines in the container johan_container1
    johan_servlet_engine1
    johan_ejb_engine1
    ========================================

4.2.3.20. distribute

디플로이하려는 애플리케이션을 각 엔진 컨테이너 디렉터리(JEUS_HOME\webhome\${container_name})로 복사하여 디플로이를 준비한다.

  • 사용법

    distribute ([-con container_name]|[-node node_name])
               [-cg context_group_name] [-vh virtual_host_name]
               ([-f]/[-nf]) ([-keep]|[-nkeep]) [-per]
               [-classloading SHARED|ISOLATED] [-writeAppDD]
               [-class-ftp-unit CLASS|JAR] [-auto auto_deploy_interval]
               [-jeus-ejb-dd path] [-context-root path]
               ([-absolute-path path]|[-n application_name]|module_name)
               [as application_name]
  • 예제

    johan>distribute MyApp.ear
    using the following application info :
    <applicationType>
        <deploy-when-booting>true</deploy-when-booting>
        <path>MyApp.ear</path>
        <deployment-type>EAR</deployment-type>
        <ejb-component>
            <uri>calc.jar</uri>
        </ejb-component>
        <web-component>
            <uri>cookie.war</uri>
        </web-component>
        <deployment-target>
            <all-targets>
            </all-targets>
        </deployment-target>
        <class-ftp-unit>JAR</class-ftp-unit>
    </applicationType>
    
    The J2EEApplication, MyApp, is distributed on johan_container1

4.2.3.21. deploy

deploy 명령어는 지정된 엔진 컨테이너나 노드에 있는 모든 엔진 컨테이너에 지정한 경로의 Java EE 애플리케이션을 디플로이한다. 이 명령이 실행되려면 그 모듈의 archive 파일이나 디렉터리가 해당 컨테이너의 APP_HOME 디렉터리에 존재해야 한다(-absolute-path 옵션을 사용할 경우는 애플리케이션 또는 모듈이 있는 경로는 지정할 수 있으므로 제외).

노드의 모든 컨테이너에 디플로이하기 위해서는 각 컨테이너의 APP_HOME 디렉터리에 module_name에 해당하는 archive가 존재해야 한다. 기본적으로 module_name은 그 archive 파일의 확장자를 제외한 파일 이름이거나 디렉터리 이름이 된다.

  • 사용법

    deploy ([-con container_name]|[-node node_name])
           [-cg context_group_name] [-vh virtual_host_name]
           ([-f]|[-nf])([-keep]|[-nkeep]) [-per]
           [-classloading SHARED|ISOLATED] [-writeAppDD]
           [-class-ftp-unit CLASS|JAR] [-auto auto_deploy_interval]
           [-jeus-ejb-dd path] [-context-root path]
           ([-absolute-path path]|[-n application_name]|module_name)
           [as application_name]
  • 파라미터

    파라미터설명
    [-con container_name]

    애플리케이션을 디플로이할 대상으로 엔진 컨테이너를 지정한다.

    (기본값: JEUS Manager 내의 모든 엔진 컨테이너에 디플로이)

    [-node node_name]

    애플리케이션을 디플로이할 대상으로 노드를 지정한다. 이 노드에 포함된 모든 컨테이너에 디플로이한다.

    (기본값: 현재 jeusadmin이 접속하고 있는 노드에 디플로이)

    [-cg context_group_name]

    웹 애플리케이션 모듈인 경우 디플로이할 대상으로 컨텍스트 그룹을 지정한다.

    (기본값: WEBMain.xml에 설정된 첫 번째 컨텍스트 그룹에 디플로이)

    [-vh virtual_host_name]웹 애플리케이션 모듈인 경우 디플로이할 대상으로 가상 호스트를 지정한다. (기본값: WEBMain.xml에 설정된 첫 번째 가상 호스트에 디플로이)
    [-f]|[-nf]
    • [-f] : 해당 애플리케이션 내의 EJB 모듈, 웹 애플리케이션의 웹 서비스 모듈에 대해 Fast Deploy를 적용하도록 설정한다. 즉, 이 애플리케이션이 디플로이 과정에서 생성되어야 하는 클래스를 미리 포함하고 있다고 가정한다.

      디플로이를 처음 하거나 모듈의 클래스 파일들이 변경되었을 경우에는 이 옵션을 사용하지 않는다. 그러나 appcompiler 툴을 사용하여 클래스들을 생성한 모듈의 경우에는 이 옵션을 사용할 수 있다.

    • [-nf] : Fast Deploy를 적용하지 않도록 설정한다.

    [-keep]|[-nkeep]
    • [-keep] : 디플로이 과정에서 생성된 클래스들의 Java 소스 파일을 포함시키도록 설정한다.

    • [-nkeep]: 클래스들의 Java 소스 파일을 포함시키지 않도록 설정한다.

    [-per]WebAdmin의 영구 모듈 등록과 같은 기능을 제공한다. 즉, 애플리케이션이 JEUSMain.xml의 <application> 태그로 추가되어, 엔진이 기동할 때 해당 애플리케이션이 로딩되도록 한다.
    [-classloading SHARED|ISOLATED]애플리케이션의 클래스 로딩 방법으로 SHARED와 ISOLATED의 2가지 모드가 있다. (기본값: ISOLATED)
    [-writeAppDD]Deploy 할 때 사용하는 jeus-application-dd.xml을 컨테이너의 해당 애플리케이션 archive 내에 복사한다.
    [-class-ftp-unit CLASS|JAR]

    애플리케이션에 포함된 EJB 모듈의 클래스를 class ftp를 통해서 클라이언트에게 전달할 때의 단위로 CLASS와 JAR 2가지 단위가 있다.

    (기본값: JAR)

    [-auto auto_deploy_interval]AutoDeploy에 대한 설정으로, 애플리케이션의 변경 여부를 검사하는 주기를 설정한다(단위 : ms).
    [-jeus-ejb-dd path]이 경로에 설정된 jeus-ejb-dd.xml을 사용한다.
    [-context-root path]

    디플로이할 웹 모듈의 context-path를 지정한다.

    단, 하나의 standalone 웹 모듈 또는 웹 모듈이 가지고 있는 EAR 애플리케이션 중, 웹 모듈이 하나일 때만 사용이 가능하다.

    [-absolute-path path]

    디플로이할 애플리케이션의 절대 경로를 설정한다.

    이 옵션을 사용할 경우에는 애플리케이션이 APP_HOME이 아닌 다른 디렉터리에 존재하여도 무방하다.

    [-n application_name]JEUSMain.xml에 <application><name> 태그에 설정된 이름의 애플리케이션을 디플로이한다.
    module_nameAPP_HOME에 위치한 애플리케이션의 이름을 설정한다.
    [as application_name]

    디플로이되는 애플리케이션의 alias name을 설정할 수 있다. 애플리케이션을 디플로이할 때는 기본적으로 애플리케이션의 파일(확장자를 제외한) 또는 디렉터리 이름을 애플리케이션의 이름으로 사용한다.

    이 옵션을 사용하면 디플로이되는 애플리케이션의 이름을 지정할 수 있다. 이 값은 JEUSMain.xml의 <application> 태그의 하위 요소인 <name> 태그에서 설정한다.

  • 예제

    • APP_HOME에 있는 애플리케이션을 디플로이할 경우

      johan>deploy MyApp.ear
      using the following application info :
      <applicationType>
          <deploy-when-booting>true</deploy-when-booting>
          <!-- 상대 경로로 지정된 경우에는 APP_HOME의 상대 경로로 처리된다. -->
          <path>MyApp.ear</path>
          <deployment-type>EAR</deployment-type>
          <ejb-component>
              <uri>calc.jar</uri>
          </ejb-component>
          <web-component>
              <uri>cookie.war</uri>
          </web-component>
          <deployment-target>
              <all-targets>
              </all-targets>
          </deployment-target>
          <class-ftp-unit>JAR</class-ftp-unit>
      </applicationType>
      
      The J2EEApplication, MyApp, is deployed on johan_container1
      The J2EEApplication, MyApp, is deployed on ...
      ...
    • 임의의 디렉터리에 있는 애플리케이션을 디플로이할 경우 : -absolute-path 옵션 사용

      johan>deploy -absolute-path c:\jeus\applications\MyApp.ear
      using the following application info :
      <applicationType>
          <deploy-when-booting>true</deploy-when-booting>
          <!-- -absolute-path 옵션을 사용하면 절대 경로로 설정된다. -->
          <path>c:\jeus\applications\MyApp.ear</path>
          <deployment-type>EAR</deployment-type>
          <ejb-component>
              <uri>calc.jar</uri>
          </ejb-component>
          <web-component>
              <uri>cookie.war</uri>
          </web-component>
          <deployment-target>
              <all-targets>
              </all-targets>
          </deployment-target>
          <class-ftp-unit>JAR</class-ftp-unit>
      </applicationType>
      
      The J2EEApplication, MyApp, is deployed on johan_container1
      The J2EEApplication, MyApp, is deployed on ...
      ...
    • 디플로이 대상(서버)을 선택하여 애플리케이션을 디플로이할 경우 : -node/-con 옵션 사용

      johan>deploy -con johan_container1(-node johan) MyApp.ear
      using the following application info :
      <applicationType>
          <deploy-when-booting>true</deploy-when-booting>
          <path>MyApp.ear</path>
          <deployment-type>EAR</deployment-type>
          <ejb-component>
              <uri>calc.jar</uri>
          </ejb-component>
          <web-component>
              <uri>cookie.war</uri>
          </web-component>
          <deployment-target>
              <!-- -con johan_container1 옵션으로 Deploy할 경우 -->
              <target>
                  <engine-container-name>johan_container1</engine-container-name>
              </target>
              <!-- -node johan 옵션으로 Deploy할 경우 -->
              <!--
              <target>
                  <node-name>johan</johan>
              </target>
              -->
          </deployment-target>
          <class-ftp-unit>JAR</class-ftp-unit>
      </applicationType>
      
      The J2EEApplication, MyApp, is deployed on johan_container1
    • AutoDeploy 설정하여 애플리케이션을 디플로이할 경우 : -auto 옵션 사용

      johan>deploy -auto 5000 MyApp.ear
      using the following application info :
      <applicationType>
          <!-- 해당 애플리케이션이 변경되었는지 5000ms 마다 주기적으로 검사한다. -->
          <auto-deploy>
              <auto-deploy-check-interval>5000</auto-deploy-check-interval>
          </auto-deploy>
          <deploy-when-booting>true</deploy-when-booting>
          <path>c:\jeus\applications\MyApp.ear</path>
          <deployment-type>EAR</deployment-type>
          <ejb-component>
              <uri>calc.jar</uri>
          </ejb-component>
          <web-component>
              <uri>cookie.war</uri>
          </web-component>
          <deployment-target>
              <all-targets>
              </all-targets>
          </deployment-target>
          <class-ftp-unit>JAR</class-ftp-unit>
      </applicationType>
      
      The J2EEApplication, MyApp, is deployed on johan_container1
      The J2EEApplication, MyApp, is deployed on ...
      ...

4.2.3.22. undeploy

undeploy 명령어는 해당 대상에서 애플리케이션을 제거한다.

  • 사용법

    undeploy [-con container_name] [-mod module_type] [-r] [-per] [-forced]
             [-gracetimeout time(second)] [-a]
             ([-n application_name]|[module_name])
  • 파라미터

    파라미터설명
    [-con container_name]

    디플로이된 애플리케이션을 제거할 엔진 컨테이너의 이름이다.

    (기본값: 모든 엔진 컨테이너를 대상으로 설정)

    [-mod module_type]

    제거될 애플리케이션의 애플리케이션 또는 모듈의 종류를 지정한다.

    지정된 종류의 애플리케이션 또는 모듈만 제거한다.

    • J2EEApplication : 애플리케이션(.ear)

    • WebModule: 웹 애플리케이션 모듈(.war)

    • EJBModule: EJB 모듈(.jar)

    • AppClientModule: 애플리케이션 클라이언트 모듈(.jar)

    • ResourceAdapterModule: 리소스 어댑터 모듈(.rar)

    [-r]module_name을 정규식 표현(regular expression)으로 인식한다.
    [-per]JEUSMain.xml의 <application>에서 해당 애플리케이션에 대한 설정을 삭제한다.
    [-forced]해당 애플리케이션이 시스템 애플리케이션일지라도 강제로 제거한다.
    [-gracetimeout time(second)]Undeploy할 때 애플리케이션이 처리 중인 업무를 종료할 때까지 기다리는 타임아웃을 설정한다. 이 옵션의 설정이 없으면, 명령을 수행할 때 기다리지 않고 바로 Undeploy한다.
    [-a]현재 JEUS에 디플로이된 모든 애플리케이션을 제거한다.
    [-n application_name]JEUSMain.xml에 <application>-<name> 태그에 설정된 이름의 애플리케이션을 제거한다.
    [module_name]애플리케이션의 이름을 설정한다. 이 값이 설정되지 않으면 모든 애플리케이션을 제거한다.
  • 예제

    johan>undeploy MyApp
    Undeploying J2EEApplication [MyApp] from johan_container1 (This may take time due to graceful undeployment)
    J2EEApplication [MyApp] is undeployed from johan_container1 (elapsed = 200ms)

4.2.3.23. redeploy

redeploy 명령어는 해당 대상에서 애플리케이션을 다시 디플로이한다. 이때 애플리케이션을 먼저 UnDeploy한 후에 Deploy를 시도한다.

  • 사용법

    redeploy [-con container_name] [-mod module_type] [-r] [-per] [-forced]
             [-gracetimeout time(second)] [-a] 
             ([-n application_name]|[module_name])
  • 파라미터

    파라미터설명
    [-con container_name]다시 디플로이하려는 애플리케이션이 디플로이된 엔진 컨테이너 이름을 설정한다. (기본값: 모든 엔진 컨테이너를 대상 설정)
    [-mod module_type]

    다시 디플로이하려는 애플리케이션 또는 모듈의 종류를 지정한다.

    디플로이된 애플리케이션과 모듈 중에 지정된 종류의 것만 다시 디플로이한다.

    • J2EEApplication: 애플리케이션(.ear)

    • WebModule: 웹 애플리케이션 모듈(.war)

    • EJBModule: EJB 모듈(.jar)

    • AppClientModule: 애플리케이션 클라이언트 모듈(.jar)

    • ResourceAdapterModule: 리소스 어댑터 모듈(.rar)

    [-r]module_name을 정규식 표현(regular expression)으로 인식한다.
    [-per]JEUSMain.xml의 <application>에서 해당 애플리케이션에 대한 설정을 삭제한다.
    [-forced]해당 애플리케이션이 시스템 애플리케이션일지라도 강제로 Undeploy하고 다시 디플로이한다.
    [-gracetimeout time(second)]Undeploy할 때 애플리케이션이 처리중인 업무를 종료될 때까지 기다리는 타임아웃을 설정한다. 이 옵션의 설정이 없으면, 명령을 수행할 때 기다리지 않고 바로 Undeploy하고 다시 디플로이한다.
    [-a]현재 JEUS에 디플로이된 모든 애플리케이션을 다시 디플로이한다.
    [-n application_name]JEUSMain.xml에 <application><name> 태그에 설정된 이름의 애플리케이션을 다시 디플로이한다.
    [module_name]다시 디플로이하려는 애플리케이션의 이름을 설정한다.
  • 예제

    johan>redeploy MyApp
    using the following application info :
    <applicationType>
        <deploy-when-booting>true</deploy-when-booting>
        <path>MyApp.ear</path>
        <deployment-type>EAR</deployment-type>
        <ejb-component>
            <uri>calc.jar</uri>
        </ejb-component>
        <web-component>
            <uri>cookie.war</uri>
        </web-component>
        <deployment-target>
            <target>
                <node-name>johan</node-name>
            </target>
        </deployment-target>
        <class-ftp-unit>JAR</class-ftp-unit>
    </applicationType>

4.2.3.24. start

start 명령어는 정지(stopped) 상태에 있는 애플리케이션을 실행한다. start 명령어를 실행한 후의 애플리케이션의 상태는 실행 중(running)이 된다.

  • 사용법

    start [-con container_name] [-mod module_type] [-r]
          ([-n application_name]|[module_name])
  • 파라미터

    파라미터설명
    [-con container_name]

    시작하려는 애플리케이션이 디플로이된 엔진 컨테이너 이름을 설정한다.

    (기본값: 모든 엔진 컨테이너를 대상 설정)

    [-mod module_type]

    시작하려는 애플리케이션 또는 모듈의 종류를 지정한다.

    디플로이된 애플리케이션과 모듈 중에 지정된 종류만 시작한다.

    • J2EEApplication: 애플리케이션(.ear)

    • WebModule: 웹 애플리케이션 모듈(.war)

    • EJBModule: EJB 모듈(.jar)

    • AppClientModule: 애플리케이션 클라이언트 모듈(.jar)

    • ResourceAdapterModule: 리소스 어댑터 모듈(.rar)

    [-r]module_name을 정규식 표현(regular expression)으로 인식한다.
    [-n application_name]JEUSMain.xml에 <application><name> 태그에 설정된 이름의 애플리케이션을 시작한다.
    [module_name]시작하려는 애플리케이션의 이름을 설정한다. 이 값이 설정되지 않으면 모든 애플리케이션을 시작한다.
  • 예제

    johan>start MyApp
    The J2EEApplication [MyApp] is started on johan_container1

4.2.3.25. stop

stop 명령어는 실행 중(running) 상태에 있는 애플리케이션을 정지시킨다. start 명령어를 실행시킨 후의 애플리케이션의 상태는 정지(stopped)가 된다.

  • 사용법

    stop [-con container_name] [-mod module_type] [-r]
         ([-n application_name]|[module_name])
  • 파라미터

    파라미터설명
    [-con container_name]정지하려는 애플리케이션이 디플로이된 컨테이너 이름을 설정한다.
    [-mod module_type]

    정지하려는 애플리케이션 또는 모듈의 종류를 지정한다.

    디플로이된 애플리케이션과 모듈 중에 지정된 종류의 것만 정지한다.

    • J2EEApplication: 애플리케이션(.ear)

    • WebModule: 웹 애플리케이션 모듈(.war)

    • EJBModule: EJB 모듈(.jar)

    • AppClientModule: 애플리케이션 클라이언트 모듈(.jar)

    • ResourceAdapterModule: 리소스 어댑터 모듈(.rar)

    [-r]module_name을 정규식 표현(regular expression)으로 인식한다.
    [-n application_name]JEUSMain.xml에 <application><name> 태그에 설정된 이름의 애플리케이션을 정지한다.
    [module_name]정지하려는 애플리케이션의 이름을 설정한다. 이 값이 설정되지 않으면 모든 애플리케이션을 정지한다.
  • 예제

    johan>stop MyApp
    The J2EEApplication [MyApp] is stopped on johan_container1

4.2.3.26. applist

현재 디플로이된 애플리케이션의 목록을 출력한다.

출력되는 정보는 애플리케이션(모듈)의 이름, 애플리케이션의 종류, 애플리케이션이 디플로이된 컨테이너와 노드 이름, 애플리케이션의 상태이다.

  • 사용법

    applist [-con container_name] [-mod module_type] [-r] [-more]
            ([-n application_name]|[module_name])
  • 파라미터

    파라미터설명
    [-con container_name]

    애플리케이션이 디플로이된 컨테이너 이름을 설정한다. 이 컨테이너에 있는 애플리케이션 목록을 출력한다.

    (기본값: 모든 엔진 컨테이너를 대상으로 설정)

    [-mod module_type]

    출력할 애플리케이션 또는 모듈의 타입을 지정한다.

    디플로이된 애플리케이션과 모듈 중에 지정된 타입만 출력한다.

    • J2EEApplication: 애플리케이션(.ear)

    • WebModule: 웹 애플리케이션 모듈(.war)

    • EJBModule: EJB 모듈(.jar)

    • AppClientModule: 애플리케이션 클라이언트 모듈(.jar)

    • ResourceAdapterModule: 리소스 어댑터 모듈(.rar)

    [-r]module_name을 정규식 표현(regular expression)으로 인식한다.
    [-more]기본 정보에 추가적으로 각 애플리케이션을 디플로이할 때 classloading 모드와 auto-redeploy, fast-deploy, keep-generated 여부에 대한 정보를 함께 보여준다.
    [-n application_name]JEUSMain.xml에 <application>-<name> 태그에 설정된 이름의 애플리케이션을 출력한다.
    [module_name]애플리케이션의 이름을 설정한다. 이 값이 설정되지 않으면 모든 애플리케이션의 목록을 출력한다.

  • 예제

    johan>applist
    name : MyApp
        type : J2EEApplication  EngineContainer : johan_container1  node : johan  
        state : running classloading : ISOLATED  auto-redeploy : false  
        fast-deploy : false  keep-generated : false

    다음은 명령어를 실행 후 출력 정보에 조회되는 애플리케이션의 종류와 상태에 대한 설명이다.

    • 애플리케이션 종류

      애플리케이션 종류설명
      J2EEApplication애플리케이션(.ear)
      WebModule웹 애플리케이션 모듈(.war)
      EJBModuleEJB 모듈(.jar)
      AppClientModule애플리케이션 클라이언트 모듈(.jar)
      ResourceAdapterModule리소스 어댑터 모듈(.rar)

    • 애플리케이션 상태(state)

      애플리케이션 상태설명
      startingdistribute가 성공적으로 이루어진 후 애플리케이션의 서비스를 위해 start되고 있는 상태이다.
      runningstart(deploy)가 성공적으로 이루어져 애플리케이션이 서비스를 할 수 있는 상태이다.
      stopping애플리케이션의 서비스를 중지하기 위해 stop되고 있는 상태이다.
      stoppedstop이 성공적으로 완료되어 애플리케이션이 서비스를 할 수 없는 상태이다.
      failed애플리케이션 디플로이에 실패한 상태이다.

4.2.3.27. ti

요청을 처리하는 서블릿 스레드와 EJB RMI 스레드의 정보를 조회한다. 서블릿 스레드는 Listener의 Thread Pool과 각 작업 스레드(worker thread)에 대한 정보를 조회하며, EJB 리모트 요청을 처리하는 EJB RMI 스레드의 정보를 출력한다.

  • 사용법

    ti [-con container_name] [-type thread_type] [-li listener-id] [-r]
       [-a] [-f thread-state] [-i sec] [-k number] [-l sec] [-o file_name] [-os]
  • 파라미터

    파라미터설명
    [-con container_name]

    스레드 정보를 조회하려는 엔진 컨테이너를 지정한다.

    (기본값: 모든 엔진 컨테이너를 대상으로 설정)

    [-type thread_type]

    서블릿 스레드 또는 EJB RMI 스레드 중 보고 싶은 종류를 선택한다.

    (기본값: 서블릿과 EJB RMI 스레드에 대한 모든 정보를 출력)

    • servlet: 서블릿 스레드에 대한 정보를 출력한다.

    • ejb: EJB RMI 스레드에 대한 정보를 출력한다.

    - [-li listener-id]

    지정된 Listener(WEBMain.xml에 설정된 Listener ID를 입력)에 대한 작업 스레드 정보를 출력하며, 서블릿 스레드에 대해서만 유효하다.

    이 명령어는 주어진 Listener의 Thread Pool 내에 있는 모든 작업 스레드들의 현재 상태와 축적된 idle-time(wt)을 나열한다.

    [-r]

    웹 컨테이너에 구성되어 있는 Listener 내의 모든 작업 스레드가 처리한 정보를 출력하며, 서블릿 스레드에 대해서만 유효하다.

    그 정보는 이 ti 명령 이후 해당 스레드의 요청 개수(reqs), 각 작업 스레드에서 처리한 요청에 대한 평균 실행 시(avgTime), 스레드에 의해 처리된 요청의 전체 누적치(total)를 포함한다.

    [-a]

    [-ㅣ]과 [-r] 옵션을 설정한 결과를 출력한다. 또한 작업 스레드의 상태를 바꾼 지난 시간을 time-stamp로 표시한다.

    (예를 들어 스레드의 상태가 "idle"에서 "active"로 바뀌거나 그 반대의 경우)

    [-f thread-state]

    특정 상태의 스레드의 정보만 보고 싶을 때 사용하며, 서블릿 스레드에 대해서만 유효하다.

    • a: (a)ctive. 작업 중인 스레드에 대한 정보를 조회한다.

    • i: (i)dle. 작업 대기 중인 스레드들의 정보를 조회한다.

    • b: (b)locked. 현재 블록(block)된 스레드들의 정보를 조회한다.

    • r: (r)econnecting. 현재 재연결(re-connect) 중인 스레드들의 정보를 보여준다.

    [-i sec]

    작업 스레드 정보를 특정 시간 간격으로 조회하는 경우 설정한다.

    sec은 반복 간격을 초단위로 설정할 수 있다.

    이 옵션은 [-k] 옵션 또는 [-l] 옵션과 함께 사용한다.

    다음은 1초 간격으로 5번을 화면에 출력되도록 설정한 예이다.

    ti -i 1 -k 5 
    [-k number]

    작업 스레드 정보를 반복적으로 보고 싶을 때 반복 횟수를 설정한다.

    number는 반복 횟수를 자연수로 설정할 수 있다.

    이 옵션은 [-i] 옵션과 함께 사용한다.

    다음은 2초 간격으로 3번의 결과를 출력되도록 설정한 예이다.

    ti -i 2 -k 3

    [-l sec]

    작업 스레드 정보를 특정 시간 동안 반복적으로 보고 싶을 때 [-i] 옵션과 함께 설정해서 사용한다.

    sec은 반복적으로 모니터하고 싶은 시간을 초 단위로 설정할 수 있다.

    다음은 10초 동안 2초에 한번씩 모니터한 값을 화면에 스레드 정보를 출력하도록 설정한 예이다.

    ti -i 2 -l 10
    [-o filename]

    스레드 정보를 파일로 출력하고 싶을 때 사용한다.

    1개 또는 그 이상의 admin에서 동시에 -o 옵션을 설정하는 경우 파일명과 admin에 무관하게 제일 마지막에 요청된 명령만 수행되므로 사용할 때 주의한다.

    해당 옵션이 동작하고 있는 동안에는 jeus의 기동이 요구된다. 만약 머신이 종료되거나 사용자의 명령으로 jeus가 종료되는 경우 오류 메세지를 출력하게 되므로 관리자의 주의를 요구한다.

    다음은 2초 간격으로 5번 출력되는 정보를 threadinfo.log라는 파일로 저장하도록 설정한 예이다.

    ti -i 2 -k 5 -o threadinfo.log
    [-os]스레드 통계 정보만을 출력한다.
  • 예제

    johan>ti
    
    Thread information for [johan_container1] container
    ============================================================
    servlet threads for 'http1' listener
    
    ------------------------------------------------------------
    | tid |      name |   state | elapsed |                uri |
    ------------------------------------------------------------
    |  67 | http1-w00 | waiting |   20350 |                    |
    |  68 | http1-w01 | waiting | 6678899 |                    |
    |  69 | http1-w02 |  active |    5058 | /testwar/index.jsp |
    |  70 | http1-w03 | waiting | 6678870 |                    |
    |  71 | http1-w04 | waiting | 6678856 |                    |
    |  72 | http1-w05 | waiting | 6678847 |                    |
    |  73 | http1-w06 | waiting | 6678841 |                    |
    |  74 | http1-w07 | waiting | 6678840 |                    |
    |  75 | http1-w08 | waiting | 6678840 |                    |
    |  76 | http1-w09 | waiting | 6678839 |                    |
    ------------------------------------------------------------
    
    elsapsed: elapsed time (ms)
    ============================================================
    =============================================================
    -------------------------------------------------------------
    |                 | total | active | idle | blocked | recon |
    -------------------------------------------------------------
    | num. of threads |    10 |      1 |    9 |       0 |     0 |
    -------------------------------------------------------------
    
    total = active + idle, recon: reconnecting
    =============================================================
    
    ==================================================================
    EJB RMI threads
    
    ------------------------------------------------------------------
    | tid |                              name |  state | active_time |
    ------------------------------------------------------------------
    |  99 | RMI TCP Connection(1)-192.168.x.x | active |       88399 |
    ------------------------------------------------------------------
    
    active_time: time after thread created (ms)
    ==================================================================
    ===========================================
    -------------------------------------------
    |                 | total | active | idle |
    -------------------------------------------
    | num. of threads |     1 |      1 |    0 |
    -------------------------------------------
    
    total = active + idle
    ===========================================
    
    johan>

4.2.3.28. strace

서블릿 또는 EJB RMI의 Thread Stack Trace를 출력한다.

  • 사용법

    strace [-con container_name] tid 
  • 파라미터

    파라미터설명
    [-con container_name]

    Target Thread가 존재하는 엔진 컨테이너를 지정한다.

    (기본값: 현재 접속한 노드에 엔진 컨테이너가 하나일 경우 그 엔진 컨테이너를 대상으로 설정)

    tid필수 입력 항목으로, Target Thread의 Thread ID(tid)를 지정한다.
  • 예제

    johan>strace 68
    servlet thread [tid=68] Stack trace
      at java.lang.Thread.sleep(Native Method)
      at jeus_jspwork._600_index_5fjsp._jspService(_600_index_5fjsp.java:60)
      at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
      at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:171)
      at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:223)
      at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:222)
      at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:278)

4.2.3.29. interrupt-thread

서블릿 또는 EJB RMI 스레드에 인터럽트 시그널을 전송한다. 스레드에 인터럽트 시그널을 보냈을 때의 결과에 대한 자세한 설명은 JEUS Server 안내서”의 “3.2.2. Thread 제어”를 참고한다.

주의

이 기능은 현재 실험적으로 제공하는 것이므로 사용에 주의한다.

  • 사용법

    interrupt-thread [-con container_name] [-f] tid
  • 파라미터

    파라미터설명
    [-con container_name]

    Target Thread가 존재하는 엔진 컨테이너를 지정한다.

    (기본값: 현재 접속한 노드에 엔진 컨테이너가 하나일 경우 그 엔진 컨테이너를 대상으로 설정)

    [-f]실제로 인터럽트 시그널을 전송하기 전에 “y/n” 확인을 무시하고 진행한다.
    tidTarget Thread의 스레드 ID(tid)를 지정한다.
  • 예제

    johan>interrupt-thread -con johan_container1 70
    WARNING: This function is EXPERIMENTAL yet and the status of target thread could
    be inconsistent.
    Do you really want to signal the interruption hint to the thread [tid=70] in the
    engine container [johan_container1]? (y : n):>y
    Signaled the interruption hint

4.2.3.30. loglevel

지정된 노드나 컨테이너의 지정된 Logger와 핸들러에 대한 레벨을 출력하거나, 새로운 레벨을 설정한다.

  • 사용법

    loglevel ([-con container_name]|[-node node_name]) [-set-handler] [-f] name
              [handler_name] [level]
  • 파라미터

    파라미터설명
    [-con container_name]Logger(핸들러) 레벨을 변경할 컨테이너의 이름이다.
    [-node node_name]Logger(핸들러) 레벨을 변경할 노드의 이름이다.
    [-set-handler]

    Logger의 레벨을 변경할 때 이 Logger가 사용하는 핸들러들의 레벨을 Logger의 변경된 레벨의 메시지가 출력될 수 있도록 자동으로 설정한다.

    이 옵션을 사용하면 이 Logger가 사용하는 핸들러와 상위 Logger의 핸들러 레벨이 변경될 수도 있으므로 사용에 주의한다.

    [-f]

    하위의 Logger에 대해서 모두 레벨을 적용할 때 사용한다. 만약 사용하지 않을 경우 이전에 하위 Logger에 별도로 레벨을 설정해 놓았으면 이를 overriding하지 않는다.

    참고로 이 옵션을 사용하더라도 JEUSMain.xml에서 설정 가능한 하위 Logger의 레벨은 변경되지 않는다.

    name레벨을 변경할 Logger의 이름이다.
    [handler_name]레벨을 변경할 핸들러의 이름이다.
    [level]

    새로 설정할 레벨이다.

    • SEVERE

    • WARNING

    • INFO

    • CONFIG

    • FINE (기본값)

    • FINER

    • FINEST

    • ALL

  • 예제

    johan>loglevel jeus
    logger name : jeus      level : INFO
            handler name : jeus.util.logging.ConsoleHandler@23276589  class : jeus.
            util.logging.ConsoleHandler
            level : ALL    useParentHandler : false
    
    johan>loglevel jeus FINE
    logger name : jeus      level : FINE
            The level of handler jeus.util.logging.ConsoleHandler@23276589 is ALL
            and it will publish all log messages of the logger
            useParentHandler : false
    
    johan>loglevel jeus ConsoleHandler FINEST
    
    johan>loglevel jeus
    logger name : jeus      level : FINE
            handler name : jeus.util.logging.ConsoleHandler@23276589  class : jeus.
            util.logging.ConsoleHandler level : FINEST
            useParentHandler : false

4.2.3.31. connect

클러스터링 된 다른 노드에 접속하여 jeusadmin 명령을 수행한다. 다시 원래의 노드로 돌아올 경우에는 exit 명령을 실행한다.

  • 사용법

    connect commandline
  • 파라미터

    파라미터설명
    commandline새로 접속하는 노드에 대한 Command Line이다. Command Line에 공백이 있는 경우에는 " " 내에 입력한다.
  • 예제

    johan>connect tmax
    run jeusadmin with the following command johan
    Login name>jeus
    Password>jeus -> 실제로 Command Line에는 입력•하는 패스워드가 보이지 않는다.
    JEUS 6.0 (Fix#9) administration tool
    tmax>boot -> 프롬프트가 johan(원래 노드)에서 tmax(새로 접속한 노드)로 변경되었다.
                tmax를 기동한다.
    tmax boot done
    tmax_container1
    tmax_container2
    ..
    tmax>down
    Do you really want to shutdown the node [tmax]? (y : n):>y
    The JEUS node [tmax] is down.
    tmax>exit
    return to the previous jeusadmin
    johan> -> tmax 노드에서 exit를 실행하면 다시 원래의 노드 johan으로 돌아온다.
    
    johan>connect "tmax -Ujeus -Pjeus"
    run jeusadmin with the following command johan -Ujeus -Pjeus
    JEUS 6.0 (Fix#9) administration tool
    tmax>
    

4.2.3.32. dump

jeusadmin이 접속해 있는 JEUS Manager 프로세스의 스레드 덤프를 출력한다. 이때 덤프는 JEUS Manager 프로세스의 콘솔 창에 출력된다.

  • 사용법

    dump ([-a]|[container_name])
  • 파라미터

    파라미터설명
    [-a]JEUS Manager 프로세스와 모든 엔진 컨테이너 프로세스의 스레드 덤프가 출력된다.
    [container_name]엔진 컨테이너 이름이 지정된 경우에는 컨테이너 프로세스의 스레드 덤프가 출력된다.
  • 예제

    johan>dump
    dump the node johan successfully

    Manager 프로세스 콘솔창에 출력된 결과의 예이다.

    Dump Stack for the JEUS manager
    Full thread dump Java HotSpot(TM) Server VM (1.5.0_06-b05 mixed mode):
    
    "jeus.server.ErrorTerminal" daemon prio=6 tid=0x0b8c8c48 nid=0xbb8 runnable [0x0f
    daf000..0x0fdafd98]
        at java.io.FileInputStream.readBytes(Native Method)
        at java.io.FileInputStream.read(FileInputStream.java:194)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:254)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
        - locked <0x043187f0> (a java.io.BufferedInputStream)
        at java.io.FilterInputStream.read(FilterInputStream.java:90)
        at jeus.server.VirtualTerminal$ErrorTerminal.run(VirtualTerminal.java:477)
    
    "DestroyJavaVM" prio=6 tid=0x00039638 nid=0xd54 waiting on condition [0x00000000.
    .0x0007fb14]
    
    "Thread-17" daemon prio=6 tid=0x0b04c3f8 nid=0xa90 waiting on condition [0x0fd6f
    000..0x0fd6fa18]
        at java.lang.Thread.sleep(Native Method)
        at com.sun.jmx.remote.opt.internal.ClientCommunicatorAdmin$Checker.run(Client
    CommunicatorAdmin.java:154)
        at java.lang.Thread.run(Thread.java:595)
    
    "Thread-16" daemon prio=6 tid=0x0beb46b0 nid=0x4a0 in Object.wait() [0x0fd2f000..
    0x0fd2fa98]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x04308d20> (a [I)
        at com.sun.jmx.remote.opt.internal.ServerCommunicatorAdmin$Adminor.run (Serv
    erCommunicatorAdmin.java:145)
        - locked <0x04308d20> (a [I)
        at java.lang.Thread.run(Thread.java:595)
    
    "jeus.server.VirturalTerminal [johan-14]" prio=6 tid=0x0beb4dc8 nid=0x660 runnabl
    e [0x0fcef000..0x0fcefb18]
        at java.io.FileInputStream.readBytes(Native Method)
        at java.io.FileInputStream.read(FileInputStream.java:194)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:254)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
        - locked <0x04325d30> (a java.io.BufferedInputStream)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:254)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
        - locked <0x043187d0> (a java.io.BufferedInputStream)
        at java.io.FilterInputStream.read(FilterInputStream.java:90)
        at jeus.server.VirtualTerminal.writeTerminalRunning(VirtualTerminal.java:278)
        at jeus.server.VirtualTerminal.run(VirtualTerminal.java:198)
    
    ...
    
    "Reference Handler" daemon prio=10 tid=0x009accf8 nid=0xc18 in Object.wait() [0x0
    ab4f000..0x0ab4fd18]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x03162dc8> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:474)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <0x03162dc8> (a java.lang.ref.Reference$Lock)
    
    "VM Thread" prio=10 tid=0x009aaad0 nid=0xb94 runnable
    
    "VM Periodic Task Thread" prio=10 tid=0x0abaadb0 nid=0xf4c waiting on condition
    
    End of dump Stack for the JEUS manager
    

4.2.3.33. ftp

파일을 다른 위치로 이동한다.

  • 사용법

    ftp source ftpRoot:/destination
  • 파라미터

    파라미터설명
    source이동할 소스 파일이다.
    ftpRoot:/destination

    ftpRoot는 다음 중 하나이다.

    • jeus: JEUS_HOME

    • web: JEUS_HOME\webhome

  • 예제

    johan>ftp c:\MyApp.ear web:/app_home/MyApp.ear
    c:\MyApp.ear -> web:/app_home/MyApp.ear ftp successful

4.2.3.34. gc

Garbage Collection을 실행한다.

  • 사용법

    gc [container_name]
  • 파라미터

    파라미터설명
    [container_name]

    Garbage Collection을 실행할 엔진 컨테이너를 설정한다.

    (기본값: JEUS Manager에 Garbage Collection을 실행)

  • 예제

    johan>gc
    johan>gc johan_container1
    

4.2.3.35. jndi

바인딩 되어 있는 객체의 정보를 출력한다.

  • 사용법

    jndi [-con container_name] bound name
  • 파라미터

    파라미터설명
    [-con container_name]lookup을 실행할 컨테이너를 지정한다.
    bound name바인딩되어 있는 객체의 바인딩 이름을 지정한다.
  • 예제

    johan>jndi mgmt
    Class for the name mgmt in the server johan : javax.naming.Reference
            Reference class name : jeus.jndi.JNSContext
            Reference Factory class name : jeus.jndi.JNSContextFactory
                    [0] StringRefAddr : 579
                    [1] StringRefAddr : mgmt
                    end of RefAddr

4.2.3.36. jndilist

jndi Context에 바인드되어 있는 객체의 바인딩의(이름) 목록을 조회한다.

  • 사용법

    jndilist [-con container_name] [-a] [context_name]
  • 파라미터

    파라미터설명
    [-con container_name]lookup을 실행할 컨테이너를 지정한다.
    [-a]

    각 목록에 대한 상세한 정보(Is local binding, Reference class name, Reference Factory class name)를 출력한다.

    이 옵션을 사용하지 않은 경우에는 객체의 이름과 클래스 정보만 출력한다.

    [context_name]컨텍스트 이름을 지정한다.
  • 예제

    johan>jndilist -con johan_container1
    List of the context /
            name : mgmt, class : javax.naming.Reference
            name : johan_servlet_engine1, class : jeus.jndi.jns.util.RMIStubWrapper
            name : HelloBean, class : jeus.jndi.jns.util.RMIStubWrapper
            name : johan_system_engine, class : jeus.jndi.jns.util.RMIStubWrapper
            end of list
    
    johan>jndilist -con johan_container1 -a 
    List of the context /
            name : mgmt, class : javax.naming.Reference
            Is local binding? : false
            Reference class name : jeus.jndi.JNSContext
            Reference Factory class name : jeus.jndi.JNSContextFactory
                    [0] StringRefAddr : 579
                    [1] StringRefAddr : mgmt
                    end of RefAddr
    
            name : johan_servlet_engine1, class : jeus.jndi.jns.util.RMIStubWrapper
            Is local binding? : false
    
            name : HelloBean, class : jeus.jndi.jns.util.RMIStubWrapper
            Is local binding? : false
    
            name : johan_system_engine, class : jeus.jndi.jns.util.RMIStubWrapper
            Is local binding? : false
            end of list
    
    johan>jndilist mgmt
    List of the context /mgmt
            name : rmbs, class : javax.naming.Reference
            Is local binding? : false
            Reference class name : jeus.jndi.JNSContext
            Reference Factory class name : jeus.jndi.JNSContextFactory
                    [0] StringRefAddr : 579
                    [1] StringRefAddr : mgmt/rmbs
                    end of RefAddr
            end of list
    

4.2.3.37. mbeanlist

JEUS에 존재하는 MBean들의 목록을 조회한다.

  • 사용법

    mbeanlist [objectname]
  • 파라미터

    파라미터설명
    [objectname]

    주어진 Object의 이름으로 MBean을 Query하여 목록을 출력한다.

    Query하는 Object 이름에 대해서는 JEUS JMX 참고서나 JMX API Javadoc을 참고한다.

  • 예제

    johan>mbenalist
    JEUS:j2eeType=J2EEDomain,JMXManager=johan,name=JeusSystem
    JEUS:j2eeType=JVM,JMXManager=johan,JeusManager=johan,J2EEServer=null,name=johan
    JEUS:j2eeType=JeusService,JMXManager=johan,JeusManager=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=ClassFTPService,JMXManager=johan,JeusManager=
    johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=ClusterService,JMXManager=johan,JeusManager=j
    ohan,name=johan
    JEUS:j2eeType=JeusService,jeusType=ContainerManagerService,JMXManager=johan,Jeus
    Manager=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=ContainerMonitorService,JMXManager=johan,Jeus
    Manager=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=ExternalResourceService,JMXManager=johan,Jeus
    Manager=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=JAXRResourceService,JMXManager=johan,JeusMana
    ger=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=JDBCResourceService,JMXManager=johan,JeusMana
    ger=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=JEUSMPConnector,JMXManager=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=JMXExportService,JMXManager=johan,JeusManager
    =johan,J2EEServer=null,name=johan
    JEUS:j2eeType=JeusService,jeusType=JNDIResourceService,JMXManager=johan,JeusMana
    ger=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=JavaMailResourceService,JMXManager=johan,Jeus
    Manager=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=JeusLogService,JMXManager=johan,JeusManager=j
    ohan,J2EEServer=null,name=johan
    JEUS:j2eeType=JeusService,jeusType=JeusManager,JMXManager=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=LogAnalyzerService,JMXManager=enrique2,JeusMa
    nager=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=NodeControllerService,JMXManager=johan,JeusMa
    nager=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=SchedulerService,JMXManager=johan,JeusManager
    =johan,J2EEServer=null,name=johan
    JEUS:j2eeType=JeusService,jeusType=SecurityDomain,JMXManager=johan,JeusManager=j
    ohan,SecurityService=SecurityService,name=SYSTEM_DOMAIN
    JEUS:j2eeType=JeusService,jeusType=SecurityPolicy,JMXManager=johan,JeusManager=j
    ohan,SecurityDomain=SYSTEM_DOMAIN,name=Policy
    JEUS:j2eeType=JeusService,jeusType=SecurityService,JMXManager=johan,JeusManager=
    johan,name=SecurityService
    JEUS:j2eeType=JeusService,jeusType=SecuritySubject,JMXManager=johan,JeusManager=
    johan,SecurityDomain=SYSTEM_DOMAIN,name=Subject
    JEUS:j2eeType=JeusService,jeusType=SessionServerService,JMXManager=johan,JeusMan
    ager=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=SystemEngineService,JMXManager=johan,JeusMana
    ger=johan,name=johan
    JEUS:j2eeType=JeusService,jeusType=URLResourceService,JMXManager=johan,JeusManag
    er=johan,name=johan
    JMImplementation:type=MBeanServerDelegate
    
    johan>mbeanlist *:jeusType=JeusLogService,*
    JEUS:j2eeType=JeusService,jeusType=JeusLogService,JMXManager=johan,JeusManager=j
    ohan,J2EEServer=null,name=johan
    

4.2.3.38. meminfo

JEUS 프로세스의 메모리 정보를 출력한다.

  • 사용법

    meminfo [container_name]
  • 파라미터

    파라미터설명
    [container_name]

    메모리 정보를 출력할 컨테이너 이름이다.

    (기본값: JEUS Manager의 메모리 정보를 출력)

  • 예제

    johan>meminfo
    --JEUS Manager Memory Information--
    TotalMemory : 18153472
    CurrentMemory : 7090936
    
    
    johan>meminfo johan_container1
    --Engine Container johan_container1 Memory Information--
    TotalMemory : 16601088
    CurrentMemory : 11459016

4.2.3.39. rftp

파일을 다른 위치로 이동한다. “4.2.3.33. ftp”와 기능은 동일하지만 소스측에 "ftpRoot"를 사용하는 점이 다르다.

  • 사용법

    rftp ftpRoot:/source destination
  • 파라미터

    파라미터설명
    ftpRoot:/source

    ftpRoot는 다음 중 하나이다.

    • jeus: JEUS_HOME

    • web: JEUS_HOME\webhome

    destinatioin파일을 이동할 위치이다.
  • 예제

    johan>rftp web:/app_home/MyApp.ear c:\MyApp.ear
    web:/app_home/MyApp.ear -> c:\MyApp.ear ftp performed

4.2.4. EJB 엔진 관련 명령어

EJB 엔진 관련 명령어의 목록은 다음과 같다.

명령어설명
compileEJB 모듈을 컴파일한다.
beanlistEJB Bean의 목록을 조회한다.
moduleinfoEJB 모듈의 정보를 조회한다.

4.2.4.1. compile

리모트(remote)에 있는 jeus machine의 EJB 모듈을 컴파일할 때 사용한다. 로컬에 있는 모듈 외에 리모트의 모듈을 컴파일하기 위한 appcompiler이므로 자세한 사용법은 “4.4. appcompiler”를 참조한다.

  • 사용법

    compile command
  • 파라미터

    파라미터설명
    commandappcompiler의 Command Line이다. 옵션에 대한 자세한 내용은 “4.4. appcompiler”를 참조한다.
  • 예제

    johan>compile "-keep D:\jeus\webhome\app_home\MyEJB.jar"
    -----------------------------------------------------------------
    try to compile ejb module at D:jeus\webhome\app_home\MyEJB_jar___ in application 
          name MyEJB
    compiling the generated files ...
    compiling the generated files ...
    ejb module MyEJB is compiled successfully
    -----------------------------------------------------------------

4.2.4.2. beanlist

지정한 모듈에 포함된 모든 Bean의 정보를 출력한다.

지정한 모듈의 이름(module-name)과 이에 포함된 Bean의 이름(bean-name), 타입, 그리고 JNDI export name(remote/local-export-name)을 출력한다.

  • 사용법

    beanlist [-con container_name] [-r] module_name [bean_name]
  • 파라미터

    파라미터설명
    [-con container_name]

    여러 컨테이너에 module_name이 같은 모듈이 있을 경우 그 중 지정된 컨테이너의 모듈만 조회할 때 사용한다.

    실제로는 ejb 클러스터링된 경우나 single-vm-only 옵션을 설정한 경우에만 module_name이 같은 모듈이 존재할 수 있다.

    [-r]module_name, bean_name을 정규식 표현(regular expression)으로 인식한다.
    module_name

    Bean의 목록을 조회할 모듈의 이름이다.

    [-r] 옵션을 사용하면 정규식 표현(regular expression)을 설정할 수 있다.

    [bean_name]

    조회할 Bean의 이름이다.

    [-r] 옵션을 사용하면면 정규식 표현(regular expression)을 설정할 수 있다.

  • 예제

    johan>beanlist MyEJB
    module-name : MyEJB
            bean-name : hello1
                    type : StatelessSessionBean
                    remote-export-name : HelloApp1
            bean-name : hello2
                    type : StatefulSessionBean
                    local-export-name : LocalHelloApp2
                    remote-export-name : HelloApp2

4.2.4.3. moduleinfo

모듈에 대한 모니터링 정보를 보여준다.

  • 사용법

    moduleinfo [-con container_name] [-r] [-i interval] [-k repeat_number]
                 [module_name] [bean_name]
  • 파라미터

    파라미터설명
    [-con container_name]

    정보를 조회할 EJB 모듈이 디플로이된 컨테이너의 이름이다.

    지정하지 않으면 setProperty에 의해 지정된 container.name을 조회한다.

    (기본값: 현재 노드의 모든 컨테이너를 설정)

    [-r]module_name, bean_name을 정규식 표현(regular expression)으로 인식한다.
    [-i interval]

    moduleinfo 명령어를 이 주기마다 반복한다.

    [-k] 옵션과 함께 사용할 때에만 적용된다.

    [-k repeat_number]

    moduleinfo 명령어를 이 [-i]의 주기마다 이 옵션의 값만큼 반복한다.

    [-i] 옵션과 함께 사용할 때에만 적용된다.

    [module_name]

    정보를 조회할 EJB 모듈의 이름이다.

    [-r] 옵션을 사용하면 regular expression을 설정할 수 있다.

    [bean_name]

    정보를 조회할 Bean의 이름이다.

    [-r] 옵션을 사용하면 regular expression을 설정할 수 있다.

  • 예제

    johan>moduleinfo hello
    module-name : hello
    bean : hello
    ...
    ActiveEJBBeanCount [RangeStatistic] :
            description : the number of bean instances is active, not in the object 
                          pool
            unit : bean
            statistic start time : Tue Feb 06 18:31:23 KST 2007
            last sample time : Tue Feb 06 18:31:23 KST 2007
    
            High watermark : 1
            Current : 1
            Low watermark : 0
    
    AutoRemovedEJBObjectCount [CountStatistic] :
            description : the number of EJB object instances removed by disconnect 
                          timeout
            unit : object
            statistic start time : Tue Feb 06 18:31:23 KST 2007
            last sample time : Tue Feb 06 18:31:23 KST 2007
            count : 0
    
    CreateCount [CountStatistic] :
            description : the number of times the bean's create method was called
            unit : times
            statistic start time : Tue Feb 06 18:31:23 KST 2007
            last sample time : Tue Feb 06 18:31:23 KST 2007
            count : 1
    ...

4.2.5. 서블릿 엔진 관련 명령어

서블릿 엔진 관련 명령어의 목록은 다음과 같다.

명령어설명
info디플로이된 컨텍스트들의 일반적인 정보를 조회한다.
webreload특정 컨텍스트 그룹, 컨텍스트를 동적으로 Reload한다.
webresume일시 중지된 컨텍스트 그룹, 컨텍스트, 서블릿 등을 재시작한다.
websuspend컨텍스트 그룹, 컨텍스트, 서블릿 등을 일시중지 한다.
webtobWebtoB Listener를 시작 또는 중지한다.
clrstat컨텍스트 그룹, 컨텍스트, 서블릿 등의 요청 통계 자료를 초기화한다.
setcfg웹 컨테이너 관련 설정을 동적으로 변경한다.
cfg웹 컨테이너 관련 설정 정보를 조회한다.
stat웹 컨테이너 관련 각종 통계 자료를 조회한다.

4.2.5.1. 공통적용 사항

다음은 서블릿 엔진 관련 명령어에서 공통적으로 적용되는 옵션에 대한 설명이다.

  • [-con container_name] 옵션

    모든 명령어에 포함되어 있는 이 옵션은 각 명령어가 적용될 컨테이너를 지정할 때 사용하는 옵션이다. 옵션을 설정하지 않으면 현재 설정된 컨테이너에 각 명령어가 적용된다. 해당 명령어에 한해서 임시적으로 컨테이너를 지정하고 싶을 때 이 옵션을 사용하고, 컨테이너를 계속 지정하고 싶으면 setProperty 명령어를 사용해서 지정한다.

    각 명령어의 옵션 설명에서 이 옵션에 대한 설명은 생략한다.

4.2.5.2. info

디플로이된 컨텍스트 그룹(Context Group)과 컨텍스트(Context)들에 대하여 일반적인 정보를 출력한다.

  • 사용법

    info [-con container_name] [ContextGroup[Context[Servlet]]]
  • 파라미터

    파라미터설명
    [-con container_name]

    정보를 조회할 컨테이너의 이름이다. 설정되어 있지 않으면 모든 컨테이너의 정보를 조회한다. 컨테이너의 이름은 conlist를 이용해서 조회가 가능하다.

    [ContextGroup]

    정보를 조회할 컨텍스트 그룹이다.

    특정한 컨텍스트 그룹의 정보를 조회할 때 설정한다. 설정하지 않는다면 현재 설정된 모든 서블릿 엔진의 컨텍스트 그룹 내용이 조회된다.

    [Context]

    정보를 조회할 컨텍스트 그룹이다.

    특정한 컨텍스트의 정보만 조회할 때 설정한다. 현재 설정된 컨테이너와 컨텍스트 그룹의 모든 컨텍스트 내용을 조회한다.

    [Servlet]

    정보를 조회할 서블릿이다.

    특정한 서블릿의 컨텍스트의 정보만 조회할 때 설정한다. 설정하지 않으면 현재 설정된 컨테이너와 컨텍스트 그룹 및 컨텍스트의 모든 내용을 조회한다.

  • 사용 예

    johan>info 
    < ContextGroup : MyGroup >
        Context : examples
        0:[ForwardTest2] <NotLoaded> class: ForwardTest2, total_reqs: 0
        1:[ForwardTest1] <NotLoaded> class: ForwardTest1, total_reqs: 0
        2:[CookieTest] <NotLoaded> class: CookieTest, total_reqs: 0
        3:[SessionTest] <NotLoaded> class: SessionTest, total_reqs: 0
        4:[ForwardedPage] <NotLoaded> class: ForwardedPage, total_reqs: 0
        5:[IncludeTest2] <NotLoaded> class: IncludeTest2, total_reqs: 0
        6:[IncludeTest1] <NotLoaded> class: IncludeTest1, total_reqs: 0
        7:[RequestInfoTest] <NotLoaded> class: RequestInfoTest, total_reqs: 0
        8:[IncludedPage] <NotLoaded> class: IncludedPage, total_reqs: 0
        9:[RequestHeaderTest] <NotLoaded> class: RequestHeaderTest, total_reqs: 0
        10:[ServletContextTest] <NotLoaded> class: ServletContextTest, total_reqs: 0

4.2.5.3. webreload

디스크로부터 지정한 Entity를 Reload한다. 이미 로드된 서블릿(JSP)들과 클래스들을 Reload한다.

이 명령어는 서블릿이나 클래스의 Reload 기능이 비활성화되어 있을 경우 유용하게 사용할 수 있다(enable-reload, check-class-reload).

  • 사용법

    webreload  [-con container_name][ContextGroup[Context]] 
  • 파라미터

    파라미터설명
    [ContextGroup]Reload하려는 컨텍스트 그룹이다.
    [Context]Reload하려는 컨텍스트이다. 컨텍스트 그룹이 설정되어 있어야 한다.
  • 예제

    johan>webreload MyGroup examples
    reload successful
    johan>

4.2.5.4. webresume

일시 중지된 컨텍스트 그룹, 컨텍스트, 서블릿 등을 재시작한다.

  • 사용법

    webresume [-con container_name][ContextGroup[Context[Servlet]]] 
  • 파라미터

    파라미터설명
    [ContextGroup]중지된 컨텍스트 그룹 중에서 다시 시작할 컨텍스트 그룹이다.
    [Context]

    중지된 컨텍스트 중에서 다시 시작할 컨텍스트이다.

    컨텍스트 그룹이 설정되어 있어야 한다.

    [Servlet]

    중지된 서블릿 중에서 다시 시작할 서블릿이다.

    컨텍스트 그룹, 컨텍스트가 설정되어 있어야 한다.

  • 예제

    johan>webresume MyGroup
    resume successful
    johan>

4.2.5.5. websuspend

지정한 컨텍스트 그룹, 컨텍스트, 서블릿을 중지하여 클라이언트의 이용을 중지한다.

  • 사용법

    websuspend [-con container_name][ContextGroup[Context[Servlet]]] 
  • 파라미터

    파라미터설명
    [ContextGroup]중지된 컨텍스트 그룹 중에서 다시 중지할 컨텍스트 그룹이다.
    [Context]

    중지된 컨텍스트 중에서 다시 중지할 컨텍스트이다. 컨텍스트가 존재하지 않을 경우 실패한다.

    컨텍스트 그룹이 설정되어 있어야 한다.

    [Servlet]

    중지된 서블릿 중에서 다시 중지할 서블릿이다.

    컨텍스트 그룹, 컨텍스트가 설정되어 있어야 한다.

  • 예제

    johan>websuspend MyGroup examples
    suspend successful
    johan>
    
    johan>websuspend MyGroup aaa 
    < ContainerName : johan_container1 >
    suspend command failed : ContextGroup = MyGroup, Context = aaa
    johan>
    

4.2.5.6. webtob

WebtoB의 요청을 처리하고 있는 Listener를 시작하거나 중지할 수 있다.

  • 사용법

    webtob [-con container_name]([-s listener-id]|[-r listener-id]) 
  • 파라미터

    파라미터설명
    [-s listener-id]listener-id를 가진 WebtoB Listener를 중지한다.
    [-r listener-id]listener-id를 가진 WebtoB Listener를 시작한다.
  • 예제

    johan>webtob -s wtb1
    johan>webtob -r wtb1

4.2.5.7. clrstat

지정한 Entity(컨텍스트 그룹, 컨텍스트, 서블릿)에 대하여 요청 통계 자료를 초기화하여 카운터 기록을 재설정 한다.

  • 사용법

    clrstat [-con container_name][ContextGroup[Context[Servlet]]] 

  • 파라미터

    파라미터설명
    [ContextGroup]요청 횟수 및 처리 시간 기록을 삭제할 컨텍스트 그룹이다.
    [Context]요청 횟수 및 처리 시간 기록을 삭제할 컨텍스트이다.
    [Servlet]요청 횟수 및 처리 시간 기록을 삭제할 서블릿이다.

  • 예제

    johan>stat -r
    < request information(MyGroup/examples) >
       - total requests          : 4
       - total processing time   : 141 ms
       - average processing time : 35 ms
    johan>clrstat MyGroup
    johan>stat -r
    < request information(MyGroup/examples) >
       - total requests          : 0
       - total processing time   : 0 ms
       - average processing time : -1 ms

4.2.5.8. setcfg

콘솔에서 웹 컨테이너에 대한 설정을 동적으로 변경하기 위한 명령어이다. 변경된 정보는 운영되고 있는 상태에만 적용되며 설정 파일에는 반영되지 않는다는 점에 주의한다. 그러므로 다음 구동시에도 적용하려면 반드시 설정 파일을 변경하여야 한다.

  • 사용법

    setcfg [-con container_name] [-cg context-group] [-vh vitual-host] [-c context] 
            [-cn listener-id] [-tmin number] [-tmax number] [-trate number] 
            [-tidle msec][-tmwq number][-tmq number][-tmtat number][-tnt number|rate]
            [-trt number|rate] [-tmi msec] [-smi msec] [-rmi msec] [-stm minutes]
            [-ar true|false] [-ell level] [-to index] 
  • 파라미터

    파라미터설명
    [-cg context-group]설정을 적용할 컨텍스트 그룹을 설정한다.
    [-vh vitual-host]설정을 적용할 가상 호스트를 설정한다.
    [-c context]설정을 적용할 컨텍스트를 설정한다.
    [-cn listener-id]설정을 적용할 Listener를 설정한다.
    [-tmin number]최소 스레드 수를 설정한다(-cn 옵션 설정 필수).
    [-tmax number]최대 스레드 수를 설정한다(-cn 옵션 설정 필수).
    [-trate number]스레드의 변환 비율을 설정한다(-cn 옵션 설정 필수).
    [-tidle msec]스레드의 idle-time을 설정한다(-cn 옵션 설정 필수).
    [-tmwq number]최대 Wait Queue 사이즈를 설정한다(-cn 옵션 설정 필수).
    [-tmq number]최대 Queue 사이즈를 설정한다(-cn 옵션 설정 필수).
    [-tmtat number]스레드의 최대 액티브 시간을 설정한다(-cn 옵션 설정 필수).
    [-tnt number|rate]notify threadhold를 설정한다(-cn 옵션 설정 필수).
    [-trt number|rate]restart threadhold를 설정한다(-cn 옵션 설정 필수).
    [-tmi msec]스레드 모니터링 주기를 설정한다.
    [-smi msec]세션 모니터링 주기를 설정한다.
    [-rmi msec]서블릿 Reload 주기를 설정한다.
    [-stm minutes]세션 타임아웃을 설정한다.
    [-ar true|false]Auto Reload 여부를 설정한다.
    [-ell level]에러 로그 레벨을 설정한다.
    [-to index]

    webtob-listener의 경우 해당 웹 서버로 서비스 전환 설정을 한다. (index - main:0, backup1:1, backup2:2, .... )

  • 예제

    johan>cfg
    
    # # # # Container [ tak_default ] information # # # # # #
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    +             WebContainerType Information            +
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    - redirect standard out   : false
    - redirect stardard error : false
    - shutdown timeout        : -1
    <<< ContainerMonitor Information >>>
        - thread pool check period (tmi)         : 300000
        - session check period (smi)             : 300000
        - servlet reload check period (rmi)      : 300000
    .................
    .................
    johan>setcfg -smi 200000
    johan>cfg
    # # # # Container [ tak_default ] information # # # # #
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    +             WebContainerType Information            +
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    - redirect standard out   : false
    - redirect stardard error : false
    - shutdown timeout        : -1
    <<< ContainerMonitor Information >>>
        - thread pool check period (tmi)         : 300000
        - session check period (smi)             : 200000
        - servlet reload check period (rmi)      : 300000

4.2.5.9. cfg

웹 컨테이너에 대한 설정 정보를 조회한다. 이 명령어를 실행하여 조회되는 구성 항목과 필드들에 대한 정보는 WebMain.xml 구성 레퍼런스를 참고한다.

  • 사용법

    cfg [-con container_name] [-cg context-group] [-vh virtual-host] [-c context] 
         [-cn listener-id] [-log] [-sc] [-rh] 
  • 파라미터

    파라미터설명
    [-cg context-group]주어진 컨텍스트에 대한 모든 설정 내용을 출력한다.
    [-vh virtual-host]주어진 가상 호스트에 대한 모든 설정 내용을 출력한다.
    [-c context]주어진 컨텍스트에 대한 모든 설정 내용을 출력한다.
    [-cn listener-id]

    주어진 Listener에 대한 모든 설정 내용을 출력한다.

    Listener는 WEBMain.xml에 설정한 listenerID를 통해서 식별한다.

    [-log]로그 설정에 대한 정보를 출력한다.
    [-sc]세션 서버에 관련된 정보를 출력한다.
    [-rh]응답 헤더의 설정을 출력한다.
  • 예제

    johan>cfg -cg MyGroup
    # # # # Container [ johan_default ] information # # # # # #
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    +             WebContainerType Information            +
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    - redirect standard out   : false
    - redirect stardard error : false
    - shutdown timeout        : -1
    <<< ContainerMonitor Information >>>
        - thread pool check period (tmi)         : 300000
        - session check period (smi)             : 300000
        - servlet reload check period (rmi)      : 300000
    
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    +             ContextGroup Information                +
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    - ContextGroup name          : MyGroup
    - forced request encoding    : null
    - forced postdata encoding   : null
    - forced response encoding   : null
    - default request encoding   : null
    - default postdata encoding  : null
    - default response encoding  : null
    - print error to browser     : false
    - jsp configuration          :
        + CheckIncludedJspFile : false
        + KeepGenerated : true
        + JavaCompiler : com.sun.tools.javac
    - session descriptor -
        - shared            : false
    
    <<< VirtualHost [__DEFAULT_HOST__] Information >>>
    - host list    :
    - context list :
        + examples
    
    <<< Context [examples] Information >>>
    - context path    : /examples
    - document base   : d:\jeus\jeus6\webhome\app_home\examples
    - is ear deploy ? : false
    - auto reloading  :
        + enable      : false
        + on demand   : false
    <<< connection [http1] >>>
      - type                  : HttpListener
      - address               : 127.0.0.1
      - port                  : 8088
      - scheme                : http
      - backlog             : 50
      - output buffer size    : 8192
      - busy notify page      : null
      - server access ctrl    : false
      - postdata read timeout : 30000
      ++ Thread Pool ++
        - minimum threads (tmin)    : 10
        - maximum threads (tmax)    : 20
        - changing rate (trate)     : 1
        - maximum idle time (tidle) : 300000
        - maximum wait queue (tmwq) : 4
        - maximum  queue (tmq)      : -1
    <<<<< Logger Configuration Information >>>>>
    - session descriptor -
        - shared            : false
    
    <<< Response Header Information >>>
      ++ custom header ++
      - []
    # # # # The end of information page # # # # # # # #
    
    johan>

4.2.5.10. stat

구동 중인 웹 컨테이너의 JVM에서 사용하는 메모리 정보, 웹 컨테이너에 속해 있는 각 Listener에 대한 Thread Pool의 상태, 컨텍스트에 대한 요청 횟수 및 처리시간 등의 정보를 파라미터 설정에 따라 조회한다.

  • 사용법

    stat [-con container_name] [-m] [-t] [-r] [-s] [-w] [-i sec] [-k number] [-l sec] 
  • 파라미터

    파라미터설명
    [-m]구동 중인 웹 컨테이너에서 현재 JVM에서 사용하고 있는 메모의 상태를 조회한다.
    [-t]

    웹 컨테이너에 속해 있는 각각의 Listener에 대한 Thread Pool의 상태를 조회한다.

    조회되는 정보는 현재 할당된 Worker Thread의 수와 Wait-Queue에 적체된 클라이언트의 수, 그리고 Thread Pool을 유지하는 최대 스레드의 개수를 포함한다.

    [-r]각 컨텍스트에 대해 처리된 요청의 누적 수치와 평균 처리시간을 출력한다.
    [-s]

    웹 컨테이너에 구성된 세션 서버의 커넥션에 대한 정보를 출력한다.

    보는 현재 연결되어 있는 세션 서버의 이름, 전체 세션의 수, Pool에서 사용된 세션 서버와 커넥션의 수를 포함한다.

    [-w]WebT Connection Pool에 대한 정보를 출력한다.
    [-i sec]

    각 상태 정보를 특정 시간 간격으로 조회하고 싶을 때 설정한다.

    sec는 반복 간격을 초단위로 설정할 수 있다.

    이 옵션을 [-k] 옵션 혹은 -l 옵션과 함께 사용한다.

    다음은 1초 간격으로 5번을 화면에 출력하도록 설정한 예이다.

    stat -i 1 -k 5

    [-k number]

    각 상태 정보를 반복적으로 조회하고 싶을 때 반복 횟수를 설정한다.

    number는 반복 횟수를 자연수로 설정할 수 있다.

    이 옵션은 [-i] 옵션과 함께 사용한다.

    다음은 2초 간격으로 3번의 결과를 출력하도록 설정한 예이다.

    stat -i 2 -k 3 
    [-l sec]

    각 상태 정보를 특정 시간 동안 반복적으로 조회하고 싶을 때 [-i] 옵션과 함께 설정하여 사용한다.

    sec는 반복적으로 모니터하고 싶은 시간을 초 단위로 설정할 수 있다.

    다음은 10초 동안 2초에 한 번씩 모니터한 값(스레드 정보)을 출력하도록 설정한 예이다.

    stat -i 2 -l 10 
  • 예제

    johan>stat
    < (MyGroup,johan_servlet_engine1-examples__examples_johan_9736) session informat
    ion >
     - number of active local sessions      : 1
     - number of passivated local sessions  : 0
     - local file-db size                   : 0
     - number of active backup sessions     : 0
     - number of passivated backup sessions : 0
     - backup file-db size                  : 0
     - number of connections                : 0
    
    < memory information >
    VM Total Memory    = 31342592 Bytes
    VM Free Memory     = 20118960 Bytes
    
    < thread information(MyGroup/webtob1-hth0(127.0.0.1_9900)) >
        - current thread count      : 5
        - max thread count          : 5
        - wait queue count          : -1
    
    < thread information(MyGroup/http1) >
        - current thread count      : 10
        - max thread count          : 20
        - wait queue count          : 0
    
    
    < request information(MyGroup/examples) >
       - total requests          : 13
       - total processing time   : 406 ms
       - average processing time : 31 ms
    
    johan>

4.2.6. Connection Pool 모니터링과 제어 명령어

JEUS에 구성된 Connection Pool을 모니터링하거나 제어할 수 있다. JCA Connection Pool 뿐만 아니라 DB Pool도 사용 가능하다. dsinfo 등과 같은 기존 명령도 사용 가능하나 되도록이면 이 명령을 사용하길 권장한다.

Connection Pool 모니터링과 제어 명령어의 목록은 다음과 같다.

명령어설명
list-connection-poolConnection Pool 또는 커넥션 정보를 조회한다.
control-connection-poolConnection Pool을 제어한다.

참고

JEUS 5.x 버전부터는 JDBC 데이터소스에 대해서 lookup이 완료된 후에 DB Pool이 구성된다.

4.2.6.1. list-connection-pool

엔진 컨테이너들의 Connection Pool 또는 Pool이 관리하는 커넥션의 정보를 조회한다. 편의상 lscp 라는 약어를 제공한다.

  • 사용법

    list-connection-pool [-con engine-container-name] [-iinterval]
                          [-k repeat_number][-active] [-jdbc | -jca]
                          [-id connection-pool-id] [-cid connection-id] [-t]
  • 파라미터

    파라미터설명
    [-con engine-container-name]엔진 컨테이너 이름이다.
    [-i interval]

    초 단위로 간격을 설정한다.

    [-k] 옵션을 설정하지 않은 경우에는 무한 반복 출력되지만 <Enter>키를 2번 눌러서 정지할 수 있다.

    [-k repeat_number]정보 조회 횟수를 설정한다. [-i] 옵션이 반드시 필요하다.
    [-active]생성된 Connection Pool만 조회한다.
    [-jdbc | -jca]DB Pool 또는 JCA Connection Pool을 조회한다. 두 옵션은 함께 사용할 수 없다.
    [-id connection-pool-id]

    특정 Connection Pool의 커넥션들에 대한 정보를 조회한다.

    반드시 특정 엔진 컨테이너를 옵션으로 설정해야 한다.

    [-cid connection-id]

    특정 Connection Pool에서 특정 커넥션에 대한 정보를 조회한다.

    이 명령을 통해서 getConnection Trace 정보를 조회할 수 있고, DB Pool의 경우 SQL Trace 정보를 조회할 수 있다.

    반드시 특정 엔진 컨테이너와 특정 Connection Pool을 옵션으로 설정해야 한다.

    [-t]

    가장 최근에 커넥션을 사용한 스레드의 이름을 표시한다.

    이 옵션은 대상이 특정 엔진 컨테이너의 특정 Connection Pool 또는 특정 커넥션일 경우에만 유효하다.

  • 예제

    명령어에 대한 예제는 다음과 같은 경우로 나누어 진다.

    • 서버에 존재하는 Connection Pool의 전체 목록을 확인하고 싶을 때(JCA Pool, DB Pool 포함)

      johan>lscp
    • 서버에 생성된 Connection Pool의 목록을 확인하고 싶을 때

      johan>lscp -active
    • 서버에 생성된 JCA Connection Pool의 목록을 확인하고 싶을 때

      johan>lscp -jca -active
    • 엔진 컨테이너 johan_container1에 생성된 JCA Connection Pool jcapool1의 커넥션 목록을 확인하고 싶을 때

      johan>lscp -con johan_container1 -id jcapool1
    • 엔진 컨테이너 johan_container1에 생성된 JCA Connection Pool jcapool1의 커넥션 jcapool1-23에 대한 정보를 확인하고 싶을 때

      johan>lscp -con johan_container1 -id jcapool1 -cid jcapool1-23

4.2.6.2. control-connection-pool

엔진 컨테이너에 있는 Connection Pool을 제어할 수 있다. 이 명령은 반드시 엔진 컨테이너를 지정해야 한다. 편의상 controlcp라는 약어를 제공한다.

  • 사용법

    control-connection-pool [-con engine-container-name]
                             [-enable | -disable | -create | -refresh | -shrink]
                             connection-pool-id
  • 파라미터

    파라미터설명
    [-con engine-container-name]엔진 컨테이너 이름이다.
    [-enable]Connection Pool을 활성화한다.
    [-disable]

    Connection Pool을 비활성화한다.

    이후로 애플리케이션에서 커넥션 요청을 하면 exception이 발생한다.

    [-create]Connection Pool을 생성한다.
    [-refresh]기존의 커넥션들을 모두 버리고 최솟값만큼 새롭게 커넥션을 생성한다.
    [-shrink]무조건 최솟값으로 커넥션을 줄인다.
    connection-pool-id

    Connection Pool ID에 해당하는 JNDI 이름이다.

    JEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다.

  • 예제

    명령어에 대한 예제는 다음과 같은 경우로 나누어 진다.

    • Connection Pool을 생성하고 싶을 때 (JCA Pool, DB Pool 포함)

      johan>controlcp -con johan_container1 -create jcapool1
    • 생성된 Connection Pool을 비활성화하고 싶을 때

      johan>controlcp -con johan_container1 -disable jcapool1
    • 생성된 Connection Pool을 갱신하고 싶을 때

      johan>controlcp -con johan_container1 -refresh jcapool1

4.2.7. DB Connection Pool 관련 명령어

JEUS에 구성된 DB Connection Pool을 모니터링하거나 제어할 수 있다.

DB Connection Pool 관련 명령어의 목록은 다음과 같다.

명령어설명
createdsJDBC 데이터소스의 Connection Pool을 생성한다.
refreshdsJDBC 데이터소스의 Connection Pool을 갱신한다.
testdsconfigJDBC 데이터소스 설정을 테스트한다.
dsinfoJDBC 데이터소스 정보를 조회한다.
dsconinfoJDBC 데이터소스 커넥션 정보를 조회한다.
enabledsJDBC 데이터소스의 Connection Pool을 활성화한다.
cdisabledsJDBC 데이터소스의 Connection Pool을 비활성화한다.
shrinkdsJDBC 데이터소스의 Connection Pool의 idle 커넥션을 삭제한다.
reconfigdsJDBC 데이터소스의 Connection Pool을 재구성한다.
controlcds클러스터 데이터소스를 제어한다.

참고

1. JEUS v6.0 Fix#7부터는 새로운 Connection Pool 명령을 제공하므로 가능하면 그것을 사용하기 바란다. 이에 관한 자세한 사항은 “4.2.6. Connection Pool 모니터링과 제어 명령어”를 참조한다.

2. JEUS v5.0부터는 애플리케이션이 JDBC 데이터소스를 lookup한 이후에 DB Pool이 구성된다.

4.2.7.1. createds

해당 JDBC 데이터소스의 Connection Pool을 생성한다.

  • 사용법

    createds [-con container_name] data-source-id
  • 파라미터

    파라미터설명
    [-con container_name]JDBC 데이터소스가 존재하는 엔진 컨테이너 이름을 설정한다.
    data-source-idJEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다.
  • 예제

    johan>createds -con johan_container1 datasource1

4.2.7.2. refreshds

해당 JDBC 데이터소스의 Connection Pool의 커넥션들을 모두 버리고 설정된 최솟값만큼 다시 커넥션을 맺는다.

  • 사용법

    refreshds [-con container_name] data-source-id
  • 파라미터

    파라미터설명
    [-con container_name]JDBC 데이터소스가 존재하는 컨테이너 이름을 설정한다.
    data-source-idJEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다.
  • 예제

    johan>refreshds -con johan_container1 datasource1

4.2.7.3. testdsconfig

데이터소스의 설정을 변경하고 테스트할 때 이용한다. JEUSMain.xml의 설정을 변경한 후 이용한다.

  • 사용법

    testdsconfig data-source-id
  • 파라미터

    파라미터설명
    data-source-idJEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다.
  • 예제

    johan>testdsconfig johan_datasource
    

4.2.7.4. dsinfo

지정한 엔진 컨테이너 내에 등록된 모든 JDBC 데이터소스 Connection Pool에 대한 정보를 출력한다.

  • 사용법

    dsinfo [-con container_name] [-i interval] [-k repeat_number] [-active]
  • 파라미터

    파라미터설명
    [-con container_name]JDBC 데이터소스가 존재하는 컨테이너 이름을 설정한다. 입력하지 않으면 모든 엔진 컨테이너의 정보를 출력한다.
    [-i interval]

    초 단위로 간격을 설정한다.

    [-k] 옵션을 설정하지 않았을 때는 무한 반복 출력되지만 <Enter> 키를 2번 눌러서 정지할 수 있다.

    [-k repeat_number]몇 회 동안 정보를 조회할 지 설정한다. [-i] 옵션이 반드시 필요하다.
    [-active]현재 생성된 Connection Pool만 조회한다.
  • 예제

    johan>dsinfo -con johan_container1 -i 2 -k 20
    johan>dsinfo -active

4.2.7.5. dsconinfo

지정한 엔진 컨테이너 내에 존재하는 JDBC 데이터소스에 대한 커넥션 정보를 출력한다.

  • 사용법

    dsconinfo [-con container-name] [-i interval]
             [-k repeat_number] [-id connection-id ][-t] data-source-id

  • 파라미터

    파라미터설명
    [-con container-name]JDBC 데이터소스가 존재하는 컨테이너 이름을 설정한다.
    [-i interval]초 단위로 간격을 설정한다. [-k] 옵션이 반드시 필요하다.
    [-k repeat_number]몇 회 동안 정보를 조회할지 설정한다. [-i] 옵션이 반드시 필요하다.
    [-id connection-id]특정 커넥션에 대한 정보만 조회하고 싶은 경우 해당 커넥션의 ID를 설정한다. [-i], [-k] 옵션은 무시한다.
    [-t]커넥션을 가장 마지막에 사용한 스레드의 이름을 조회한다.
    data-source-idJEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다.
  • 예제

    명령어에 대한 예제는 다음과 같은 경우로 나누어 진다.

    • johan>dsconinfo -con johan_container1 -i 2 -k 20 johan_source
    • johan>dsconinfo -con johan_container1 -t johan_source
    • johan>dsconinfo -con johan_container1 -id johan_source-1 johan_source

4.2.7.6. enableds

해당 JDBC 데이터소스의 Connectio Pool을 활성화한다.

  • 사용법

    enableds [-con container_name] data-source-id
  • 파라미터

    파라미터설명
    [-con container_name]JDBC 데이터소스가 존재하는 컨테이너 이름을 설정한다.
    data-source-idJEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다.
  • 예제

    johan>enableds -con johan_container1 datasource1

4.2.7.7. disableds

해당 JDBC 데이터소스의 Connection Pool을 비활성화한다.

  • 사용법

    disableds [-con container_name] data-source-id
  • 파라미터

    파라미터설명
    [-con container_name]JDBC 데이터소스가 존재하는 컨테이너 이름을 설정한다.
    data-source-idJEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다.
  • 예제

    johan>disableds -con johan_container1 datasource1

4.2.7.8. shrinkds

Idle 커넥션을 삭제하여 Connection Pool의 크기를 줄인다.

  • 사용법

    shrinkds [-con container_name] data-source-id
  • 파라미터

    파라미터설명
    [-con container_name]JDBC 데이터소스가 존재하는 컨테이너 이름을 설정한다.
    data-source-idJEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다.
  • 예제

    johan>shrinkds -con johan_container1 datasource1

4.2.7.9. reconfigds

지정된 JDBC 데이터소스의 Connection Pool의 최소 사이즈, 최대 사이즈를 재구성한다. 그러나 JEUSMain.xml의 구성은 변경되지 않는다.

  • 사용법

    reconfigds [-con container_name][-min num] [-max num] data-source-id
  • 파라미터

    파라미터설명
    [-con container_name]JDBC 데이터소스가 존재하는 컨테이너 이름을 설정한다.
    [-min num]Connection Pool의 최소 사이즈를 설정한다.
    [-max num] Connection Pool의 최대 사이즈를 설정한다.
    data-source-idJEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다.
  • 예제

    johan>reconfigds -con johan_container1 -min 5 -max 7 datasource1

4.2.7.10. controlcds

클러스터 데이터소스를 수동으로 제어할 수 있는 기능을 제공한다. cds는 cluster data source를 의미한다.

  • 사용법

    아무런 옵션을 설정하지 않을 경우(-con, -all 제외) -list 옵션이 기본적으로 동작한다.

    controlcds [-con container_name] [-list] [-failback] [-all] data-source-id
  • 파라미터

    파라미터설명
    [-con container_name]클러스터 데이터소스가 존재하는 컨테이너 이름을 설정한다.
    [-list]클러스터 데이터소스에 포함된 데이터소스의 리스트를 조회한다.
    [-failback]해당 클러스터 데이터소스에 설정된 주 데이터소스로 Failback을 시도한다.
    [-all]노드 클러스터링이 되어 있을 경우 모든 노드에 대해 같은 명령을 적용한다.
    data-source-idJEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다.

  • 예제

    johan>controlcds -con johan_container1 johan_cds
    --------------------
    data source list
    --------------------
    racpool1
    racpool2
    --------------------
    johan>controlcds -con johan_container1 -failback johan_cds
    Done successfully

4.2.8. 트랜잭션 관련 명령어

트랜잭션 관련 명령어의 목록은 다음과 같다.

명령어설명
tmresync리소스 매니저를 복구한다.
txlist트랜잭션을 모니터링한다.

4.2.8.1. tmresync

리소스 매니저를 복구한다.

  • 사용법

    tmresync [-con container_name] resource_type export_name [connector_module_name]
  • 파라미터

    파라미터설명
    [-con container_name]트랜잭션 매니저가 존재하는 컨테이너 이름을 설정한다.
    resource_type

    복구할 리소스 타입이다. 각 타입은 다음과 같다.

    • sq : JDBC XADataSource

    • jms: JMS 커넥션 팩토리(ConnectionFactory)

    • connector: 커넥터 리소스 어댑터

    export_name리소스의 export_name 이다.
    [connector_module_name]리소스가 Connector인 경우에는 해당 Connector Module의 이름을 설정한다.
  • 예제

    johan>tmresync -con johan_container1 sql johan_source

4.2.8.2. txlist

여러 상태의 트랜잭션들을 모니터링한다.

  • 사용법

    txlist [-con container_name] [-transaction_type]
  • 파라미터

    파라미터설명
    [-con container_name]트랜잭션 매니저가 존재하는 컨테이너 이름을 설정한다.
    [-transaction_type]

    모니터링할 트랜잭션 타입이다. 각 타입은 다음과 같다.

    • inflight : 진행 중인 트랜잭션. 트랜잭션이 시작되고 Commit 또는 Rollback 단계까지 진행이 되지 않은 메모리 상의 트랜잭션

    • indoubt : 미완료 트랜잭션. 불완전한 상태의 끝나지 않은 트랜잭션으로서 복구가 필요하거나 현재 결정을 받지 못한 트랜잭션

    • retrying : 재시도중인 트랜잭션. 트랜잭션 서비스 도중, 리소스 매니저의 문제로 인해 1PC(one phase commit) 또는 2PC(two phase commit)를 제대로 처리하지 못해 JEUS 자체적으로 재시도 중인 트랜잭션

  • 예제

    johan>txlist -con johan_container1 -inflight

4.2.9. 보안 관련 명령어

본 절에서는 보안과 관련된 명령어에 대해 설명한다.

보안과 관련 명령어는 각각 Subject, 그룹, Policy 관리 및 보안 체크 명령어로 분류되고, 목록은 다음과 같다.

  • Subject 관리 명령어

    Subject 관리 명령어는 Subject를 추가, 수정, 삭제할 때 사용한다.

    명령어설명
    addsubject새로운 Subject를 추가한다.
    removesubjectSubject를 삭제한다.
    getsubjectnames로그인된 사용자명 목록을 조회한다.
    getsubjectSubject에 대한 정보를 조회한다.
    setpassword패스워드를 설정한다.
    locksubject특정 Subject에 Lock을 설정한다.
    unlocksubject특정 Subject에 설정된 Lock을 해제한다.
    setsubjectexpirationSubject에 대한 만료시간을 설정한다.
    clearsubjectexpiration설정된 Subject에 대한 만료시간을 해제한다.
    addprincipalSubject에 Principal을 추가한다.
    removeprincipalSubject에서 Principal을 삭제한다.
    setsubjectdescriptionSubject에 대한 설명을 추가한다.
    addcredentialSubject에 Custom Credential을 추가한다.
    removecredentialSubject에서 Credential을 삭제한다.
    userexist사용자의 존재 여부를 확인한다.

    주의

    본 절에서 소개하는 명령어는 매우 민감한 사안을 다루므로, 이 명령어를 실행하기에 적절한 권한을 가진 Subject로 로그인해야 한다.

  • 그룹 관리 명령어

    그룹 관리 명령어는 그룹을 추가, 수정, 삭제할 때 사용한다.

    명령어설명
    addGroup새로운 그룹을 추가한다.
    addusertogroup특정 그룹에 사용자를 추가한다.
    removegroup그룹을 삭제한다.
    removeuserfromgroup특정 그룹의 사용자를 삭제한다.
    getgroupnames그룹의 목록을 조회한다.
    getgroup특정 그룹에 대한 정보를 조회한다.
    getgroups그룹 목록을 조회한다.
    setgroupdescription특정 그룹에 대한 설명을 추가한다.
    getgroupdescription그룹에 설명을 조회한다.
    getmembersfromgroup특정 그룹에 대한 사용자 및 서브 그룹 정보를 조회한다.
    ismember특정 그룹에 사용자 등록 여부를 조회한다.
    groupexist그룹의 존재 여부를 조회한다.
  • Policy 관리 명령어

    Policy 명령어는 보안 시스템에서 Policy와 관련된 사항을 관리할 때 사용한다. 이 명령어를 통해서 Principal-Role 매핑, Role-Resource 매핑을 추가하거나 삭제할 수 있다. Policy 명령어는 보안 시스템에서 권한 체크와 관련된 전반적인 사항을 관리할 수 있다.

    명령어설명
    getpolicy특정 Context ID를 포함한 policy를 조회한다.
    getpolicyidspolicy ID값 목록을 조회한다.
    assignrole특정 Role에 Principal을 할당한다.
    unassignrole특정 Role에 Principal을 삭제한다.
    excluderole특정 Role을 모두 거부한다.
    includerole모두에게 거부된 Role을 해제한다.
    uncheckrole특정 Role을 모두 허용한다.
    checkrole모두에게 허용된 Role을 해제한다.
    assignresource특정 리소스에 Role을 할당한다.
    unassignresource특정 리스스를 삭제한다.
    excluderesource리스스 모두 거부한다.
    includeresource모두에게 거부된 리스스를 해제한다.
    uncheckresource특정 리스스를 모두 허용한다.
    checkresource모두에게 허용된 리스스를 해제한다.

    주의

    이 명령어는 매우 민감한 사안을 다루기 때문에 반드시 적절한 권한을 가진 Subject로 로그인해야 한다.

  • 권한 체크 명령어

    권한 체크 명령어는 현재 로그인된 Subject가 특정 권한을 가지고 있는지 체크할 때 사용된다. 이는 구체적으로 Subject가 특정 Role에 포함되어 있는지, 또는 Subject가 특정 Resource에 접근해서 특정 Action을 실행할 수 있는지를 체크한다.

    권한 체크 명령어의 결과는 현재 적용된 Policy에 따라 달라진다. Policy 정보는 "Policy 관리 명령어"에서 설명한 명령어들로 변경할 수 있다.

    명령어설명
    authorizerole특정 role에 대한 권한이 있는지 체크한다.
    authorizeresource특정 리소스에 대한 권한이 있는지 체크한다.

4.2.9.1. 공통 적용 사항

다음은 보안 관련 명령어에서 공통적으로 적용되는 옵션에 대한 설명이다.

  • [-domain domain_name] 옵션

    JEUS에서 보안이 적용되는 범위인 도메인을 지정한다. 기본값으로 SYSTEM_DOMAIN이 사용된다. SYSTEM_DOMAIN, DEFAULT_APPLICATION_DOMAIN, SHARED_DOMAIN이 제공되며, custom 도메인 설정도 가능하다. 도메인에 대한 자세한 내용은 "JEUS Security 안내서"를 참고한다.

    각 명령어의 옵션 설명에서 이 옵션에 대한 설명은 생략한다.

4.2.9.2. addsubject

보안 시스템에 새로운 Subject를 추가한다. 주어진 사용자명은 현재 도메인 내에서 유일해야 한다("getsubjectnames"명령어로 확인 가능). 사용자명은 일련의 호출 과정에서 특정 Subject를 참조하기 위해 사용한다. 즉 Subject 대한 ID에 해당된다.

  • 사용법

    addsubject user_name [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
  • 예제

    johan>addsubject johan
    Added Subject johan

4.2.9.3. removesubject

현재 도메인에서 이미 존재하고 있는 Subject를 삭제한다.

  • 사용법

    removesubject user_name [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
  • 예제

    johan>removesubject johan
    Removed Subject johan

4.2.9.4. getsubjectnames

현재 도메인에 로그인된 모든 사용자명(Subject명) 목록을 조회한다.

  • 사용법

    getsubjectnames [-domain domain_name]
  • 예제

    johan>getsubjectnames -domain SYSTEM_DOMAIN
    1. johan
    2. administrator
    Got 2 Subject names

4.2.9.5. getsubject

주어진 Subject에 대한 자세한 정보를 조회한다.

  • 사용법

    getsubject user_name [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
  • 예제

    johan>getsubject johan
    [SUBJECT]
    Description: No description
    Domain: SYSTEM_DOMAIN
    Main principal: Principal johan
    Principals: [Principal johan]
    Public credentials: []
    Private credentials: [{algorithm=null, password=johan}]
    Credential factories: [{password=johan}]

4.2.9.6. setpassword

주어진 Subject에 대한 패스워드를 설정한다. 패스워드는 어떤 암호화나 인코딩없는 일반 문자로 설정해야 한다.

주의

이 명령어는 해당 Subject에 이전에 설정되었던 모든 패스워드를 삭제한다.

  • 사용법

    setpassword user_name plain_password [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
    plain_password사용자 패스워드이다.
  • 예제

    johan>setpassword johan johan 
    Password set for johan

4.2.9.7. locksubject

이 명령어는 특정 Subject에 Lock을 설정한다. "SubjectLockoutValidationService"가 서버에 제대로 구성되어 있다면, 해당 Subject에 대한 모든 로그인 시도는 "unlocksubject"가 호출되기 전에 모두 실패로 끝난다. Subjcet validation은 JEUS Security 안내서”의 “5.4.3. SubjectValidationService SPI”를 참고한다.

  • 사용법

    locksubject user_name [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
  • 예제

    johan>locksubject johan
    Subject [SUBJECT]
    Description: No description
    Domain: SYSTEM_DOMAIN
    Main principal: Principal johan
    Principals: [Principal johan]
    Public credentials: []
    Private credentials: []
    Credential factories: [{}]
     has been locked out

4.2.9.8. unlocksubject

"locksubject"로 설정했던 Lock을 해제한다.

  • 사용법

    unlocksubject user_name [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
  • 예제

    johan>unlocksubject johan
    Unlocked johan

4.2.9.9. setsubjectexpiration

Subject에 대한 만료시간을 설정한다. 만료일자 파라미터 포맷은 YYYY MM DD HH MM (예: “2007 01 01 19 30”) 이다. “SubjectExpirationValidationService”가 제대로 설정되어 있다면, 만료시간 이후에 Subject로의 로그인은 모두 실패로 돌아간다. Subjcet validation은 JEUS Security 안내서”의 “5.4.3. SubjectValidationService SPI”를 참고한다.

  • 사용법

    setsubjectexpiration user_name expirytime [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
    expirytime만료시간 (YYYY MM DD HH MM)을 설정한다.
  • 예제

    johan>setsubjectexpiration johan 201001011230
    Expiration time set for Subject johan
    
    johan>getsubject johan
    [SUBJECT]
    Description: No description
    Domain: SYSTEM_DOMAIN
    Main principal: Principal johan
    Principals: [Principal johan]
    Public credentials: []
    Private credentials: [{algorithm=null, password=johan}]
    Credential factories: [{expires=201001011230},{password=johan}]

4.2.9.10. clearsubjectexpiration

“setsubjectexpiration” 명령어로 설정한 Subject의 만료시간을 해제한다.

  • 사용법

    clearsubjectexpiration  user_name [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
  • 예제

    johan>clearsubjectexpiration johan
    Expiration time removed for Subject [SUBJECT]
    Description: No description
    Domain: SYSTEM_DOMAIN
    Main principal: Principal johan
    Principals: [Principal johan]
    Public credentials: []
    Private credentials: []
    Credential factories: [{expires=201001011230}]

4.2.9.11. addprincipal

특정 Subject에 새로운 Principal을 설정한다(선택 사항). 새로운 Principal은 Subject에 대한 user name일 수도 있고, 만약 하나 이상의 Subject 에 동일한 Principal이 부여되어 있다면, Subject group명일 수도 있다.

  • 사용법

    addprincipal user_name principal_name [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
    principal_namePrincipal 이름이다.
  • 예제

    johan>addprincipal jeus johan
    Added principal johan to Subject jeus

4.2.9.12. removeprincipal

Subject에서 Principal을 삭제한다. "addprincipal"로 추가된 Principal을 삭제할 때 사용한다.

  • 사용법

    removeprincipal user_name principal_name [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
    principal_namePrincipal 이름이다.
  • 예제

    johan>removeprincipal jeus johan
    Removed principal johan from Subject jeus

4.2.9.13. setsubjectdescription

사용자명이 나타내는 Subject에 대한 설명을 추가한다. 만약 설명문 내에 공백이 포함되어 있다면 " " 안에 입력해야 한다.

  • 사용법

    setsubjectdescription user_name "description" 
                           [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
    descriptionsubject에 대한 설명이다. 공백이 있을 경우 " " 안에 입력해야 한다.
  • 예제

    johan>setsubjectdescription jeus "jeus system user"
    Set description for Subject jeus

4.2.9.14. addcredential

사용자명이 나타내는 Subject에 Custom Credential을 추가한다. 실제 CredentialFactory 인터페이스를 구현한 클래스명을 지정하는데, 이 인터페이스는 Credential을 생성할 때 사용한다.

  • 사용법

    addcredential user_name class_name
                  [-domain domain_name]
                  [-properties <name>=<value1>;<name2>=<value2>;...]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
    class_name추가할 Credential의 Factory 이름이다.
    [-properties <name>=<value1>;<name2>=<value2>;...]

    CredentialFactory에 필요한 속성을 제공할 수 있다.

    • name : CredentialFactory에서 사용하는 속성의 이름이다.

    • value : CredentialFactory에서 사용하는 속성의 값이다.

  • 예제

    johan>addcredential javajoe jeus.security.resource.DefaultPasswordFactory 
    –properties password=pw;algorithm=AES

4.2.9.15. removecredential

Subject에서 CredentialFactory를 삭제한다. 이 명령어는 “addcredential”로 설정된 Credential을 삭제한다.

  • 사용법

    removecredential  user_name class_name
                        [-domain domain_name]
                        [-properties <name>=<value1>;<name2>=<value2>...]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
    class_name추가할 Credential의 Factory 이름이다.
    [-properties <name>=<value1>;<name2>=<value2>;...]

    CredentialFactory에 필요한 속성을 제공할 수 있다.

    • name : CredentialFactory에서 사용하는 속성의 이름이다.

    • value : CredentialFactory에서 사용하는 속성의 값이다.

  • 예제

    johan>removecredential javajoe jeus.security.resource.DefaultPasswordFactory 
    –properties password=pw;algorithm=AES

4.2.9.16. userexist

현재 도메인에 해당 사용자명이 존재하는지 여부를 조회한다.

  • 사용법

    userexist user_name [-domain domain_name]
  • 파라미터

    파라미터설명
    user_name사용자명이다.
  • 예제

    johan>userexist jeus
    The User(jeus) exist in the current security domain

4.2.9.17. addGroup

보안 시스템에 새로운 그룹를 추가한다. 설정된 그룹명은 현재 도메인 내에서 유일해야 한다("getgroupnames"명령어로 확인 가능). rm그룹명은 일련의 호출 과정에서 특정 그룹를 참조 하기위해 사용한다. 즉 그룹에 대한 ID에 해당된다.

  • 사용법

    addgroup group_name [-domain domain_name]
  • 파라미터

    파라미터설명
    group_name그룹명이다.
  • 예제

    johan>addgroup admin_group
    Added Group admin_group

4.2.9.18. addusertogroup

보안 시스템에 등록된 특정 그룹에 새로운 사용자 멤버를 추가한다.

  • 사용법

    addusertogroup group_name user_name [-domain domain_name]
  • 파라미터

    파라미터설명
    group_name그룹명이다.
    user_name사용자명이다.
  • 예제

    johan>addusertogroup admin_group jeus
    Added user(jeus) to Group(admin_group)

4.2.9.19. removegroup

현재 도메인에서 이미 존재하고 있는 그룹을 삭제한다.

  • 사용법

    removegroup group_name [-domain domain_name]
  • 파라미터

    파라미터설명
    group_name그룹명이다.
  • 예제

    johan>removegroup admin_group
    Removed Group admin_group

4.2.9.20. removeuserfromgroup

현재 도메인에서 존재하는 특정 그룹의 특정 사용자 멤버를 삭제한다.

  • 사용법

    removeuserfromgroup group_name user_name [-domain domain_name]
  • 파라미터

    파라미터설명
    group_name그룹명이다.
    user_name사용자명이다.
  • 예제

    johan>removeuserfromgroup admin_group jeus
    Removed user jeus from Group admin_group

4.2.9.21. getgroupnames

현재 도메인의 모든 그룹에 대한 목록을 조회한다.

  • 사용법

    getgroupnames [-domain domain_name]
  • 예제

    johan>getgroupnames
    0. admin_group
    Got 1 Group names

4.2.9.22. getgroup

주어진 특정 그룹에 대한 자세한 정보를 조회한다.

  • 사용법

    getgroup group_name [-domain domain_name]
  • 파라미터

    파라미터설명
    group_name그룹명이다.
  • 예제

    johan>getgroup admin_group
    admin_group(members:Principal jeus)
    Got 1 Group information

4.2.9.23. getgroups

현재 도메인에 등록된 모든 그룹의 정보를 조회한다.

  • 사용법

    getgroups [-domain domain_name] 
  • 예제

    johan>getgroups
    deploy_group(members:Principal johan)
    admin_group(members:Principal jeus)
    Got 2 Group information

4.2.9.24. setgroupdescription

특정 그룹에 대한 설명을 추가한다. 만약 설명문 내에 공백이 포함되어 있다면 " "내에 입력해야 한다.

  • 사용법

    setgroupdescription group_name "description" [-domain domain_name]
  • 파라미터

    파라미터설명
    group_name그룹명이다.
    description그룹에 대한 설명이다.
  • 예제

    johan>setsubjectdescription jeus "jeus system group"
    Set description for Group admin_group

4.2.9.25. getgroupdescription

특정 그룹에 대한 설명을 조회한다.

  • 사용법

    getgroupdescription group_name [-domain domain_name]
  • 파라미터

    파라미터설명
    group_name그룹명이다.

  • 예제

    johan>getgroupdescription admin_group
    jeus system group

4.2.9.26. getmembersfromgroup

특정 그룹에 등록된 사용자와 서브 그룹 정보를 조회한다.

  • 사용법

    getmembersfromgroup group_name [-domain domain_name]
  • 파라미터

    파라미터설명
    group_name그룹명이다.
  • 예제

    johan>getmembersfromgroup admin_group
    jeus system group

4.2.9.27. ismember

특정 그룹에 해당 사용자가 등록되었는지 여부를 조회한다.

  • 사용법

    ismember group_name user_name [-domain domain_name]
  • 파라미터

    파라미터설명
    group_name그룹명이다.
    user_name사용자명이다.
  • 예제

    johan>ismember admin_group jeus
    The User(jeus) is the member of Group(admin_group)

4.2.9.28. groupexist

현 도메인에 해당 그룹명이 존재하는지 여부를 조회한다.

  • 사용법

    groupexist group_name [-domain domain_name]
  • 파라미터

    파라미터설명
    group_name그룹명이다.
  • 예제

    johan>groupexist admin_group
    The Group(admin_group) exist in the current security domain

4.2.9.29. getpolicy : policy

특정 Context ID를 포함하고 있는 Policy를 조회한다. 만약 context_id가 설정되지 않았다면, "default"로 설정된다.

  • 사용법

    getpolicy [-contextid context_id] [-domain domain_name]
  • 파라미터

    파라미터설명
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
  • 예제

    johan>getpolicy login
    ______________POLICY_______________
    
    ROLE PERMISSIONS:
      PERMISSION MAP
      --------------
    
      Excluded permissions:
        (none)
    
      Unchecked permissions:
        (none)
    
      Checked permissions:
    
    
    RESOURCE PERMISSIONS:
    Context id: login
      PERMISSION MAP
      --------------
    
      Excluded permissions:
        (none)
    
      Unchecked permissions:
        (javax.security.jacc.WebResourcePermission /* !DELETE,GET,POST,PUT)
        (javax.security.jacc.WebUserDataPermission /*)
    
      Checked permissions:
        Permission owner:
        Role ctsUser
        Permissions of owner:
        (javax.security.jacc.WebRoleRefPermission index.jsp ctsUser)
        (javax.security.jacc.WebResourcePermission /* DELETE,GET,POST,PUT)

4.2.9.30. getpolicyids

보안 시스템에서 설정되어 있는 ID 목록을 조회한다.

  • 사용법

    getpolicyids [-domain domain_name]
  • 예제

    johan>getpolicy 
    1. login
    2. default
    Got 2 Policy context ids

4.2.9.31. assignrole

특정 Role을 Principal에 할당한다.

[-classname]으로 설정한 클래스는 java.security.Permission 추상 클래스를 확장한 Java 클래스여야 하며 최소한 하나의 String 타입의 "role"을 받아 들이는 생성자를 가지고 있어야 한다.

[-actions] 파라미터값이 주어진 경우 [-classname]으로 설정한 클래스에 두 번째 생성자 파라미터로 "actions"를 전달할 때 사용한다. 디폴트 클래스는 jeus.security.resource.RolePermission이고, 이 클래스는 생성자에서 "actions"가 아닌 "role"만을 받아 들인다. contextid는 "default"이외의 다른 context를 지정할 때 사용한다.

  • 사용법

    assignrole principal_name role_name [-actions actions_for_role]
              [-contextid context_id][-classname permission_class_name]
              [-domain domain_name]
  • 파라미터

    파라미터설명
    principal_namePrincipal 이름이다.
    role_nameRole 이름이다.
    [-actions actions_for_role]Role에 부여된 action들의 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>assignrole jeus deploy -contextid login -classname jeus.security.resource.
    RolePermission
    Assigned role "deploy" to Principal "jeus"

4.2.9.32. unassignrole

특정 role에 Principal을 삭제한다.

  • 사용법

    unassignrole principal_name role_name [-actions actions_for_role]
                 [-contextid context_id][-classname permission_class_name]
                 [-domain domain_name]
  • 파라미터

    파라미터설명
    principal_namePrincipal 이름이다.
    role_nameRole 이름이다.
    [-actions actions_for_role]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>unassignrole jeus deploy -contextid login -classname jeus.security.resourc
    e.RolePermission
    Unassigned role "deploy" from Principal "jeus"

4.2.9.33. excluderole

Role을 배제한다. 즉, 해당 Role은 모두에게 거부된다.

  • 사용법

    excluderole role_name [-actions comma_separated_list_of_actions]
                [-contextid context_id][-classname permission_class_name]
                [-domain domain_name]
  • 파라미터

    파라미터설명
    role_nameRole 이름이다.
    [-actions comma_separated_list_of_actions]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>excluderole deploy
    Excluded role "deploy"

4.2.9.34. includerole

"excluderole" 설정에서 모두에게 거부된 Role을 해제한다.

  • 사용법

    includerole role_name [-actions comma_separated_list_of_actions] 
                [-contextid context_id] [-classname permission_class_name]
                [-domain domain_name]
  • 파라미터

    파라미터설명
    role_nameRole 이름이다.
    [-actions comma_separated_list_of_actions]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>includerole deploy
    Included role "deploy"

4.2.9.35. uncheckrole

Role을 체크하지 않는다. 해당 Role은 모두에게 허용된다.

  • 사용법

    uncheckrole role_name [-actions comma_separated_list_of_actions]
                [-contextid context_id][-classname permission_class_name]
                [-domain domain_name]
  • 파라미터

    파라미터설명
    role_nameRole 이름이다.
    [-actions comma_separated_list_of_actions]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>uncluderole deploy
    Unchecked role "deploy"

4.2.9.36. checkrole

"uncheckrole" 설정에서 모두에게 허용된 role을 해제한다.

  • 사용법

    checkrole role_name [-actions comma_separated_list_of_actions]
             [-contextid context_id][-classname permission_class_name]
             [-domain domain_name]
  • 파라미터

    파라미터설명
    role_nameRole 이름이다.
    [-actions comma_separated_list_of_actions]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>checkrole deploy
    Checked role "deploy"

4.2.9.37. assignresource

Role에 특정 리소스와 Action을 할당한다.

리스스 이름은 보통 "jeus.server"와 같은 리스스를 나타내는 Java 클래스명이다. 그리고, actions는 리스스에 대한 Action 목록이며, 각 Action은 공백으로 구분된다.

예를 들어, jeus.serverresource의 경우 "boot", "down"과 같은 Action이 있다. Resource Permission에 대한 자세한 정보는 jeus.security.resource.ResourcePermission 클래스를 참고한다. JEUS가 어떤 Resource Permission을 체크하는지에 관한 정보는 JEUS Security 안내서”의 “Appendix B. JEUS Server Permissions”를 참고한다.

[-classname]으로 설정한 클래스는 java.security.Permission 추상 클래스를 확장한 Java 클래스여야 하며 최소한 하나의 String 타입의 "resource"을 받아 들이는 생성자를 가지고 있어야 한다. [-actions] 파라미터를 설정한 경우 [-classname]으로 설정한 클래스에 두 번째 생성자 파라미터로 "actions"를 전달할 때 사용한다. 디폴트 클래스명은 jeus.security.resource.ResourcePermission이고, 이는 "resouce"와 "actions"를 생성자 파라미터로 차례로 받아 들인다. contextid는 "default" 이외의 컨텍스트를 지정할 때 사용한다.

  • 사용법

    assignresource role_name resource_name [-actions comma_separated_list_of_actions]
                   [-contextid context_id][-classname permission_class_name]
                   [-domain domain_name]
  • 파라미터

    파라미터설명
    role_nameRole 이름이다.
    resource_name리스스 이름이다.
    [-actions comma_separated_list_of_actions]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>assignresource deploy ear_deploy
    Assigned resource "ear_deploy" to role "deploy"

4.2.9.38. unassignresource

Role로부터 리스스를 삭제할 때 사용한다. Role은 더 이상 해당 리소스에 접근이 불가능하다.

  • 사용법

    unassignresource role_name resource_name 
                      [-actions comma_separated_list_of_actions]
                      [-contextid context_id][-classname permission_class_name]
                      [-domain domain_name]
  • 파라미터

    파라미터설명
    role_nameRole 이름이다.
    resource_name리스스 이름이다.
    [-actions comma_separated_list_of_actions]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>unassignresource deploy ear_deploy
    Unassigned resource "ear_deploy" from role "deploy"

4.2.9.39. excluderesource

리소스를 배제한다. 즉, 리소스는 모두에게 거부된다.

  • 사용법

    excluderesource resource_name [-actions comma_separated_list_of_actions]
                    [-contextid context_id][-classname permission_class_name]
                    [-domain domain_name]
  • 파라미터

    파라미터설명
    resource_name리스스 이름이다.
    [-actions comma_separated_list_of_actions]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>excluderesource ear_deploy
    Excluded resource "ear_deploy"

4.2.9.40. includeresource

“excluderesource”로 설정에서 모두에게 거부된 리소스를 해제한다.

  • 사용법

    includeresource resource_name [-actions comma_separated_list_of_actions]
                    [-contextid context_id][-classname permission_class_name]
                    [-domain domain_name]
  • 파라미터

    파라미터설명
    resource_name리스스 이름이다.
    [-actions comma_separated_list_of_actions]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>includeresource ear_deploy
    Included resource "ear_deploy"

4.2.9.41. uncheckresource

리스스 체크를 해제한다. 즉, 리소스는 누구에게나 허용된다.

  • 사용법

    uncheckresource resource_name [-actions comma_separated_list_of_actions]
                    [-contextid context_id][-classname permission_class_name]
                    [-domain domain_name]
  • 파라미터

    파라미터설명
    resource_name리스스 이름이다.
    [-actions comma_separated_list_of_actions]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>uncheckresource ear_deploy
    Unchecked resource "ear_deploy"

4.2.9.42. checkresource

“uncheckresource”로 설정되어 모두에게 허용된 리소스를 해제한다.

  • 사용법

    checkresource resource_name [-actions comma_separated_list_of_actions]
                  [-contextid context_id][-classname permission_class_name]
                  [-domain domain_name]
  • 파라미터

    파라미터설명
    resource_name리스스 이름이다.
    [-actions comma_separated_list_of_actions]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
    [-classname permission_class_name]Permission 클래스 이름이다.
  • 예제

    johan>checkresource ear_deploy
    Checked resource "ear_deploy"

4.2.9.43. authorizerole

현재 로그인된 Subject 가 특정 Role에 포함되어 있는지 체크한다. -contextid는 선택 사항으로 "default"이외의 Context를 지정하고자할 때 사용한다.

  • 사용법

    authorizerole role_name 
                    [-contextid context_id] [-domain domain_name]
  • 파라미터

    파라미터설명
    role_nameRole 이름이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
  • 예제

    johan>authorizerole deploy login
    Role granted for current Subject

4.2.9.44. authorizeresource

현재 로그인된 Subject가 특정 리소스와 Action에 권한을 있는지 여부를 체크한다. -contextid는 선택 사항으로 "default"이외의 컨텍스트를 지정하고자 할 때 사용한다.

  • 사용법

    authorizeresource resource_name [-actions actions] 
                       [-contextid context_id] [-domain domain_name] 
  • 파라미터

    파라미터설명
    resource_name리소스 이름이다.
    [-actions actions]Role에 부여된 action들 목록이다.
    [-contextid context_id]Policy를 구분하는 컨텍스트 이름이다.
  • 예제

    johan>authorizerresource jeus.security.spi.AuthenticationRepositoryService getsu
    bject
    Resource granted for current Subject

4.3. jmsadmin

본 절에서는 JEUS의 JMS 엔진을 관리하기 위한 콘솔 툴인 jmsadmin의 사용법을 설명한다.

참고

명령어 설명 규칙은 jeusadmin 콘솔 툴과 동일하므로 “제2장 명령어 설명 규칙”를 참조한다.

4.3.1. 기동 및 종료 명령어

jmsadmin의 기동과 종료 명령어에 대해 설명한다.

명령어설명
jmsadminjmsadmin 툴을 실행한다.
exitjmsadmin을 종료하고 명령 프롬프트로 전환한다.

4.3.1.1. jmsadmin

jmsadmin 툴을 실행한다. 이 명령 스크립트는 JEUS_HOME\bin\에 위치한다.

  • 사용법

    jmsadmin [-verbose] engine_container_name
             [-U<username>] [-P<password>] [-f<filename>]
             [command] [command_options]
  • 파라미터

    파라미터설명
    [-verbose]작업 진행 상태를 자세히 출력한다.
    engine_container_namejmsadmin이 접속할 JMS 엔진을 포함하고 있는 엔진 컨테이너의 이름이다.
    [-U<username>] [-P<password>]인증 프롬프트를 거치지 않고 바로 로그인할 때 사용한다.
    [-f<filename>]

    암호화된 로그인 정보를 가진 파일 이름을 지정하여 인증 프롬프트를 거치지 않고 바로 로그인할 때 사용한다.

    -U<username> -P<password> 파라미터와 동일한 효과를 가진다.

    [command]

    jmsadmin의 명령어를 1번 실행하고 jmsadmin을 종료한다.

    -U<username> -P<password> 옵션이나 -f<filename> 옵션과 같이 사용한 경우에만 동작한다.

    [command_options]command 옵션에 해당하는 명령어에 대한 옵션을 설정한다.
  • 예제

    c:\jeus>jmsadmin johan_container1
    Login name>jeus
    Password>jeus -> 실제로 Command Line에는 입력한 패스워드가 보이지 않는다.
    johan_container1>exit
    
    -U<username> -P<password> 옵션을 사용하여 바로 로그인 하는 경우
    c:\jeus>jmsadmin -verbose johan_container1 -Ujeus -Pjeus
    JMS Engine Administration
    johan_container1>

4.3.1.2. exit

jmsadmin을 종료하고 명령 프롬프트로 전환한다.

  • 사용법

    exit(quit/q)
  • 예제

    johan_container1>exit
    c:\jeus>

4.3.2. 공통 명령어

다음은 공통 명령어에 대한 설명이다.

명령어설명
help명령어에 대한 도움말을 출력한다.
p바로 이전에 실행했던 명령어를 다시 실행한다.

4.3.2.1. help

명령어에 대한 도움말을 출력한다. 명령어의 설명, 이름, Alias, 사용법, 파라미터 설명이 포함된다.

아무런 옵션 없이 사용하면 help 명령어에 대한 설명과 명령어의 목록만 출력한다.

  • 사용법

    help(h) [-l] [-a] [-g group_name] [command]
  • 파라미터

    파라미터설명
    [-l]모든 명령어에 대한 간단한 설명을 출력한다.
    [-a]모든 명령어에 대한 자세한 도움말을 출력한다.
    [-g group_name]

    지정한 명령어 그룹(group_name)에 포함된 명령어의 도움말을 출력한다.

    사용 가능한 명령어 그룹은 다음과 같다.

    • JMSAdmin: JMSAdmin

    • gen: General

    [command]도움말을 출력할 명령어의 이름이다.
  • 예제

    johan_container1>help
     type 'help <command>' for the detailed help of each command.
     Usage:
           help [-l] [-a] [-g group_name] [command]
    
           arguments:
             -l: print simple help for each command
             -a: print detailed help for each command
             -g group_name: print help for commands of the given group
                 defined values:
                     JMSAdmin: JMSAdmin Commands
                     gen: General
             command: print help for command
    
    
    [ JMSAdmin Commands ]__________________________________________________________
     commit     conf       confall    createconf createdest dest    destall
     durable    durableall entry      entryall   mbeanlist  ptall   removeconf
     removedest restat     rollback   sdb        server     stat
    
    [ General ]____________________________________________________________________
     exit          help          p             setProperty   unsetProperty
    
    • [-l] 옵션과 함께 사용하는 경우

      johan_container1>help -l
      JMSAdmin commands help
      
      [ JMSAdmin Commands ]__________________________________________________________
       commit       commit force specified transaction
       conf         prints information of the specified connection factory
       confall      lists all connection factory names
       createconf   create connection factory
       createdest   create destination
       dest         print destination information
       destall      lists all destinations
       durable      print destination information
       durableall   lists all durable subscriptions
       entry        prints information about specific entry or destroy specific
                    entry
       entryall     lists all entries
       mbeanlist    list mbeans
       ptall        lists pending trasactions
       removeconf   remove connection factory
       removedest   remove destination
       restat       Reinitialize destination statistics
       rollback     rollback force specified transaction
       sdb          debug storage
       server       print information about connected server
       stat         print destination statistics repeatedly
      
      [ General ]____________________________________________________________________
       exit(quit/q)    Exit console
       help(h)         print help message
       p(!)            excute the previous command
       setProperty(s)   set property
       unsetProperty(us)   unset property
    • [-a] 옵션과 함께 사용하는 경우

      johan_container1>help -a
      JMSAdmin commands help
      
      [ JMSAdmin Commands ]__________________________________________________________
       conf       prints information of the specified connection factory
      
       Usage:
             conf conf_name
      
             arguments:
               conf_name: connection factory name
      
       confall       lists all connection factory names
      
       Usage:
             confall
      
       createconf   create connection factory
      
       Usage:
             createconf ([-q]|[-t]) [-per] conf_name export_name [maxThread]
                        [clientID]
      
             arguments:
               -q: create queue connection factory
               -t: create topic connection factory
               -per: persist to JMSMain.xml
               conf_name: connection factory name
               export_name: export name for new connection factory
               maxThread: maximum thread number for the connection factory
                   default: 10
               clientID: clientID for topic connection factory
      
       createdest   create destination
      
       Usage:
             createdest ([-q]|[-t]) [-per] dest_name export_name
      
             arguments:
               -q: create queue
               -t: create topic
               -per: persist to JMSMain.xml
               dest_name: destination name
               export_name: export name for new destination
      . . .
    • 특정 명령어와 함께 사용하는 경우

      johan_container1>help createdest
       createdest   create destination
      
       Usage:
             createdest ([-q]|[-t]) [-per] dest_name export_name
      
             arguments:
               -q: create queue
               -t: create topic
               -per: persist to JMSMain.xml
               dest_name: destination name
               export_name: export name for new destination

4.3.2.2. p

바로 이전에 실행했던 명령어를 다시 실행한다.

  • 사용법

    p(!)
  • 예제

    johan_container1>confall
      . . .
    johan_container1>p
      ConnectionFactory
      QueueConnectionFactory
      TopicConnectionFactory
      XAConnectionFactory
      XAQueueConnectionFactory
      XATopicConnectionFactory

4.3.3. JMS 엔진 명령어

JMS 엔진 명령어는 다음과 같다.

명령어설명
commitPending 트랜잭션을 강제로 Commit한다.
confConnection Factory 정보를 조회한다.
confallConnection Factory 목록을 조회한다.
createconf새로운 Connection Factory를 추가한다.
createdest새로운 Destination을 추가한다.
estDestination을 관리한다.
destallDestination의 목록을 조회한다.
durableDurable Subscription 정보를 조회한다.
durableallDurable Subscription의 목록을 조회한다.
entry클라이언트를 관리한다.
entryall클라이언트의 목록을 조회한다.
mbeanlistMBean의 목록을 조회한다.
ptallpending상태의 트랜잭션을 조회한다.
removeconfConnection Factory를 제거한다.
removedestDestination을 제거한다.
restatDestination의 통계 정보를 초기화한다.
rollbackPending 트랜잭션을 강제로 Rollback한다.
serverJMS 엔진의 정보를 조회한다.
statDestination의 통계 정보를 조회한다.
switchoverActive 서버를 복원한다.

4.3.3.1. commit

Pending 트랜잭션을 강제로 Commit한다.

  • 사용법

    commit id
  • 파라미터

    파라미터설명
    id강제로 Commit할 트랜잭션의 ID이다. ID는 ptall 명령으로 확인할 수 있다.
  • 예제

    johan_container1>commit 1024
    
    1024 is commited.

4.3.3.2. conf

Connection Factory의 정보를 조회한다.

  • 사용법

    conf [-i interval] [-k number] [-o file_name] conf_name
  • 파라미터

    파라미터설명
    [-i interval]

    명령어를 반복하여 수행할 간격이다. (단위: 초)

    명령어 반복을 위해 간격만을 옵션으로 준 경우 무한히 반복하여 수행한다.

    [-k number]명령어를 반복하여 수행할 횟수이다. 명령어 반복을 위해 횟수만을 옵션으로 준 경우 반복되어 수행되지 않는다.
    [-o file_name]명령어 수행 결과를 저장할 파일의 이름이다. 상대경로로 주어진다면 기본 경로는 JEUS_HOME/logs/jms/이다.
    conf_name정보를 출력할 Connection Factory의 이름이다. confall 명령으로 확인한 이름을 입력한다.
  • 예제

    johan_container1>conf QueueConnectionFactory
    
                            CONNECTION FACTORY INFORMATIONS
    
     ===============================================================================
      FACTORY NAME            : QueueConnectionFactory
      EXPORT NAME             : jms/QueueConnectionFactory
      FACTORY NAME            : queue
      CLIENT ID               : not-set
      MAX THREAD              : 300
      BROKER SELECTION POLICY : round-robin
      ADDRESSES               : [192.168.0.1(null)]
                              : [192.168.0.2(null)]
      STANDBY ADDRESSES       : [192.168.0.1(null)] -> [192.168.0.3(null)]
                                [192.168.0.3(null)] -> [192.168.0.1(null)]
     ===============================================================================

4.3.3.3. confall

JMS 엔진에 등록되어 있는 모든 Connection Factory의 목록을 조회한다.

  • 사용법

    confall [-i interval] [-k number] [-o file_name]
  • 파라미터

    파라미터설명
    [-i interval]

    명령어를 반복하여 수행할 간격이다. (단위: 초)

    명령어 반복을 위해 간격만을 옵션으로 준 경우 무한히 반복하여 수행한다.

    [-k number]명령어를 반복하여 수행할 횟수이다. 명령어 반복을 위해 횟수만을 옵션으로 준 경우 반복되어 수행되지 않는다.
    [-o file_name]명령어 수행 결과를 저장할 파일의 이름이다. 상대경로로 주어진다면 기본 경로는 JEUS_HOME/logs/jms/이다.
  • 예제

    johan_container1>confall
      ConnectionFactory
      QueueConnectionFactory
      TopicConnectionFactory
      XAConnectionFactory
      XAQueueConnectionFactory
      XATopicConnectionFactory

4.3.3.4. createconf

JMS 엔진에 새로운 Connection Factory를 추가한다. XA를 지원하지 않는 Queue 또는 Topic Connection Factory를 생성할 수 있다.

  • 사용법

    createconf ([-q]|[-t]) [-per] conf_name export_name [maxThread] [clientID]
  • 파라미터

    파라미터설명
    [-q]Queue Connection Factory를 생성한다.
    [-t]Topic Connection Factory를 생성한다.
    [-per]새로운 Connection Factory를 추가한 뒤 JMSMain.xml 설정 파일에 반영한다.
    conf_name새로 생성할 Connection Factory의 이름을 입력한다. 이 이름은 JMS 엔진 내에서 다른 Connection Factory와 중복되지 않도록 주의한다.
    export_name새로 생성할 Connection Factory의 JNDI 이름을 입력한다. 이 이름은 JEUS JNDI 서버 내에서 다른 객체와 중복되지 않도록 주의한다.
    [maxThread]클라이언트 라이브러리 내에서 이 Connection Factory로부터 만든 커넥션들을 통해 JMS 엔진과 통신할 때 필요한 스레드들의 Thread Pool의 최대 크기를 지정한다. (기본값: 10)
    [clientID]Connection Factory로부터 생성한 커넥션에 부여할 클라이언트 ID를 입력한다.
  • 예제

    johan_container1>createconf -q -per MyQueueCF jms/MyQueueCF
    johan_container1>confall
      ConnectionFactory
      MyQueueCF
      . . .

4.3.3.5. createdest

JMS 엔진에 새로운 Destination을 추가한다.

  • 사용법

    createdest ([-q]|[-t]) [-per] dest_name export_name
  • 파라미터

    파라미터설명
    [-q]Queue를 생성한다.
    [-t]Topic을 생성한다.
    [-per]새로운 Destination을 추가한 뒤 JMSMain.xml 설정 파일에 반영한다.
    dest_name새로 생성할 Destination의 이름을 입력한다. 이 이름은 JMS 엔진 내에서 다른 Destination과 중복되지 않도록 주의한다.
    export_name새로 생성할 Destination의 JNDI 이름을 입력한다. 이 이름은 JEUS JNDI 서버 내에서 다른 객체와 중복되지 않도록 주의한다.
  • 예제

    johan_container1>createdest -q -per MyQueue jms/MyQueue
    johan_container1>destall
      ExamplesQueue
      ExamplesTopic
      MyQueue
      . . .

4.3.3.6. dest

Destination의 정보를 출력하거나 Destination의 메시지 및 Pending 메시지를 관리한다.

  • 사용법

    dest [-m] [-p] [-n] [-i interval] [-k number] [-o file_name] 
          ([-r]|[-ra]|[-q]|[-qa]) dest_name [selector_or_msgID]
  • 파라미터

    파라미터설명
    [-m]현재 Destination에 남아있는 메시지들의 메시지 ID이다. 메시지 유형, 도착시간 등의 상세 정보를 함께 출력한다.
    [-p]현재 Destination에 남아있는 Pending 메시지들의 메시지 ID이다. 메시지 유형, 도착시간 등의 상세 정보를 함께 출력한다.
    [-n][-r] 또는 [-ra] 옵션과 함께 사용할 때, 다시 등록할 메시지들을 클라이언트에 전송할 때 재전송 된 것으로 표시하지 않도록 한다.
    [-i interval]명령어를 반복하여 수행할 간격이다. 단위는 초이다. 명령어 반복을 위해 간격만을 옵션으로 준 경우 무한히 반복하여 수행한다.
    [-k number]명령어를 반복하여 수행할 횟수이다. 명령어 반복을 위해 횟수만을 옵션으로 준 경우 반복되어 수행되지 않는다.
    [-o file_name]명령어 수행 결과를 저장할 파일의 이름이다. 상대경로로 주어진다면 기본 경로는 JEUS_HOME/logs/jms/이다.
    [-r]특정 메시지를 Destination으로부터 삭제한다. selector_or_msgID 파라미터로 삭제할 메시지의 메시지 ID를 지정해야 한다. Queue인 경우에만 동작한다.
    [-ra]Destination의 모든 메시지를 삭제한다. Queue에서만 동작한다.
    [-q]특정 Pending 메시지를 다시 Destination에 등록한다. selector_or_msgID 파라미터로 메시지 ID를 지정해야 한다. Queue인 경우에만 동작한다.
    [-qa]모든 Pending 메시지를 다시 Destination에 등록한다. Queue에서만 동작한다.
    dest_name명령의 대상이 되는 Destination의 이름을 지정한다.
    [selector_or_msgID]

    메시지 셀렉터 또는 메시지 ID를 지정한다.

    • [-m] 또는 [-p] 옵션과 함께 사용한 경우: 상세 정보를 출력할 메시지들을 필터링하기 위한 메시지 셀렉터를 지정한다.

    • [-r] 또는 [-q] 옵션과 함께 사용한 경우: 삭제 또는 다시 등록할 메시지의 메시지 ID를 지정한다.

  • 예제

    johan_container1>dest -m ExamplesQueue
      Type: Queue
      Destination name: ExamplesQueue
      Export name: ExamplesQueue
      Consumers count: 0
      Processed messages count: 2
      Delivered messages count: 0
      Expired messages count: 0
      Memory usage (current): 0k
      Memory usage (high): 0k
      Remaining messages count: 2
      	Message:
      	Message ID: ID:0:81745800001:2:2
      	Message Type: Text
      	Delivered: false
      	Create time: 2013.10.14 20:16:31
      	Message ID: ID:0:81745800001:2:3
      	Message Type: Text
      	Delivered: false
      	Create time: 2013.10.14 20:16:31
      Remaining pending messages count: 0
      Waiting ack messages count: 0
    
    johan_container1>dest -r ExamplesQueue ID:0:81745800001:2:2
    
    johan_container1>dest ExamplesQueue
      Type: Queue
      Destination name: ExamplesQueue
      Export name: ExamplesQueue
      Consumers count: 0
      Processed messages count: 0
      Delivered messages count: 0
      Expired messages count: 0
      Memory usage (current): 0k
      Memory usage (high): 0k
      Remaining messages count: 0
      Remaining pending messages count: 0
      Waiting ack messages count: 0

4.3.3.7. destall

JMS 엔진에 등록되어 있는 모든 Destination의 목록을 조회한다.

  • 사용법

    destall [-i interval] [-k number] [-o file_name]
  • 파라미터

    파라미터설명
    [-i interval]

    명령어를 반복하여 수행할 간격이다. (단위: 초)

    명령어 반복을 위해 간격만을 옵션으로 준 경우 무한히 반복하여 수행한다.

    [-k number]명령어를 반복하여 수행할 횟수이다. 명령어 반복을 위해 횟수만을 옵션으로 준 경우 반복되어 수행되지 않는다.
    [-o file_name]명령어 수행 결과를 저장할 파일의 이름이다. 상대경로로 주어진다면 기본 경로는 JEUS_HOME/logs/jms/이다.
  • 예제

    johan_container1>destall
      ExamplesQueue
      ExamplesTopic
      Queue1
      Queue2
      Queue3
      Queue4
      Topic1
      Topic2
      Topic3
      Topic4
      JEUSMQ_DLQ

4.3.3.8. durable

Durable Subscription의 정보를 조회한다.

  • 사용법

    durable [-i interval] [-k number] [-o file_name]
              durable_name [-m] [selector] [-ra] [-u]
  • 파라미터

    파라미터설명
    [-i interval]

    명령어를 반복하여 수행할 간격이다. (단위: 초)

    명령어 반복을 위해 간격만을 옵션으로 준 경우 무한히 반복하여 수행한다.

    [-k number]명령어를 반복하여 수행할 횟수이다. 명령어 반복을 위해 횟수만을 옵션으로 준 경우 반복되어 수행되지 않는다.
    [-o file_name]명령어 수행 결과를 저장할 파일의 이름이다. 상대경로로 주어진다면 기본 경로는 JEUS_HOME/logs/jms/이다.
    durable_name정보를 조회할 Durable Subscription의 Durable Subscription ID를 지정한다. durableall 명령으로 확인할 수 있는 ID로 지정해야 한다.
    [-m]

    해당 Durable Subscription에 예약되어 있는 메시지들의 메시지 ID이다.

    메시지 유형, 도착시간과 같은 상세 정보를 추가로 출력한다.

    [-ra]durable subscription의 모든 메시지들을 삭제한다.
    [-u]durable subscription이 in-active이면 unsubscribe한다.
    [selector][-m] 옵션과 함께 사용했을 때, 상세 정보를 출력할 메시지들을 필터링하기 위한 메시지 셀렉터를 지정한다.
  • 예제

    johan_container1>durable client_id1_subscription1
    ====<<Durable Subscription Info>>====
      Durable Subsciption:
      Durable Name:subscription1
      ClientID:client_id1
      Selector:null
      Remaining messages count:3
      	Message:
      	Message ID: ID:0:81749600001:2:2
      	Message Type: Empty
      	Delivered: false
      	Create time: 2013.10.14 20:21:35
      	Message ID: ID:0:81749600003:2:2
      	Message Type: Empty
      	Delivered: false
      	Create time: 2013.10.14 20:22:16
      	Message ID: ID:0:81749600003:2:3
      	Message Type: Empty
      	Delivered: false
      	Create time: 2013.10.14 20:22:17

4.3.3.9. durableall

현재 JMS 엔진에 등록되어 있는 모든 Durable Subscription들의 Durable Subscription ID를 조회한다.

  • 사용법

    durableall [-i interval] [-k number] [-o file_name]
  • 파라미터

    파라미터설명
    [-i interval]

    명령어를 반복하여 수행할 간격이다. (단위: 초)

    명령어 반복을 위해 간격만을 옵션으로 준 경우 무한히 반복하여 수행한다.

    [-k number]명령어를 반복하여 수행할 횟수이다. 명령어 반복을 위해 횟수만을 옵션으로 준 경우 반복되어 수행되지 않는다.
    [-o file_name]명령어 수행 결과를 저장할 파일의 이름이다. 상대경로로 주어진다면 기본 경로는 JEUS_HOME/logs/jms/이다.
  • 예제

    johan_container1>durableall
    ====<<Durable Subscription>>====
      client_id1_subscription1

4.3.3.10. entry

접속한 클라이언트의 정보를 출력하거나 클라이언트와의 연결을 강제로 종료한다.

  • 사용법

    entry [-i interval] [-k number] [-o file_name] entryID ([-c]|[-s]|[-e]|[-d])
  • 파라미터

    파라미터설명
    [-i interval]

    명령어를 반복하여 수행할 간격이다. (단위: 초)

    명령어 반복을 위해 간격만을 옵션으로 준 경우 무한히 반복하여 수행한다.

    [-k number]명령어를 반복하여 수행할 횟수이다. 명령어 반복을 위해 횟수만을 옵션으로 준 경우 반복되어 수행되지 않는다.
    [-o file_name]명령어 수행 결과를 저장할 파일의 이름이다. 상대경로로 주어진다면 기본 경로는 JEUS_HOME/logs/jms/이다.
    entryID

    정보를 출력하거나 접속을 종료할 클라이언트를 지정한다.

    entryall 명령으로 확인한 ID에서 "JMSClient-"를 제외한 ID를 설정해야 한다.

    [-c]커넥션 정보를 추가로 출력한다.
    [-s]커넥션 및 세션 정보를 추가로 출력한다.
    [-e]커넥션, 세션 및 메시지 수신자 정보를 추가로 출력한다.
    [-d]해당 클라이언트와의 연결을 강제로 종료한다.
  • 예제

    johan_container1>entryall
    ====<<Entry>>====
      JMSClient-RE81749600005
      JMSClient-RE81749600006
      JMSClient-RE81749600007
    -----------------
    Num of entries: 3
    johan_container1>entry RE81749600006 -e
      Entry:
      Name:JMSClient-RE81749600006
      Remote Address:/127.0.0.1:59403
      Connection count:1
    	  Connection:
      	  Name:JMSClient-RE81749600006.C2
      	  Session count:1
    		  Session:
    		  Name:JMSClient-RE81749600006.C2.S2
    		  Durable Subscriber Count:0
    			  Consumer:
    			  Consumer does not exist
    
    johan_container1>entry RE81749600006 -d
    johan_container1>entryall
    ====<<Entry>>====
      JMSClient-RE81749600005
      JMSClient-RE81749600007
    -----------------
    Num of entries: 2

4.3.3.11. entryall

현재 접속해 있는 모든 클라이언트의 목록을 조회한다.

  • 사용법

    entryall [-d] [-i interval] [-k number] [-o file_name]
  • 파라미터

    파라미터설명
    [-d]각 클라이언트의 접속시각, IP 주소를 추가로 조회한다.
    [-i interval]

    명령어를 반복하여 수행할 간격이다. (단위: 초)

    명령어 반복을 위해 간격만을 옵션으로 준 경우 무한히 반복하여 수행한다.

    [-k number]명령어를 반복하여 수행할 횟수이다. 명령어 반복을 위해 횟수만을 옵션으로 준 경우 반복되어 수행되지 않는다.
    [-o file_name]명령어 수행 결과를 저장할 파일의 이름이다. 상대경로로 주어진다면 기본 경로는 JEUS_HOME/logs/jms/이다.
  • 예제

    johan_container1>entryall -d
    =========================================================================================================
    Detailed information for all entries
    ---------------------------------------------------------------------------------------------------------
    Entry name                Connected time          Connection Count  Session Count  IP address
    ---------------------------------------------------------------------------------------------------------
    JMSClient-RE81749600007   2013.10.14 20:26:03.634                1              1  /127.0.0.1:59411
    JMSClient-RE81749600005   2013.10.14 20:25:44.974                1              1  /127.0.0.1:59390
    ---------------------------------------------------------------------------------------------------------
    Num of entries: 2

4.3.3.12. mbeanlist

JEUS에 존재하는 MBean들의 목록을 조회한다.

  • 사용법

    mbeanlist [objectname]
  • 파라미터

    파라미터설명
    [objectname]

    주어진 Object 이름으로 MBean을 Query하여 목록을 조회한다.

    지정하지 않으면 모든 MBean 목록을 조회한다.

  • 예제

    johan_container1>mbeanlist *:jeusType=JMSDestinationResource,*
    JEUS:j2eeType=JeusService,jeusType=JMSDestinationResource,JMXManager=johan,JeusM
    anager=johan,J2EEServer=johan_container1,JMSResource=johan_jms_engine1,name=Exam
    plesQueue
    JEUS:j2eeType=JeusService,jeusType=JMSDestinationResource,JMXManager=johan,JeusM
    anager=johan,J2EEServer=johan_container1,JMSResource=johan_jms_engine1,name=Exam
    plesTopic
    JEUS:j2eeType=JeusService,jeusType=JMSDestinationResource,JMXManager=johan,JeusM
    anager=johan,J2EEServer=johan_container1,JMSResource=johan_jms_engine1,name=JEUS
    MQ_DLQ
    JEUS:j2eeType=JeusService,jeusType=JMSDestinationResource,JMXManager=johan,JeusM
    anager=johan,J2EEServer=johan_container1,JMSResource=johan_jms_engine1,name=jms/
    QUEUE1
    JEUS:j2eeType=JeusService,jeusType=JMSDestinationResource,JMXManager=johan,JeusM
    anager=johan,J2EEServer=johan_container1,JMSResource=johan_jms_engine1,name=jms/
    QUEUE2
    JEUS:j2eeType=JeusService,jeusType=JMSDestinationResource,JMXManager=johan,JeusM
    anager=johan,J2EEServer=johan_container1,JMSResource=johan_jms_engine1,name=jms/
    QUEUE3
    JEUS:j2eeType=JeusService,jeusType=JMSDestinationResource,JMXManager=johan,JeusM
    anager=johan,J2EEServer=johan_container1,JMSResource=johan_jms_engine1,name=jms/
    QUEUE4
    JEUS:j2eeType=JeusService,jeusType=JMSDestinationResource,JMXManager=johan,JeusM
    anager=johan,J2EEServer=johan_container1,JMSResource=johan_jms_engine1,name=jms/
    TOPIC1
    JEUS:j2eeType=JeusService,jeusType=JMSDestinationResource,JMXManager=johan,JeusM
    anager=johan,J2EEServer=johan_container1,JMSResource=johan_jms_engine1,name=jms/
    TOPIC2
    JEUS:j2eeType=JeusService,jeusType=JMSDestinationResource,JMXManager=johan,JeusM
    anager=johan,J2EEServer=johan_container1,JMSResource=johan_jms_engine1,name=jms/
    TOPIC3
    JEUS:j2eeType=JeusService,jeusType=JMSDestinationResource,JMXManager=johan,JeusM
    anager=johan,J2EEServer=johan_container1,JMSResource=johan_jms_engine1,name=jms/
    TOPIC4

4.3.3.13. ptall

pending 상태의 트랜잭션 목록들을 조회한다.

  • 사용법

    ptall [-i interval] [-k number] [-o file_name]
  • 파라미터

    파라미터설명
    [-i interval]

    명령어를 반복하여 수행할 간격이다. (단위: 초)

    명령어 반복을 위해 간격만을 옵션으로 준 경우 무한히 반복하여 수행한다.

    [-k number]명령어를 반복하여 수행할 횟수이다. 명령어 반복을 위해 횟수만을 옵션으로 준 경우 반복되어 수행되지 않는다.
    [-o file_name]명령어 수행 결과를 저장할 파일의 이름이다. 상대경로로 주어진다면 기본 경로는 JEUS_HOME/logs/jms/이다.
  • 예제

    johan_container1>ptall
    cts_default>ptall
                                  ======================
                                   PENDING TRANSACTIONS
                                  ======================
    --------+------------+------------+---------------------------------------------
    ID      |TYPE        |NAME        |VALUE
    --------+------------+------------+---------------------------------------------
        1024|PRODUCTION  |MESSSAGE ID |ID:0:2:1:1[24]
            |            |DESTINATION |MY_QUEUE
    --------+------------+------------+---------------------------------------------

4.3.3.14. removeconf

JMS 엔진에서 특정 Connection Factory를 제거한다.

  • 사용법

    removeconf [-per] conf_name
  • 파라미터

    파라미터설명
    [-per]지정한 Connection Factory를 제거한 뒤 JMSMain.xml 설정 파일에 반영한다.
    conf_name제거할 Connection Factory의 이름이다.
  • 예제

    johan_container1>confall
      ConnectionFactory
      MyQueueConnectionFactory
      QueueConnectionFactory
      . . .
    johan_container1>removeconf -per MyQueueConnectionFactory
    johan_container1>confall
      ConnectionFactory
      QueueConnectionFactory
      . . .

4.3.3.15. removedest

JMS 엔진에서 특정 Destination을 제거한다.

  • 사용법

    removedest [-per] dest_name
  • 파라미터

    파라미터설명
    [-per]지정한 Destination을 제거한 뒤 JMSMain.xml 설정 파일에 반영한다.
    dest_name제거할 Destination의 이름이다.
  • 예제

    johan_container1>destall
      ExamplesQueue
      ExamplesTopic
      MyQueue
      Queue1
      . . .
    johan_container1>removedest -per MyQueue
    johan_container1>destall
      ExamplesQueue
      ExamplesTopic
      Queue1
      . . .

4.3.3.16. restat

stat 명령을 통해 확인할 수 있는 Destination의 통계 정보를 초기화한다.

  • 사용법

    restat dest_name
  • 파라미터

    파라미터설명
    dest_name

    통계 정보를 초기화할 Destination 이름의 Prefix이다.

    와일드 문자(애스터리스크(*)와 물음표(?))도 사용이 가능하다.

    해당하는 Destination이 여러 개 있을 경우 각각에 모두 적용된다.

  • 예제

    johan_container1>stat ExamplesQueue
    ------------------------------------------------------------------------
                                  Arrival                  Completion
    ------------------------------------------------------------------------
    Number of messages:   5                         0                         
    Start time:           2013.10.14 20:19:47.511   N/A                       
    Last sample time:     2013.10.14 20:30:50.894   N/A                       
    Messages per second:  0.0060                    N/A                       
    ------------------------------------------------------------------------
    
    johan_container1>restat ExamplesQueue
    johan_container1>stat ExamplesQueue
    ========================================================================
    Statistics for ExamplesQueue
    ------------------------------------------------------------------------
                                  Arrival                  Completion
    ------------------------------------------------------------------------
    Number of messages:   0                         0
    Start time:           N/A                       N/A
    Last sample time:     N/A                       N/A
    Messages per second:  N/A                       N/A
    ------------------------------------------------------------------------

4.3.3.17. rollback

Pending 트랜잭션을 강제로 Rollback한다.

  • 사용법

    rollback id
  • 파라미터설명
    id강제로 Rollback할 트랜잭션의 ID이다. ID는 ptall 명령으로 확인할 수 있다.
  • 예제

    johan_container1>rollback 1024
    
    1024 is rolled back.

4.3.3.18. server

JMS 엔진의 요약 정보를 조회한다. JVM의 전체 메모리 용량과 사용 가능한 메모리 용량 및 클러스터링 정보, Destination, Connection Factory, 연결되어 있는 클라이언트의 목록을 확인할 수 있다.

  • 사용법

    server [-i interval] [-k number] [-o file_name]
  • 파라미터

    파라미터설명
    [-i interval]

    명령어를 반복하여 수행할 간격이다. (단위: 초)

    명령어 반복을 위해 간격만을 옵션으로 준 경우 무한히 반복하여 수행한다.

    [-k number]명령어를 반복하여 수행할 횟수이다. 명령어 반복을 위해 횟수만을 옵션으로 준 경우 반복되어 수행되지 않는다.
    [-o file_name]명령어 수행 결과를 저장할 파일의 이름이다. 상대경로로 주어진다면 기본 경로는 JEUS_HOME/logs/jms/이다.
  • 예제

    johan_container1>server
    ====<<Memory Info>>====
      Total size : 78118912
      Free size : 26071400
    ====<<Destination>>====
      ExamplesQueue
      ExamplesTopic
      JEUSMQ_DLQ
    ====<<Factory>>====
      QueueConnectionFactory
      TopicConnectionFactory
    ====<<Entry>>====
      JMSClient-RE81751000002
      JMSClient-RE81751000003
      JMSClient-RE81751000004

4.3.3.19. stat

Destination의 통계 정보를 조회한다.

  • 사용법

    stat [-i interval] [-k number] [-o file_name] dest_name
  • 파라미터

    파라미터설명
    [-i interval]

    명령어를 반복하여 수행할 간격이다. (단위: 초)

    명령어 반복을 위해 간격만을 옵션으로 준 경우 무한히 반복하여 수행한다.

    [-k number]명령어를 반복하여 수행할 횟수이다. 명령어 반복을 위해 횟수만을 옵션으로 준 경우 반복되어 수행되지 않는다.
    [-o file_name]명령어 수행 결과를 저장할 파일의 이름이다. 상대경로로 주어진다면 기본 경로는 JEUS_HOME/logs/jms/이다.
    dest_name

    통계 정보를 조회할 Destination 이름의 Prefix이다.

    와일드 문자(애스터리스크(*)와 물음표(?))도 사용이 가능하다.

    해당하는 Destination이 여러 개 있을 경우 모두 출력된다.

  • 예제

    johan_container1>stat -i 1 -k 3 ExamplesQueue
    ========================================================================
    Statistics for ExamplesQueue
    ------------------------------------------------------------------------
                                  Arrival                  Completion
    ------------------------------------------------------------------------
    Number of messages:   5                         0                         
    Start time:           2013.10.14 20:42:56.204   N/A                       
    Last sample time:     2013.10.14 20:45:11.164   N/A                       
    Messages per second:  0.029                     N/A                       
    ------------------------------------------------------------------------
    
    ========================================================================
    Statistics for ExamplesQueue
    ------------------------------------------------------------------------
                                  Arrival                  Completion
    ------------------------------------------------------------------------
    Number of messages:   5                         0                         
    Start time:           2013.10.14 20:42:56.204   N/A                       
    Last sample time:     2013.10.14 20:45:11.164   N/A                       
    Messages per second:  0.029                     N/A                       
    ------------------------------------------------------------------------
    
    ========================================================================
    Statistics for ExamplesQueue
    ------------------------------------------------------------------------
                                  Arrival                  Completion
    ------------------------------------------------------------------------
    Number of messages:   5                         0                         
    Start time:           2013.10.14 20:42:56.204   N/A                       
    Last sample time:     2013.10.14 20:45:11.164   N/A                       
    Messages per second:  0.029                     N/A                       
    ------------------------------------------------------------------------

4.3.3.20. switchover

Active 서버에 장애가 발생하여 Standby 서버가 장애를 극복을 한 상태에서 Active 서버를 다시 복원할 때 사용한다.

switchover 명령어를 사용하면 Standby 서버는 클라이언트로부터 새로운 커넥션을 받지 않게 되고, 현재 연결되어 있는 모든 클라이언트와의 접속을 강제로 종료하고 모든 Destination의 메시지들을 Active 서버로 마이그레이션한다. Standby 서버와 연결이 끊어진 클라이언트는 커넥션 장애 복구 과정을 통해 Active 서버로 자동으로 재접속할 것이다.

이 명령은 Standby 서버로 접속한 후에 실행해야 한다.

  • 사용법

    switchover
  • 예제

    johan2_container1>switchover

4.4. appcompiler

본 절에서는 애플리케이션의 EJB 인터페이스 impl, skeleton, stub 클래스, JSP를 컴파일하여 서블릿 클래스, 웹 서비스의 endpoint 클래스 등을 생성하는 애플리케이션 컴파일러에 대해 설명한다.

appcompiler 툴은 하나의 파일을 생성한 후 컴파일하는 each 모드와 모든 파일을 생성한 후 한 번에 컴파일하는 batch 모드가 있다. batch 모드는 each 모드에 비해 속도는 빠르지만 컴파일할 때 에러가 나면 원인이 되는 파일을 찾기 힘들다는 단점이 있다. 기본 동작은 each 모드이므로 batch 모드를 원할 경우 -batch 옵션을 이용하거나 jeus.app.compiler.mode=batch를 설정하면 된다.

이 툴은 EJB 2.1 인터페이스의 impl과 RMI stub과 skeleton 클래스, 웹 모듈의 JSP를 컴파일해서 서블릿 클래스, 또는 JAX-RPC 클라이언트의 웹 서비스 Stub이나 웹 서비스 endpoint 클래스들을 미리 생성하기 위해 선택적으로 사용할 수 있다. EJB 3 인터페이스로만 구성된 EJB의 경우나 JAX-WS 클라이언트, 서버 애플리케이션은 이 툴을 실행할 필요가 없다.

appcompiler는 기동할 때마다 또는 runtime-deployment가 실행될 때 자동으로 실행되어 해당 애플리케이션들을 컴파일한다. 이는 상당한 시간이 소모되는 작업이기 때문에, 기동할 때 많은 양의 Bean들이 디플로이되거나 JSP 파일이 많을 경우에 기동시간을 늘리는 원인이 될 수 있다.

JEUS의 기동시간(JEUS가 시작되고 서비스를 제공할 때까지 걸리는 시간으로 이는 각 엔진 컨테이너가 시작되어 애플리케이션들을 디플로이하고 서비스를 제공하기까지 걸리는 시간을 포함한다)을 줄이기 위해서(또는 수동 runtime-deployment를 빠르게 진행하려면) JEUS를 기동하기 전에 (또는 수동으로 runtime-deployment를 하기전에) 이 툴을 실행하는 것이 효과적이다.

이 경우에 JEUSMain.xml에 등록된 해당 애플리케이션에 fast-deploy 설정을 해야 한다. 또는 jeusadmin 콘솔 툴의 'deploy' 명령어에 "-f"옵션을 추가한다. fast-deploy 옵션을 "true"로 설정하는 것으로 모듈의 런타임 디플로이하는 경우 appcompiler가 자동으로 수행되는 것을 막을 수 있다.

fast-deploy 옵션은 각 애플리케이션이 가진 JEUS Deploy Descriptor에서도 설정할 수 있다. EJB 모듈일 경우 jeus-ejb-dd.xml에서 가능하며, 웹 모듈일 경우 jeus-web-dd.xml에서 fast-deploy를 설정할 수 있다. 해당 모듈의 fast-deploy 설정이 true이면 항상 fast-deploy를 시도하며, false일 경우에는 jeus-application-dd.xml 또는 JEUSMain.xml의 애플리케이션 설정에 따른다.

EJB 엔진은 EJB에 대한 인터페이스 impl, skeleton, stub 클래스들을 생성하고 컴파일하는 과정을 fast-deploy 옵션이 있을 경우 하지 않고, 미리 생성된 클래스들을 이용하므로 디플로이 시간을 줄일 수 있다. 서블릿 엔진은 JSP에 대한 컴파일된 서블릿 클래스 파일이 있을 경우에는 fast-deploy 설정에 관계 없이 다시 컴파일 하지 않으므로, 디플로이 시간을 줄이고 JSP를 호출할 때 컴파일이 발생하지 않도록 하기 위해서는 appcompiler로 미리 컴파일하는 것이 좋다.

사용법

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    다음은 appcompiler를 실행하는 문법이다.

    appcompiler [-h] [-verbose] [-keep] [-jspmap] [-batch] [-q]
                [-client clientview_filename] [-noaddfile] [-deloldgen]
                [-ejb-only] [-web-only] [-ejb-jar ejb-jar.xml_path]
                [-jeus-ejb-dd jeus-ejb-dd.xml_path] [-D<property=value>]
                [-properties=<filename>]
                [application_file_or_directory_name]
  • 파라미터

    파라미터설명
    [-h]appcompiler의 help를 출력한다.
    [-verbose]verbose 모드를 설정하여 상세한 과정을 출력한다(로그 레벨을 FINEST로 설정한다).
    [-keep]컴파일 과정에서 생성된 소스를 유지할 것인지 설정한다.
    [-jspmap]servlet-mapping table (jeus_jspmap.xml)을 생성할 것인지 설정한다.
    [-batch]

    모든 파일을 생성한 후 한 번에 컴파일하는 batch 모드로 동작한다.

    이 옵션이 없으면, 하나의 파일을 생성한 후 컴파일하는 each 모드로 동작한다.

    [-q]

    여러 모듈들을 포함한 EAR 애플리케이션을 컴파일할 때 특정 웹 모듈 컴파일을 실패할 경우 남은 다른 모듈들을 컴파일하지 않고 에러 메시지를 출력하고 중단한다.

    이 옵션이 없을 경우에는 특정 웹 모듈 컴파일을 실패해도, 에러 메시지만 출력하고 남은 다른 모듈들에 대해 컴파일을 진행한다.

    [-client clientview_filename]

    생성될 Stub 클래스들과 인터페이스 클래스들이 포함될 clientview 파일의 이름을 설정한다.

    clientview_filename은 EJB archived 파일 형식인 JAR만 지원하며, 컴파일 하는 대상(archived or exploded application)이 존재하는 디렉터리에 생성된다.

    이 옵션은 standalone EJB 모듈과 EJB 모듈을 가지고 있는 EAR 애플리케이션에만 적용된다. clientview_filenameapplication_file_or_directory_name과 동일한 경우에는 지원하지 않는다.

    clientview_filename과 동일한 이름의 파일이 존재할 경우 clientview를 위한 인터페이스 클래스와 생성된 Stub 클래스를 이미 존재하는 동일한 이름의 파일에 포함시킨다. clientview 파일은 서버에 설치된 EJB를 이용하는 클라이언트 애플리케이션을 개발하기 위해 클라이언트에게 제공한다.

    [-noaddfile]

    [-client] 옵션과 함께 사용할 때 유효하며, clientview 파일을 생성하지만, 컴파일 대상이 되는 파일은 컴파일하지 않고 원본 내용을 유지한다.

    예를 들어, calc.jar를 appcompiler로 수행할 때, clientview 파일을 생성하기 위해서 -client 옵션을 사용한다. 여기서 clientview 파일은 stub과 remote, home 인터페이스 클래스들만 모아둔 파일을 의미한다.

    이때, calc.jar를 appcompiler로 컴파일한 뒤, clientview 파일을 생성하기 때문에, calc.jar를 컴파일한다. 컴파일된 파일은 원본 파일에서 컴파일 과정을 통해 생성된 impl, skel, stub 등 클래스 파일들이 추가되어 있다. 만약 사용자가 calc.jar 파일 자체는 컴파일된 상태로 만들기를 원하지 않고, clientview 파일만 생성하기를 원할 경우에 noaddfile 옵션을 사용할 수 있다.

    [-deloldgen]

    EJB 모듈을 컴파일 할 때, JEUS 이전 버전에서 만들어진 impl, skel, stub 파일들을 삭제하고 컴파일을 시도한다.

    이는 JEUS 4와 JEUS 5에서 impl, skel, stub 클래스들 이름을 생성하는 방식이 JEUS 6와는 다르다.

    JEUS 이전 버전인 JEUS 4와 JEUS 5에서 생성한 EJB 모듈을 JEUS 6 appcompiler로 컴파일하여 JEUS 6에서 사용하려고 할 때, 기존 버전의 impl, skel, stub 파일들이 남아있어 JEUS 6에서 정상적으로 EJB가 수행하지 않는 문제점을 해결할 수 있다.

    [-ejb-only]

    EAR에 속한 ejb 모듈만을 컴파일한다. application.xml에 적힌 정보를 기준으로 한다.

    [-web-only]

    EAR에 속한 web 모듈만을 컴파일한다. application.xml에 적힌 정보를 기준으로 한다.

    [-ejb-jar ejb-jar.xml_path]컴파일할 때 사용할 ejb-jar.xml 파일을 설정한다.
    [-jeus-ejb-dd jeus-ejb-dd.xml_path]컴파일할 때 사용할 jeus-ejb-dd.xml 파일을 설정한다.
    [-D<property=value>]시스템 프로퍼티를 지정한다. 이 옵션은 한 번이상 이용할 수 있다.
    [-properties=<filename>]파일로부터 시스템 프로퍼티를 설정한다.
    [application_file_or_directory_name]

    컴파일할 대상 애플리케이션 파일(archived ear, jar, war) 또는 디렉터리(exploded ear, jar, war)를 설정한다.

    ear뿐 아니라 standalone jar, war도 하나의 애플리케이션으로 생각한다. 컴파일해서 생성된 impl, skel, stub 클래스 파일들은 컴파일하는 대상 애플리케이션의 파일에 추가된다.

  • 예제

    appcompiler는 JEUS_HOME\bin\ 디렉터리에 위치한 일반적인 스크립트 파일이다.

    • "ejb.jar" 모듈의 home, remote interface impl, skel, stub 클래스를 생성해서 jar 파일에 포함한다.

      C:\jeus>appcompiler ejb.jar
    • "web.war" 모듈의 모든 JSP 파일로 부터 servlet class를 생성해서 war 파일에 포함한다.

      C:\jeus>appcompiler web.war
    • batch 모드로 모듈을 컴파일한다.

      C:\jeus>appcompiler -batch app.jar
    • "ejb.jar" 모듈의 home, remote 인터페이스 impl, skel, stub 클래스를 생성해서 "ejb.jar" 파일에 포함시키며, home, remote 인터페이스와 생성된 stub 클래스를 포함한 "clinetview.jar" 파일을 생성한다.

      C:\jeus>appcompiler -client clientview.jar ejb.jar

4.5. ejbddinit

본 절에서는 EJB모듈의 DD 파일(jeus-ejb-dd.xml)파일을 ejb-jar.xml 정보와 사전에 생성된 프로퍼티 파일을 이용하여 JEUS EJB DD 파일을 자동으로 생성하는 방법을 설명한다.

JEUS 6에서 EJB 디플로이할 때 동적으로 필요한 항목들은 기본값으로 생성하여 이용하므로, JEUS EJB DD는 반드시 존재해야하는 것은 아니다. 따라서 새로 개발할 경우 불필요할 수 있지만, 기존 방식으로 애플리케이션을 작성하거나 다른 제품에서 전환(migration)하는 경우 쉽게 템플릿을 작성해 주는 용도로 사용할 수 있다. 사용자가 쉽게 필요한 프로퍼티를 수정하여 이용할 수 있도록 모든 프로퍼티를 가지고 있는 프로퍼티 파일 예제를 제공한다.

Java EE 5의 annotation-based 방식은 소스 파일 내에 설정을 할 수 있으므로 지원할 필요가 없다.

현재 JEUS EJB DD를 생성하는 ejbddinit만을 제공하며, 향후 JEUS WEB DD을 생성하는 webddinit을 제공할 계획이다.

ejbddinit 콘솔 툴의 목적은, JEUS EJB DD가 존재하지 않는 EJB 모듈을 JEUS EJB 엔진에 디플로이할 때, 간단한 방법을 이용하여 자동으로 JEUS EJB DD를 생성하게 함으로써 사용자에게 편리한 방법을 제시하는 것이다. 이는 해당 모듈에 대해서 세밀한 설정이 필요하지 않은 경우나, 개발된 모듈을 간단하게 테스트할 경우에 유용하다.

사용법

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    ejbddinit 툴을 실행에는 다음과 같은 문법이 사용된다.

    ejbddinit [-property property_file_path] [-level log_level]
              [application_file_or_directory_name]
  • 파라미터

    파라미터설명
    [-property property_file_path]

    프로퍼티 파일의 경로를 지정한다. 프로퍼티 파일은 jeus-ejb-dd schema에 적합한 태그 이름과 값의 쌍을 지정할 수 있다. jeus-ejb-dd schema의 일부 태그를 지원하고 있다.

    • 예) export-port=40001

      모든 EJB에 대해서 export-port를 40001로 설정하여 jeus-ejb-dd.xml 파일을 생성한다.

    • 예) SampleBean.export-port=40004

      SampleBean EJB에 대해서 export-port를 40004로 설정하여 jeus-ejb-dd.xml 파일을 생성한다. EJB Name을 지정한 태그는 기본 태그에 대해 우선적으로 이용한다. 즉, 기본 태그들은 해당 애플리케이션의 전체 EJB에 대한 기본값으로 이용한다.

    특별히 export-name을 설정하는 경우에는 패턴을 사용할 수 있다. 프로퍼티 파일에도 로그 레벨과 target을 정의할 수 있으며, 옵션과 프로퍼티 파일에서 함께 정의할 경우 옵션의 값이 우선순위를 가진다.

    구체적인 패턴 사용법과 프로퍼티 파일에 대한 속성은 프로퍼티에서 설명한다.

    [-level log_level]ejbddinit를 실행할 때 화면에 출력되는 로그의 레벨을 설정한다.
    [application_file_or_directory_name]

    ejbddinit 사용하여 자동으로 JEUS EJB DD파일을 생성하고자 할 때 target이 될 애플리케이션의 파일 이름 또는 폴더 이름을 지정한다.

    target 애플리케이션은 archived 형태인 jar 압축 파일과 압축 파일이 풀린 exploded 형태를 지원한다.

    성공적으로 JEUS EJB DD를 생성하면, target 애플리케이션이 exploded 형태일 경우 해당 애플리케이션의 META-INF 폴더에 jeus-ejb-dd.xml 파일을 생성한다.

    target 애플리케이션이 archived 형태일 경우 해당 파일 이름에 "<application_file_name>.new"를 붙인 이름의 파일을 생성한다. 이 생성된 압축 파일 내부의 META-INF 폴더에 생성된 jeus-ejb-dd.xml 파일이 존재한다.

  • 예제

    ejbddinit는 JEUS_HOME\bin\ 디렉터리에 위치한 일반적인 스크립트 파일이다.

    • usage를 출력한다.

      C:\jeus> ejbddinit
    • EJB application인 ejb.jar의 jeus-ejb-dd.xml을 생성하여, "ejb.jar.new" 파일을 생성한다.

      C:\jeus> ejbddinit ejb.jar
    • EJB application인 ejb_dir의 jeus-ejb-dd.xml을 ejb_dir/META-INF 위치에 생성한다.

      C:\jeus> ejbddinit ejb_dir
    • ejb.property에 정의된 내용을 바탕으로 jeus-ejb-dd.xml을 생성한다.

      C:\jeus> ejbddinit -property ejb.property
    • EJB application인 ejb.jar의 jeus-ejb-dd.xml을 생성하며, log level을 FINE으로 설정하여 해당하는 level의 log를 출력한다.

      C:\jeus> ejbddinit -level FINE ejb.jar

    참고

    ejbddinit은 ant task를 지원한다. ejbddinit ant task는 “5.3.2. ejbddinit ”에서 설명한다.

프로퍼티

각 프로퍼티에 대한 설명은 JEUS 6 매뉴얼의 ''JEUS XML Reference''의 "22.3. Element Reference"를 참고한다.

[표 4.1] ejbddinit 프로퍼티

프로퍼티Type비고
export-nameStringunique JNDI binding name, 특정 EJB에 대해서만 사용 권장
local-export-nameStringunique JNDI binding name, 특정 EJB에 대해서만 사용 권장
export-portint (not negative) 
export-iiopboolean 
single-vm-onlyboolean 
local-invoke-optimizeboolean 
thread-maxint (not negative) 
bean-pool-minint (not negative) 
bean-pool-maxint (not negative) 
connect-pool-minint (not negative) 
connect-pool-maxint (not negative) 
capacityint (not negative) 
passivation-timeoutlong (not negative or -1 for disable) 
disconnect-timeoutlong (not negative or -1 for disable) 
engine-typeString (defined)EXCLUSIVE_ACCESS, SINGLE_OBJECT, MULTIPLE_OBJECT
subengine-typeString (defined)ReadLocking, WriteLocking, or WriteLockingFind
fetch-sizeint (not negative) 
init-cachingboolean 
table-nameString 
creating-tableString (defined)
  • none : Table을 생성하지 않는다.

  • use-existing : 기존의 Table이 존재하면 이용하고, 그렇지 않으면 새로운 Table을 생성한다.

  • force-create : 기존에 Table이 존재하면 삭제하고, 새로운 Tabel을 생성한다.

deleting-tableboolean 
db-vendorString 
datasource-nameString 
enable-instant-qlboolean 

export-name은 EJB 모듈 이름이나 ejb-jar.xml에 정의된 EJB 컴포넌트의 <ejb-name>, <ejb-class> 태그의 값들을 이용하여 지정하는 경우가 대부분이므로 그것들의 export-name을 설정하는 경우 편리하게 사용할 수 있도록 특별히 패턴을 지원한다.

[표 4.2] export-name 지원하는 패턴

패턴 이름패턴 값
%{module-name}

EJB 모듈 이름이다.

jar 파일인 경우 .jar 확장자를 제거한 파일 이름이다.

%{ejb-name}

EJB 컴포넌트 이름이다.

ejb-jar.xml에 정의된 해당 EJB 컴포넌트의 <ejb-name> 태그의 값이다.

%{ejb-fqn}

EJB 컴포넌트의 EJB 클래스의 fully qualified name이다.

ejb-jar.xml에 정의된 해당 EJB 컴포넌트의 <ejb-class> 태그의 값이다.

%{ejb-class}%{ejb-fqn} 값에서 패키지 이름을 제외한 클래스 이름이다.

다음은 패턴 사용의 예이다.

이름이 'sample-ejb'이고 EJB 클래스의 fully qualified name이 'sample.SampleBean'인 EJB 컴포넌트가 이름이 'myejb'인 EJB 모듈에 패키지되어 있다고 가정한다.

  • export-name을 'myejb_sample-ejb'로 지정한다.

    export-name=%{module-name}_%{ejb-name}
  • export-name을 'PREFIX_sample.SampleBean'으로 지정한다.

    export-name=PREFIX_%{ejb-fqn}
  • export-name을 'SampleBean_POSTFIX'로 지정한다.

    export-name=%{ejb-class}_POSTFIX

위의 예에서 알 수 있듯이 export-name을 설정하는 경우 필요한(PREFIX나 POSTFIX와 같은) 기타 문자열들을 패턴에 붙일 수 있으며 패턴 간의 조합도 가능하다. 패턴 이름은 대소문자 구별 없이 사용할 수 있다.

프로퍼티 파일 예제

다음과 같이 프로퍼티 파일을 작성하여 ejbddinit을 수행할 수 있다. 다음의 예제를 각 JEUS EJB DD를 생성할 EJB에 맞게 수정하여 이용하기를 권장한다.

# PROPERTY FILE SAMPLE
# JEUS EJB DD Generation Option
# target file or directory path
source=/home/sangholee/eclipse/workspace_jeus6/jeus6trunk/bin/temp/ddinit/ejb.jar
# log-level for EJB DD init
logging-level=debug

# JEUS EJB DD configuration tag and value pairs for all EJBs
db-vendor=mysql
datasource-name=jdbc/__default
creating-table=use-existing
deleting-table=false
engine-type=EXCLUSIVE_ACCESS
subengine-type=ReadLocking
fetch-size=1111
enable-instant-ql=true
local-invoke-optimize=true
export-port=9999
export-iiop=false
single-vm-only=false
thread-max=10000
bean-pool-min=9
bean-pool-max=9999
capacity=9999999
passivation-timeout=99999
disconnect-timeout=-1
connect-pool-min=0
connect-pool-max=99999
init-caching=false

# JEUS EJB DD configuration tag and value pairs for BookBean EJB
BookBean.export-name=BookBeanFromProperty
BookBean.local-export-name=LocalBookBeanFromProperty
BookBean.export-port=55555
BookBean.thread-max=55555

4.6. encryption

암호화 툴(Encryption Tool)은 암호화할 문자열을 암호화하거나 그 반대로 복호화하는 기능을 제공하는 툴이다. 또한 Base64 포맷으로 인코딩 하거나 Hash 결과를 제공한다.

secret key가 필요한 알고리즘(ex. AES, DES, DESEDE, BLOWFISH, SEED)의 경우 security.key 파일을 생성하여 사용한다. security.key 파일은 기본적으로 JEUS_HOME/config/<node>/security에 위치하며, 변경하고 싶을 경우 시스템 프로퍼티 jeus.security.keypath를 이용하여 경로를 지정할 수 있다.

JEUS 6.0 Fix#3부터는 Master Password를 이용해서 security.key 파일을 보호하는 것이 가능하다.

JEUS 6.0 Fix#4부터 암호화 방식이 조금 바뀌었고, 이에 따라 Fix#5에서 이전 포맷의 ciphertext를 바뀐 포맷의 ciphertext로 바꿔주는 convert 옵션이 encryption tool에 추가되었다.

암호화 툴은 다음의 디렉터리에 위치한 encryption 스크립트로 실행할 수 있다.

JEUS_HOME\bin\

Encryption 툴은 다음과 같이 호출된다.

이때 JEUS_HOME 시스템 환경변수가 설정되어 있고, 시스템 Path에 JEUS_HOME\bin 디렉터리가 설정되어 있다고 가정한다.

  • 예제

    • 호출 후에 툴은 단순히 인코딩 또는 디코딩된 문자열을 조회한다.

      만약 툴에 어떤 파라미터도 제공하지 않았거나, 호출 문법이 잘못되었을 경우 단순한 도움말 메시지가 출력된다.

      C:\> encryption base64 mypassword 
      [BASE64] : [mypassword] --> [encode:bXlwYXNzd29yZA==]
      [BASE64] : [bXlwYXNzd29yZA==] --> [decode:mypassword]

      문자열 “bXlwYXNzd29yZA=="는 "mypassword"를 Base 64 포맷으로 인코딩한 것이다.

      C:\> encryption DESede mypassword  
      [DESEDE] : [mypassword] --> [encode:8JLoskMPHkwwLKi+TJeOgQZBDO15PBQ=]
      [DESEDE] : [8JLoskMPHkwwLKi+TJeOgQZBDO15PBQ=] --> [decode:mypassword]

      문자열 “8JLoskMPHkwwLKi+TJeOgQZBDO15PBQ=”는 "mypassword"를 DESede cipher algorhtm으로 암호화된 패스워드이다. 이 암호화를 진행하기 위해 만들어진 secret key는 JEUS_HOME\config\nodename\security의 security.key 파일에 저장된다(혹은 첫 암호화가 아닐 경우 security.key 파일에 저장된 key를 이용).

    • -protectkey 옵션을 이용하면 Master Password를 입력받아 security.key 파일을 암호화하는 것이 가능하다.

      C:\> encryption -protectkey AES mypassword 
      Input Your Password for Key Encryption>
      Repeat Your Password for Key Encryption>
      [AES] : [mypassword] --> [encode:XJ18x=/skFTKST9XET=]
      [AES] : [XJ18x=/skFTKST9XET=] --> [decode:mypassword]

      위의 예제와 비슷한데, Master Password를 입력 받는 것이 다르다.

      여기서 입력받는 패스워드를 이용하여 secret key를 DESede 알고리즘으로 암호화하게 된다. 위의 명령어를 수행한 이후 만들어진 security.key 파일을 사용하기 위해서는 항상 Master Password를 입력받는 작업이 필요하다. 따라서, 암호화된 security.key 파일을 이용해 암호화를 진행할 경우 다음과 같이 수행된다.

      C:\> encryption -protectkey AES mypassword 
      secret key file is encrypted. Enter the master password.
      password>
      [AES] : [mypassword] --> [encode:XJ18x=/skFTKST9XET=]
      [AES] : [XJ18x=/skFTKST9XET=] --> [decode:mypassword]

    • Fix#4부터 encryption 방식이 좀 더 보안적인 측면에서 강화된 버전으로 바뀌었다. 따라서 ciphertext의 포맷이 조금 변화하였는데, Fix#4 이전 버전에서 생성한 암호문을 이후 버전에서 그대로 사용할 수 없게 되었다. 이에 따라 Fix#5부터 encryption tool에서 ciphertext를 변환할 수 있는 기능이 추가되었고 이는 -convert 옵션을 이용해 다음과 같이 사용할 수 있다.

      예제:

      C:\> encryption -convert AES i06wYRz3u60/Gqun2sKtXH1u=
      Decryption succeed.
      [before:i06wYRz3u60/Gqun2sKtXH1u=] --> [after:ET7c/P21Qx1Io8UI6Ss2NvZ0G=]

    • security.key 파일이 암호화 되어 있을 경우에는 다음과 같이 실행한다.

      C:\> encryption -convert -protectkey AES i06wYRz3u60/Gqun2sKtXH1u=
      secret key file is encrypted. Enter the master password.
      password>
      
      Decryption succeed.
      [before:i06wYRz3u60/Gqun2sKtXH1u=] --> [after:ET7c/P21Qx1Io8UI6Ss2NvZ0G=]

4.7. jspc

JSP 배치 컴파일러는 “처음 접속"하는 경우 성능향상을 위해 JSP 파일을 사전에 컴파일하는 데 사용되는 툴이다.

JSP 파일은 보통 웹 브라우저로부터 JSP 파일에 대해 웹 컨테이너에 요청할 때 컴파일된다. 그리하여 JSP 파일에 대한 초기 요청은 많은 Parsing과 컴파일 작업을 통해 많은 리소스를 소모하여 응답시간이 길어진다. 만일 개발된 JSP 파일이 많고 사용자 요구가 빈번한 웹 사이트이면 “초기 요청 수행”에 소요되는 시간이나 리소스가 서비스에 크게 영향을 미칠 수 있다. 이러한 경우 JSP 배치 컴파일러를 사용함으로써, 개발된 JSP 소스 파일들을 웹 컨테이너가 시작하기전에 컴파일하여 이러한 문제를 해결할 수 있다.

JEUS에서는 디플로이할 때 JSP 컴파일을 지원하기 때문에 jeus-web-dd.xml에 fast-deploy를 true로 설정해서 JSP 컴파일이 발생하지 않는 경우에 "jspc"로 프리 컴파일(pre-compile)할 수 있다.

"jspc"는 JEUS가 기동된 상태에서 디플로이된 모듈에 대해서 프리 컴파일을 수행할 수 있다. 오프라인에서 프리 컴파일을 수행하기 위해서는 “4.4. appcompiler”를 사용해야 한다.

  • 사용법

    호출 문법은 다음과 같다.

    jspc ( -e engine_name -U userid -P password 
        [-g grpname [-c ctxname [-p path | -l filename]]] [-ep path] [-noxml] [-q] 
        [-f container_xml_path] [-co javac_compiler_options] ) 
        | ( [-h] | [-v] )

    참고

    괄호, 브라켓([]), 파이프(|)는 오직 그룹화와 문법을 목적으로 한다.

  • 파라미터

    파라미터설명
    -e engine_nameJSP 파일들이 사전 컴파일해야 할 웹 컨테이너의 이름이다.
    -U useridJEUS 사용자 ID이다.
    -P passwordJEUS 사용자 패스워드이다.
    [-g grpname]JSP 파일들이 컴파일해야 할 컨텍스트 그룹의 이름이다.
    [-c ctxname]

    JSP 파일들이 컴파일할 컨텍스트의 이름이다. 만일 해당 파라미터와 컨텍스트 그룹 이름 파라미터가 빠지면 지정한 웹 컨테이너의 모든 JSP파일들이 컴파일된다.

    만일 해당 파라미터가 빠지고 컨텍스트 그룹 이름 파라미터가 포함되면 지정한 컨텍스트 그룹의 모든 JSP 파일들이 컴파일된다.

    [-p path]컴파일 할 하나의 컨텍스트 경로이다(‘/’로 반드시 시작한다). 해당 옵션은 [–l] 옵션과 결합할 수 없다.
    -l filename]

    지정한 파일 이름은 컴파일 할 JSP파일 리스트를 포함하고 있다. Linefeed 문자는 목록에 나열된 각각의 JSP 파일을 분리해야 한다.

    JSP 파일 이름들은 컨텍스트 루트에 대한 상대 경로를 가져야 하며 반드시 “/”로 시작해야 한다.

    [-ep path]

    컴파일할 때 제외할 디렉터리를 설정한다.

    (예: jspc -e johan_servlet_engine1 -g MyGroup -c Examples -ep /image)

    [-q]이 옵션을 지정하면 컴파일 에러가 발생할 경우에 수행을 중단한다.
    [-co javac_compiler_options]javac 컴파일러에 관련된 파라미터로 설정 값은 구분자를 콤마(,)로 하여 설정하며 실제 컴파일할 때는 공백으로 대체된다.
    [-h]도움말을 출력한다.
    [-v]버전 정보를 출력한다.

  • 예제

    JSP 배치 컴파일러는 JEUS_HOME\bin 디렉터리에 위치한 jspc 명령어를 통해 수행된다.

    • jsplist.txt 파일에는 다음과 같이 컨텍스트 루트의 상대 경로를 포함한 JSP 파일 목록을 지정해주어야 한다.

      jspc -e johan_servlet_engine1 -g MyGroup -c Examples -l jsplist.txt
    • 해당 옵션은 –p 옵션과 결합할 수 없다.

      /jsp/directive/directive.jsp
      /jsp/forward/forward.jsp
      
    • “johan_servlet_engine1” 웹 컨테이너에 “MyGroup” Context group의 “Examples” Context에 모든 JSP 파일들을 프리 컴파일(pre-compile)한다.

      jspc -e johan_servlet_engine1 -g MyGroup -c Examples

4.8. wsgen

JAX-WS 웹 서비스를 위한 툴로 Java 클래스로부터 WSDL 파일과 JAX-RPC 매핑 파일을 생성한다. 또한 웹 서비스 정책 설정 파일을 생성할 수도 있다.

wsgen 툴은 service endpoint interface 클래스(그리고 임의의 Java로 구현한 클래스)로부터 다음과 같은 것을 생성한다.

  • Portable Artifacts

  • 웹 서비스의 WSDL 파일(옵션)

  • 웹 서비스 정책 파일 wsit-<endpoint classname>.xml 파일(옵션)

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    Command Line에서 다음과 같이 Command를 입력한다.

    Usage: WSGEN [options] <SEI>
    
    where [options] include:
      -classpath <path>          specify where to find input class files
      -cp <path>                 same as -classpath <path>
      -d <directory>             specify where to place generated output files
      -extension                 allow vendor extensions - functionality not specified
                                 by the specification.  Use of extensions may
                                 result in applications that are not portable or
                                 may not interoperate with other implementations
      -help                      display help
      -keep                      keep generated files
      -r <directory>             resource destination directory, specify where to
                                 place resouce files such as WSDLs
      -s <directory>             specify where to place generated source files
      -verbose                   output messages about what the compiler is doing
      -version                   print version information
      -wsdl[:protocol]           generate a WSDL file.  The protocol is optional.
                                 Valid protocols are soap1.1 and Xsoap1.2, the default
                                 is soap1.1.  Xsoap1.2 is not standard and can only be
                                 used in conjunction with the -extension option
      -servicename <name>        specify the Service name to use in the generated WSDL
                                 Used in conjunction with the -wsdl option.
      -portname <name>           specify the Port name to use in the generated WSDL
                                 Used in conjunction with the -wsdl option.
      -policy <path>             specify where to find input webservice-config file
                                 (service-config.xml)
    
    Examples:
      wsgen -cp . example.Stock
      wsgen -cp . example.Stock -wsdl -servicename {http://mynamespace}MyService
      wsgen -cp . example.Stock -policy service-config.xml
  • 파라미터

    파라미터설명
    -classpath <path>입력 Java 클래스 파일들을 찾기 위한 경로를 기술한다.
    -cp <path>-classpath <path>와 동일하다.
    -d <directory>결과 파일이 생성될 디렉터리를 지정한다.
    -extension벤더 특정의 확장성을 명시할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다.
    -help도움말을 출력한다.
    -keep생성되는 파일들을 보존한다.
    -r <directory>genwsdl 속성과 함께 사용한다. WSDL 파일을 생성할 위치를 지정한다.
    -s <directory>생성되는 소스 파일들의 위치를 명시한다.
    -verboseVerbose 메시지를 출력한다.
    -version버젼 정보를 화면에 출력한다.
    -wsdl[:protocol]

    기본적으로 wsgen은 WSDL 파일을 생성하지 않는다. 이 옵션을 사용하면 개발자는 디플로이되기 전에 WSDL 파일을 볼 수 있다.

    protocol 또한 옵션이며 기본값은 soap1.1 이다. Xsoap1.2 또한 사용할 수 있으며 -extension 옵션과 함께 사용한다.

    -servicename <name>-wsdl 속성과 함께 사용한다. 생성되는 WSDL 파일의 특정 wsdl:service element의 이름을 명시한다.
    -portname <name>-wsdl 속성과 함께 사용한다. 생성되는 WSDL 파일의 특정 wsdl:portname element의 이름을 명시한다.
    -policy <path>웹 서비스 정책 설정 파일을 읽어 들인다.
  • 예제

    wsgen는 JEUS_HOME\bin\ 디렉터리에 위치한 일반적인 스크립트 파일이다.

    wsgen툴을 실행하는 예는 다음과 같다.

    C:\> wsgen -classpath build\classes -d build\classes -wsdl
    fromjava.server.AddNumbersImpl

    위의 명령어는 서비스 end-point 구현 클래스인 fromjava.server.AddNumbersImpl로 부터 JAX-WS 웹 서비스를 구성한다. fromjava.server.AddNumbersImpl 클래스의 클래스 패스는 "build\classes"이며 WSDL 문서와 함께 JavaBean 파일들이 "build\classes" 디렉터리에 생성이 된다.

4.9. wsimport

JAX-WS 웹 서비스를 위한 툴로 WSDL 파일로부터 클라이언트 측 Java stub 소스 파일들과 서버 측 웹 서비스 인터페이스 Java 소스 파일을 생성한다. 또한 웹 서비스 정책 설정 파일을 생성할 수도 있다.

wsimport 툴은 웹 서비스의 WSDL로부터 다음과 같은 것을 생성한다.

  • SEI, 서비스 클래스, 그 밖의 JAXB 관련 자바 클래스들

  • 웹 서비스 정책 설정이 담긴 WSDL 파일, wsit-client.xml 파일

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    Command Line에서 다음과 같이 Command를 입력한다.

    Usage: wsimport [options] <WSDL_URI>
    
    where [options] include:
      -b <path>                 specify jaxws/jaxb binding files or additional schemas
                                (Each <path> must have its own -b)
      -B<jaxbOption>            Pass this option to JAXB schema compiler
      -catalog <file>           specify catalog file to resolve external entity 
                                references supports TR9401, XCatalog, 
                                and OASIS XML Catalog format
      -d <directory>            specify where to place generated output files
      -extension                allow vendor extensions - functionality not specified
                                by the specification.  Use of extensions may
                                result in applications that are not portable or
                                may not interoperate with other implementations
      -help                     display help
      -httpproxy:<host>:<port>  specify a HTTP proxy server (port defaults to 8080)
      -keep                     keep generated files
      -p <pkg>                  specifies the target package
      -quiet                    suppress wsimport output
      -s <directory>            specify where to place generated source files
      -target <version>         generate code as per the given JAXWS specification 
                                version. version 2.0 will generate compliant code 
                                for JAXWS 2.0 spec.
      -verbose                  output messages about what the compiler is doing
      -version                  print version information
      -wsdllocation <location>  @WebServiceClient.wsdlLocation value
      -policy <path>            specify where to find input webservice-config file
                                (service-config.xml)
    
    Examples:
      wsimport stock.wsdl -b stock.xml -b stock.xjb
      wsimport -d generated http://example.org/stock?wsdl
      wsimport stock.wsdl -policy service-config.xml
  • 파라미터

    파라미터설명
    -d <directory>결과 파일이 생성될 디렉터리를 지정한다.
    -b <path>외부의 JAX-WS 또는 JAXB 바인딩 파일들을 지정한다.
    -catalogTR9401, XCatalog, OASIS XML Catalog 형식과 같은 외부의 Entity 참조값을 설정할 수 있다. 또한 ant xmlcatalog 타입을 사용할 수도 있다.
    -extension벤더 특정의 확장성을 명시할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다.
    -help도움말을 출력한다.
    -httpproxy:<host>:<port>HTTP 프록시 서버를 지정한다. (기본값: 8080)
    -keep생성되는 파일들을 보존한다.
    -pWSDL의 모든 Namespace URI에 대한 Java 패키지 이름을 지정한다.
    -s <directory>생성된 소스 파일들이 놓일 위치를 지정한다. 이 속성을 지정하면 keep 속성이 자동으로 설정된다.
    -verboseVerbose 출력은 “true”일때 가능하다. 기본값은 “false”이다(true/false).
    -version버젼 정보를 화면에 출력한다.
    -wsdllocation <location>WSDL URI를 이 속성에 명시하면 그 URI 값이 생성되는 service end-point interface와 서비스 인터페이스의 @WebService.wsdlLocation Annotation과 @WebServiceClient.wsdlLocation Annotation에 설정된다.
    -policy <path>웹 서비스 정책 설정 파일을 읽어 들인다.
    target이곳에 지정된 JAXWS 스펙 버젼에 따라 코드를 생성한다.
    quiet출력 메시지들을 보이지 않게 한다.
  • 예제

    wsimport는 JEUS_HOME\bin\ 디렉터리에 위치한 일반적인 스크립트 파일이다.

    wsimport 툴을 실행하는 예는 다음과 같다.

    C:\> wsimport -d build\classes -keep -p fromwsdl.server src\conf\AddNumbers.wsdl

    위의 명령어는 AddNumbers.wsdl WSDL 문서로부터 패키지명이 fromwsdl.server인 Portable Artifact를 생성한다. "-keep" 옵션에 의해 생성되는 Java 클래스 소스들은 삭제되지 않는다.

4.10. java2wsdl

JAX-RPC 웹 서비스를 위한 툴로 Java 클래스로부터 WSDL파일과 JAX-RPC 매핑 파일을 생성한다.

java2wsdl 툴은 service end-point interface Java 클래스(또는 구현 클래스)로 부터 웹 서비스의 WSDL파일, JAX-RPC 매핑 파일과 같은 리소스를 생성한다.

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    Command Line에서 다음과 같은 Command를 입력한다.

    Usage: java2wsdl <options> <input file>
    
    where <input file> include:
      configuration file          service configuration xml file (by default)
    
    where <options> include:
      -classpath <path>           specify where to find input class files
      -cp <path>                  same as -classpath <path>
      -d <directory>              specify where to place generated output files
      -level <log-level>          specify a log level
      -verbose                    [optional] turn verbose mode on
  • 파라미터

    파라미터설명
    -classpath <path>입력 Java 클래스 파일들을 찾기 위한 경로를 기술한다.
    -cp <path>-classpath <path>와 동일하다.
    -d <directory>결과 파일이 생성될 디렉터리를 지정한다.
    -level로그 레벨을 지정한다.
    -verboseVerbose 메시지를 출력한다.
  • 예제

    java2wsdl는 JEUS_HOME\bin\ 디렉터리에 위치한 일반적인 스크립트 파일이다.

    java2wsdl 툴을 실행하는 예는 다음과 같다.

    C:\> java2wsdl -classpath build\classes -d build\web\WEB-INF service-config.xml

    위의 명령어는 service-config.xml 설정 파일과 build\classes 디렉터리의 클래스들을 통해 build\web\WEB-INF 디렉터리에 WSDL 문서 및 JAX-RPC 매핑 파일을 생성한다.

4.11. wsdl2java

JAX-RPC 웹 서비스를 위한 툴로 WSDL 파일로부터 클라이언트의 Stub Java 소스 파일과 서버의 웹 서비스 인터페이스 Java 소스 파일을 생성한다.

wsdl2java 툴은 웹 서비스의 WSDL 파일로부터 다음의 둘 중 하나를 생성한다.

  • 클라이언트의 웹 서비스 Stub Java 소스 코드들

  • 서버의 웹 서비스 인터페이스 Java 소스 코드들

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    Command Line에서 다음과 같은 Command를 입력한다.

    c:\jeus>wsdl2java
    Usage: wsdl2java mode [options] wsdlURI
    
    where mode include:
    -gen:client              generate all client artifacts
    -gen:server              generate all server artifacts
    -gen                     same as -gen:client
    -import:client           generate client JSR-109 portable artifacts only
    -import:server           generate server JSR-109 portable artifacts only
    -import                  same as -import:client
    
    where [options] include:
    * destination directory
    -d directory             specify where to put output files
    -cd directory            specify where to put compiled class files
                             If not specifed, the compile class files will be
                             put in where '-d' specifies
    
    * WSDL and Java mapping
    -inputmapping filename   specify the input JSR-109 JAX-RPC mapping file
                             (used for generating Java artifacts)
    -package package_name    specify the java package name to which
                             all namespaceURI in the WSDL map
    -ns2pkg NS=PKG           specify the namespaceURI and java package name mapping
                             (NS : namespaceURI, PKG : java package name)
                             This option can be used serveral times
    
    * output file
    -outputmapping filename  specify the output JSR-109 JAX-RPc mapping file
                             for the input WSDL
                             This option can not be used with '-inputmapping'
    -compile                 compile generated Java source files
                             ('tools.jar' must be in the classpath)
    -nokeepsrc               delete generated java source files
    
    * artifact generation options
    -nowrapped               disable wrapped mode detection for the WSDL
    -datahandleronly         force javax.activation.DataHandler for MIME types
    -nodatabinding           force javax.xml.soap.SOAPElement for all WSDL parts
    -soapver VER             specify SOAP version used in stub/tie class.
                             VER : '11' for SOAP 1.1, '12' for SOAP 1.2
    -resolvedir directory    specify directory where to be put local copies
                             of include/import schemas and import WSDL
    
    * other options
    -username                username to access the WSDL-URI
    -password                password to access the WSDL-URI
    
    * verbose options
    -level LEVEL             specify log level.
                             LEVEL : SEVERE, WARNING, INFO, FINE, FINER, FINEST
    -verbose                 same as -level FINE

  • 파라미터

    파라미터설명
    -gen:client클라이언트 측 Java 클래스를 생성한다.
    -gen:server서버 측 Java 클래스를 생성한다.
    -gen[-gen:client]와 동일하다.
    -import:client클라이언트 측 Portable Artifact를 생성한다.
    -import:server서버 측 Portable Artifact를 생성한다.
    -import[-import:client]와 동일하다.
    -d결과 파일이 생성될 디렉터리를 지정한다.
    -cd컴파일된 클래스 파일이 생성될 디렉터리를 지정한다.
    -inputmappingJava 클래스를 생성하기 위하여 사용되는 입력 JAX-RPC 매핑 파일을 지정한다.
    -packageWSDL의 모든 Namespace URI에 대한 Java 패키지 이름을 지정한다.
    -ns2pkg NS=PKG

    Namespace URI에 대한 Java 패키지 이름을 지정한다.

    • NS: Namespace URI

    • PKG: Java 패키지 이름

    -outputmapping입력 WSDL에 대한 출력 JAX-RPC 매핑 파일을 지정한다.
    -compile생성된 Java 파일을 컴파일한다.
    -nokeepsrc생성된 Java 소스 파일을 유지하지 않고 삭제한다.
    -nowrappedWSDL에 대한 wrapped 모드 탐지를 사용할 수 없게 한다.
    -datahandleronlyMIME 타입에 대하여 javax.activation.DataHandler를 적용하게 한다.
    -nodatabinding모든 WSDL massage part에 대하여 javax.xml.soap.SOAPElement를 적용하게 한다.
    -soapver

    stub/tie 클래스에서 사용되는 SOAP 버전을 지정한다.

    • 11: SOAP 1.1

    • 12:SOAP 1.2

    -resolveDir원격의 WSDL 파일(스키마 파일 포함)을 접근 가능한 저장소에 저장하고자 할 때 사용한다.
    -usernameWSDL-URI에 접근하기 위한 사용자명이다.
    -passwordWSDL-URI에 접근하기 위한 패스워드이다.
    -level로그 레벨을 지정한다.
    -verbose로그를 화면에 출력한다.
  • 예제

    wsdl2java는 JEUS_HOME\bin\ 디렉터리에 위치한 일반적인 스크립트 파일이다.

    wsdl2java 툴을 실행하는 예는 다음과 같다.

    C:\> wsdl2java -gen:client -d build\classes
    -outputmapping build\classes\web\WEB-INF\jaxrpcmapping.xml
    -compile http://localhost:8088/AddNumbers/addnumbers?wsdl

    위의 명령어는 원격의 "http://localhost:8088/AddNumbers/addnumbers?wsdl" WSDL 문서를 통해 웹 서비스 클라이언트를 위한 Stub 및 서비스 인터페이스들을 생성한다.

    여기에서 Stub 및 서비스 인터페이스들은 "build\classes" 디렉터리에 생성되며 JAX-RPC 매핑 파일은 "build\classes\web\WEB-INF"에 생성된다. "-compile" 옵션으로 생성되는 Stub 및 서비스 인터페이스들은 컴파일이 된다.

4.12. wsdl2uddi

WSDL은 추상적인 인터페이스와 임의의 네트워크 서비스의 프로토콜 바인딩들을 제공함으로써 UDDI 표준을 보완할 수 있다. JEUS UDDI WSDL Publishing은 WSDL2UDDI을 제공한다.

wsdl2uddi 툴은 웹 서비스의 WSDL 파일로부터 UDDI에 Publish할 수 있다.

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    Command Line에서 다음과 같은 Command를 입력한다.

    Usage: wsdl2uddi UDDIVersion WSDLURI [wsdl-options] -uddiInquiry
    UDDIInquiryURI -uddiPublish UDDIPublish -uddiUsername UDDIUsername
    -uddiPassword UDDIPassword [options]
    
    * wsdl-options
        -wsdlUsername          username to access the WSDL-URI
        -wsdlPassword          password to access the WSDL-URI
    
    * options
        -level LEVEL           specify log level.
                                   LEVEL : SEVERE, WARNING, INFO, FINE, FINER,FINEST
        -verbose               same as -level FINE
  • 파라미터

    파라미터설명
    UDDIVersionUDDI의 버전을 설정한다. 입력값은 v2 또는 v3이다.
    WSDLURI실제 WSDL이 존재하는 곳의 URI 값이다.
    -uddiInquiry실제 UDDI의 Inquiry URI 값을 지정한다.
    -uddiPublish실제 UDDI의 publish URI 값을 지정한다.
    -uddiUsernameUDDI에 접근할 때 필요한 사용자명을 설정한다.
    -uddiPasswordUDDI에 접근할 때 필요한 패스워드를 설정한다.
    -level로그 레벨을 지정할 경우 사용한다.
    -verbose로그 레벨 'FINE'과 같다.
  • 예제

    wsdl2uddi는 JEUS_HOME\bin\ 디렉터리에 위치한 일반적인 스크립트 파일이다.

    wsdl2uddi 툴을 실행하는 예는 다음과 같다.

    C:\> wsdl2uddi v3 http://localhost:8088/AddNumbers/addnumbers?wsdl
    -uddiInquiry http://localhost:8088/uddi/inquiry
    -uddiPublish http://localhost:8088/uddi/publish
    -uddiUsername jeus
    -uddiPassword jeus
    -verbose

    위의 명령어는 원격의 "http://localhost:8088/AddNumbers/addnumbers?wsdl" WSDL 문서를 통해 UDDI에 Publish한다. 여기에서 UDDI의 Inquiry 및 Publish URI와 사용자명, 패스워드를 각각 지정해줄 수 있다.

4.13. xjc

xjc 툴은 XML 스키마 파일을 Java 프로그래밍 언어로 된 JAXB Content 클래스들로 변환한다.

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    Command Line에서 다음과 같은 Command를 입력한다.

    Usage: xjc [-options ...] <schema file/URL/dir/jar> ...
               [-b <bindinfo>] ...
    If dir is specified, all schema files in it will be compiled.
    If jar is specified, /META-INF/sun-jaxb.episode binding file will be
    compiled.
    Options:
      -nv                :  do not perform strict validation of the input schema(s)
      -extension         :  allow vendor extensions - do not strictly follow the 
                            Compatibility Rules and App E.2 from the JAXB Spec
      -b <file/dir>      :  specify external bindings files (each <file> must have 
                            its own -b) If a directory is given, **/*.xjb is searched
      -d <dir>           :  generated files will go into this directory
      -p <pkg>           :  specifies the target package
      -httpproxy <proxy> :  set HTTP/HTTPS proxy. Format is
                            [user[:password]@]proxyHost:proxyPort
      -httpproxyfile <f> :  Works like -httpproxy but takes the argument
                            in a file to protect password
      -classpath <arg>   :  specify where to find user class files
      -catalog <file>    :  specify catalog files to resolve external
                            entity references support TR9401, XCatalog,
                            and OASIS XML Catalog format.
      -readOnly          :  generated files will be in read-only mode
      -npa               :  suppress generation of package level annotations
                            (**/package-info.java)
      -no-header         :  suppress generation of a file header with timestamp
      -target 2.0        :  behave like XJC 2.0 and generate code that
                            doesnt use any 2.1 features.
      -xmlschema         :  treat input as W3C XML Schema (default)
      -relaxng           :  treat input as RELAX NG (experimental, unsupported)
      -relaxng-compact   :  treat input as RELAX NG compact syntax
                            (experimental, unsupported)
      -dtd               :  treat input as XML DTD (experimental, unsupported)
      -wsdl              :  treat input as WSDL and compile schemas inside
                            it(experimental,unsupported)
      -verbose           :  be extra verbose
      -quiet             :  suppress compiler output
      -help              :  display this help message
      -version           :  display version information
    
    
    Extensions:
      -Xlocator          :  enable source location support for generated code
      -Xsync-methods     :  generate accessor methods with the
                            'synchronized' keyword
      -mark-generated    :  mark the generated code as @javax.annotation. Generated
      -episode <FILE>    :  generate the episode file for separate compilation
  • 파라미터

    파라미터설명
    -nv이 옵션은 스키마 유효성 검사를 하지 않도록 한다(true|false).
    -extensiontrue값일 경우에 XJC 바인딩 컴파일러는 확장 모드로 실행된다. 기본값은 false이다(true|false).
    -b <file>처리하고자 하는 하나 이상의 외부 바인딩 파일들을 명시한다.
    -d <dir>XJC 바인딩 컴파일러는 기본값으로 현재 디렉터리에 Java Content 클래스들을 생성한다. 이 옵션을 사용하면 다른 디렉터리에 클래스들을 생성할 수 있다.
    -p <pkg>이곳에 명시한 타겟 패키지 명은 어떤 다른 Customization도 Overwrite한다.
    -httpproxy <proxy>HTTP/HTTPS 프록시를 명시한다.
    -classpath <arg><jxb:javaType> 그리고 <xjc:superClass> Customization에 등록된 클라이언트 애플리케이션 클래스들을 찾을 곳을 명시한다.
    -catalog <file>TR9401, XCatalog 그리고 OASIS XML Catalog 포맷에 관한 외부 카탈로그 파일을 명시한다.
    -readOnlytrue값일 경우에 Java 소스 파일들은 읽기 가능 모드이다. 기본값은 false이다(true|false).
    -npapackage-info.java 라는 파일에 패키지 수준의 Annotation 생성을 요약한다.
    -xmlschema입력 스키마를 W3C XML Schema로 제어한다.
    -relaxng입력 스키마로써 RELAX NG를 제어한다.
    -relaxng-compact입력 스키마로써 RELAX NG compact 문법을 제어한다.
    -dtdXML DTD 파일을 컴파일러의 입력 스키마로 사용한다.
    -wsdlWSDL 파일을 입력하여 그 안에 사용되고 있는 스키마 파일들을 컴파일한다.
    -quiet진행 정보 혹은 경고 메시지와 같은 컴파일러 Output 메시지들을 보여주지 않는다.
    -verbose처리 메시지 혹은 에러 메시지들에 대한 정보를 나타낸다.
    -help컴파일러 사용법을 출력한다.
    -version컴파일러 버전을 출력한다.
    <schema file/URL/dir>컴파일하려는 하나 이상의 스키마 파일을 명시한다.
  • 예제

    xjc는 JEUS_HOME\bin\ 디렉터리에 위치한 일반적인 스크립트 파일이다.

    xjc 툴을 실행하는 예는 다음과 같다.

    C:\> xjc -d build\classes -p com.tmaxsoft src\conf\ts.xsd

    위의 명령어는 ts.xsd 스키마 파일로부터 패키지명이 "com.tmaxsoft"인 컴파일된 Java 클래스 파일들을 "build\classes"에 생성한다.

4.14. schemagen

schemagen 툴은 Java 클래스들에 나타나는 각각의 Namespace에 대해 하나의 스키마 파일을 생성한다.

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    Command Line에서 다음과 같은 Command를 입력한다.

    Usage: schemagen [-options ...] <java files>
    Options:
        -d <path>         :  specify where to place processor and javac
                             generated class files
        -cp <path>        :  specify where to find user specified files
        -classpath <path> :  specify where to find user specified files
        -episode <file>   :  generate episode file for separate
                             compilation
        -version          :  display version information
        -help             :  display this usage message
  • 파라미터

    파라미터설명
    -d <path>프로세서와 클래스 파일들의 위치를 명시한다.
    -cp <path>사용자가 명시하는 파일들을 찾을 곳을 명시한다.
    -classpath <path>-cp >path>와 동일하다.
    -episode <file>분리되어 컴파일을 진행하기 위한 episode 파일들을 생성한다.
    -version버젼 정보를 출력한다.
    -help사용법을 출력한다.
  • 예제

    schemagen는 JEUS_HOME\bin\ 디렉터리에 위치한 일반적인 스크립트 파일이다.

    schemagen 툴을 실행하는 예는 다음과 같다.

    C:\> schemagen -d build\classes src\java\cardfile\Address.java

    위의 명령어는 Root Element에 해당하는 Address.java 소스 파일로 부터 "build\classes" 디렉터리에 스키마를 생성한다.

4.15. tcpmon

본 절에서는 tcpmon 툴에 대해 설명한다.

4.15.1. 실행

tcpmon 프로그램은 송수신하는 TCP 패킷을 조회하는 프로그램이다. tcpmon은 HTTP의 SOAP 메시지를 조회할 때 사용한다.

다음과 같이 tcpmon을 실행한다.

C:\jeus\bin> tcpmon

다음은 tcpmon을 실행했을 때 나타나는 화면이다.

[그림 4.1] tcpmon 실행 화면

tcpmon 실행 화면

tcpmon은 다음의 2가지 모드로 동작한다.

  • Listener

    tcpmon이 listen port로 요청을 받아서 지정된 target host와 target port로 받은 요청을 다시 전송하고 응답을 받아서 원래 요청한 커넥션으로 응답을 전송한다.

  • Proxy

    tcpmon을 일반적인 HTTP Proxy처럼 동작하게 한다.

4.15.2. Listener 모드의 사용

Listener 모드를 사용하기 위해서 다음과 같은 시나리오를 가정한다.

  • 서버(A)는 8000번 Port로 SOAP 요청을 받아들인다.

  • 클라이언트(B)의 웹 서비스 클라이언트가 송수신하는 SOAP 메시지를 모니터링하고자 한다.

[그림 4.2] 서버(A)가 8000번 포트로 SOAP 요청을 받아들이는 시나리오

서버(A)가 8000번 포트로 SOAP 요청을 받아들이는 시나리오


이 경우 웹 서비스 클라이언트 프로그램에서는 tcpmon을 사용하여 SOAP 메시지를 모니터링할 수 있다.

클라이언트(B)에서 tcpmon을 실행한 뒤 다음과 같이 설정한다.

  1. [Admin] 탭에서 'Listen Port''Act as a'를 각각 다음과 같이 설정한 후 [Add] 버튼을 클릭한다.

    • Listen Port : 9000

    • Act as a : Listener 선택

      - Target Hostname : A

      - Target Port : 8000

    [그림 4.3] Listener 모드 입력 화면

    Listener 모드 입력 화면

  2. 다음과 같이 [Port 9000] 탭이 생성된다. 이 탭을 클릭하면 다음과 같은 화면이 나타난다.

    [그림 4.4] 모니터링 화면

    모니터링 화면

    화면의 체크 박스와 각 버튼에 대한 설명이다.

    구분설명
    XML FormatXML Format 체크 박스는 XML을 보기 좋은 형태로 정렬하여 TCPMON 화면에 출력한다.
    Save[Save] 버튼을 사용하여 현재 SOAP 메시지를 저장할 수 있다.
    Resend현재 Request SOAP 메시지를 재전송한다.
    Switch Layout메시지 출력 화면의 가로/세로 분할 모드를 바꾼다.
  3. 이렇게 설정한 후 클라이언트 프로그램에서 서버(A)의 8000번에 접속하는 대신 클라이언트(B)의 9000번에 접속하도록 한 후 클라이언트 프로그램을 실행하면 tcpmon이 9000번으로 들어온 요청을 받아서 서버(A)의 8000번 Port로 전송 후 응답을 받아서 클라이언트가 tcpmon에 연결한 커넥션의 응답으로 돌려주고 송수신한 메시지를 tcpmon에 출력한다.

    [그림 4.5] tcpmon이 9000번으로 들어온 요청을 받아서 A의 8000번 Port로 전송

    tcpmon이 9000번으로 들어온 요청을 받아서 A의 8000번 Port로 전송


tcpmon을 Listener 모드로 사용하는 경우 웹 서비스의 end-point 주소를 바꾸기 위해서 클라이언트 프로그램이나 클라이언트의 설정을 변경할 필요가 있다.

  • J2SE 웹 서비스 클라이언트의 경우

    접속하려는 웹 서비스의 end-point 주소를 바꾸기 위해서는 다음 예와 같이 코드를 수정한다.

    ((javax.xml.rpc.Stub)port)._setProperty(
          javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY,
          “http://localhost:9000/ws/AddressBookService”);
    • port

      서비스 end-point 인터페이스에 대한 JAX-RPC Stub 객체이다.

    • javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY

      end-point 주소를 지정하기 위한 JAX-RPC 스펙에서 정의한 표준 속성이다.

  • J2EE 웹 서비스 클라이언트의 경우

    코드 수정 없이 JEUS 설정파일(jeus-web-dd.xml 또는 jeus-ejb-dd.xml)을 <service-client>에 <stub-property>를 추가하여 위의 속성을 적용할 수 있다.

    <service-client>
        <port-info>
            <stub-property>
                <name>javax.xml.rpc.service.endpoint.address</name>
                <value>
                    http://localhost:9000/ws/AddressBookService
                </value>
            </stub-property>
        </port-info>
    </service-client>

4.15.3. Proxy모드의 사용

Proxy 모드는 tcpmon을 일반적인 HTTP Proxy처럼 동작하게 한다. Proxy 모드는 [Admin] 탭에서 'Listen Port'를 입력하고 'Act as a'Proxy를 선택하고 [Add] 버튼을 클릭해서 사용한다.

Proxy 모드의 경우 애플리케이션을 수정하지 않고 애플리케이션을 실행할 때 옵션을 설정하여 tcpmon을 사용할 수 있다. 이때 다음의 2가지 옵션을 사용한다.

  • -Dhttp.proxyHost

    TCPMON이 수행되고 있는 Host명 또는 IP 주소를 입력한다.

  • -Dhttp.proxyPort

    TCPMON의 Listen Port를 입력한다.

클라이언트 애플리케이션이 com.acme.AddressBookClient 클래스인 경우 다음과 같이 옵션을 설정하여 java를 실행한다.

java –Dhttp.proxyHost=B –Dhttp.proxyPort=9000 com.acme.AddressBookClient

4.15.4. 기타 기능

각 Port별 탭에서 SOAP메시지를 formatting하거나 저장 또는 재전송을 할 수 있다.