내용 목차
본 장에서는 JEUS에서 사용하는 콘솔 툴의 종류와 사용법에 대해 설명한다.
다음은 JEUS에서 사용하는 콘솔 툴의 목록이다.
기타 툴
콘솔 툴 | 설명 |
---|---|
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 메시지를 조회할 수 있다. |
본 절에서는 JEUS의 관리 툴인 jeusadmin의 명령어와 그 사용법에 대해서 설명한다.
jeudadmin은 JEUS를 직접 관리하기 위해 사용하는 콘솔 툴이다. 이 툴을 사용하면 JEUS, 엔진, 엔진 컨테이너의 기동과 종료와 같은 기본적인 관리 작업을 할 수 있으며 애플리케이션의 Deploy/Undeploy와 logger 레벨 변경 작업, JMX MBean 목록 조회 등 여러 가지 주요 작업을 실행할 수 있다.
또한 JEUS 6부터는 JEUS 5에서 별도로 실행되던 ejbadmin, webadmin 등 기존의 여러 콘솔 툴이 jeusadmin으로 통합되었다. 각 절에서는 jeusadmin 명령어의 성격에 따라 그룹화하여 설명한다.
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 명령의 도움말과 명령어 목록을 조회한다.
|
[-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 =============================================================
jeusadmin에서 사용하는 공통 명령어의 사용법과 파라미터, 예제를 설명한다.
본 절에서는 공통 명령어를 종류별로 분류하여 간단히 설명한다.
범용 명령어
명령어 | 설명 |
---|---|
help | 명령들에 대한 도움말을 출력한다. |
p | 바로 이전에 실행했던 명령어를 실행한다. |
setProperty | 현재 실행되고 있는 jeusadmin의 프로퍼티를 설정한다. |
unsetProperty | 현재 실행되고 있는 jeusadmin에 설정된 프로퍼티를 삭제한다. |
status | JEUS Manager 및 엔진 컨테이너의 현재 상태를 특정값으로 리턴한다. |
JEUS Manager 명령어
명령어 | 설명 |
---|---|
jeusexit | 현재 접속한 JEUS Manager를 종료한다. |
suspend-webadmin | JEUS Manager의 WebAdmin을 일시 정지시킨다. |
resume-webadmin | JEUS Manager의 WebAdmin을 재가동한다. |
노드 및 그룹 명령어
명령어 | 설명 |
---|---|
boot | JEUSMain.xml에서 설정 정보를 읽어와 JEUS를 기동한다. |
down | JEUS를 종료한다. |
nodelist | JEUS 시스템에서 활성화 중인 노드의 목록을 출력한다. |
allnodelist | 클러스터 내의 모든 노드의 목록을 출력한다. |
pidlist | 현재 jeusadmin이 접속된 노드의 매니저 프로세스와 각 엔진 컨테이너의 프로세스 ID 목록을 출력한다. |
엔진 컨테이너 명령어
엔진 명령어
명령어 | 설명 |
---|---|
englist | 엔진 목록을 출력한다. |
allenglist | 해당 노드의 모든 엔진 목록을 출력한다. |
애플리케이션 및 Deploy 명령어
스레드 명령어
명령어 | 설명 |
---|---|
ti | 요청을 처리하는 서블릿 스레드와 EJB RMI 스레드의 정보를 출력한다. |
strace | 서블릿 또는 EJB RMI의 Thread Stack Trace를 조회한다. |
interrupt-thread | 서블릿 또는 EJB RMI 스레드에 인터럽트 시그널을 전송한다. |
Logging 명령어
명령어 | 설명 |
---|---|
loglevel | 지정된 노드나 컨테이너의 지정된 Logger와 핸들러에 대한 레벨을 출력하거나, 새로운 레벨을 설정한다. |
기타 명령어
명령어 | 설명 |
---|---|
connect | 클러스터링 된 다른 노드에 접속하여 jeusadmin 명령을 수행한다. |
dump | JEUS Manager 프로세스의 스레드 덤프를 출력한다. 이때 덤프는 JEUS Manager 프로세스의 콘솔창에 출력된다. |
ftp | 파일을 다른 위치로 옮길 때 사용한다. |
gc | Garbage Collection을 실행한다. |
jndi | 바인딩 되어 있는 객체의 정보를 출력한다. |
jndilist | jndi 컨텍스트에 바인드 되어 있는 객체의 바인딩 이름 목록을 출력한다. |
mbeanlist | JEUS에 존재하는 MBean들의 목록을 출력한다. |
p | JEUS 프로세스의 메모리 정보를 출력한다. |
rftp | 파일을 다른 위치로 옮길 때 사용한다. |
명령들에 대한 도움말을 출력한다. 각 명령에 대한 설명과 이름, Alias, 사용법, 파라미터에 대한 설명을 포함한다.
사용법
help(h) [-l] [-a] [-g group_name] [command]
파라미터
파라미터 | 설명 |
---|---|
[-l] | 모든 명령어에 대한 간단한 설명을 출력한다. 다른 옵션없이 help 명령어만 사용할 경우에는 help 명령에 대한 설명과 명령어의 목록만 출력한다. |
[-a] | 모든 명령어에 대한 자세한 도움말을 출력한다. 이 옵션을 사용하면 각 명령어에 대한 자세한 설명을 모두 출력한다. |
[-g group_name] | 주어진 그룹(group_name)에 해당하는 명령어에 대한 목록을 출력한다. 명령어 그룹 목록은 다음과 같다.
|
[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
바로 이전에 실행했던 명령어를 실행한다.
사용법
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
현재 실행되고 있는 jeusadmin의 프로퍼티를 설정한다.
사용법
setProperty(s) [key] [value]
파라미터
파라미터 | 설명 |
---|---|
[key] | 프로퍼티의 키이다(키를 입력하지 않으면, 현재 설정된 모든 프로퍼티들을 출력한다).
|
[value] | 프로퍼티의 Value이다. 여러 개의 값을 설정할 경우에는 각각의 값들을 콤마(,)로 구분하여 입력한다(구분자로 콜론(:)과 세미콜론(;)도 지원한다). Value를 입력하지 않으면, 입력한 키에 대한 프로퍼티 Value를 출력한다. |
예제
johan>setProperty container.name johan_container1 johan>setProperty container.name johan_container1
현재 실행되고 있는 jeusadmin에 설정된 프로퍼티를 삭제한다.
사용법
unsetProperty(us) [key] [value]
파라미터
파라미터 | 설명 |
---|---|
[key] | 프로퍼티의 키이다. 키를 입력하지 않으면, 현재 설정된 모든 프로퍼티들을 출력한다.
|
[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
JEUS Manager 및 엔진 컨테이너의 현재 상태를 특정값으로 리턴하는 명령이다.
사용법
status [-manager] [-con container_name] [-total]
파라미터
파라미터 | 설명 |
---|---|
[-manager] | JEUS Manager의 상태를 리턴한다. 정해진 상태값은 다음과 같다.
위 상태에 대한 자세한 설명은 “JEUS Server 안내서”의 “1.3.2. JEUS Manager의 Life Cycle”을 참조한다. |
[-con container_name] | 주어진 엔진 컨테이너의 상태를 리턴한다. 정해진 상태값은 다음과 같다.
위 상태에 대한 자세한 설명은 “JEUS Server 안내서”의 “1.4.3. 엔진 컨테이너의 Life Cycle”을 참조한다. |
[-total] | <start-on-boot>가 true인 전체 엔진 컨테이너들의 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
현재 접속한 JEUS의 JEUS Manager를 종료한다. 만약 JEUS 노드가 종료 상태(down)가 아니라면, down 명령을 수행하여 각 엔진 컨테이너를 종료한 후에 JEUS Manager를 종료한다.
사용법
jeusexit [-all]
파라미터
파라미터 | 설명 |
---|---|
[-all] | 현재 접속하고 있는 JEUS Manager가 속한 클러스터의 모든 JEUS Manager를 종료한다. |
예제
johan>jeusexit
johan jeusexit successful
JEUS Manager에서 사용 중인 WebAdmin을 일시 정지시킨다. 단, 일시 정지하더라도 이미 연결되어 있던 웹 브라우저는 계속 화면이 나올 수 있다.
사용법
suspend-webadmin
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
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.
JEUS 시스템에서 활성화 중인 노드의 목록을 출력한다.
사용법
nodelist [-a]
파라미터
파라미터 | 설명 |
---|---|
[-a] | jeusadmin이 접속 중인 노드 목록에 대해 nodelist 명령을 반복적으로 실행해서 클러스터의 각 노드의 관점에서의 노드 목록을 출력한다. |
예제
johan>nodelist johan johan1[backup] johan>nodelist -a [ johan ] johan tmax [ tmax ] johan tmax
클러스터 내 모든 노드의 목록을 출력한다.
사용법
allnodelist(grlist)
예제
johan>allnodelist
johan
tmax
현재 jeusadmin이 접속된 노드의 Manager 프로세스와 각 엔진 컨테이너의 프로세스 ID 목록을 출력한다.
사용법
pidlist [-a]
파라미터
파라미터 | 설명 |
---|---|
[-a] | jeusadmin이 접속 중인 노드 목록에 대해 pidlist 명령을 실행해서 클러스터의 각 노드에 대해 프로세스 ID 목록을 출력한다. |
예제
johan>pidlist
__________________________________________________________________________
| for the node johan |
| node : johan | pid : 19139 |
| container : johan_container1 | pid : 19196 |
--------------------------------------------------------------------------
엔진 컨테이너를 실행(시작)한다.
사용법
startcon [container_name]
파라미터
파라미터 | 설명 |
---|---|
[container_name] | 실행(시작)할 엔진 컨테이너의 이름이다. (기본값: 엔진 컨테이너 이름을 입력하지 않는 경우에는 현재 노드의 모든 컨테이너를 실행(시작)한다.) |
예제
johan>startcon johan_container1
Succeeded to start johan_container1.
엔진 컨테이너를 종료한다.
사용법
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.
활성화된 엔진 컨테이너의 목록을 인덱싱하여 출력한다.
사용법
conlist [node_name]
파라미터
파라미터 | 설명 |
---|---|
[node_name] | 해당 노드의 모든 컨테이너 목록을 출력한다. |
예제
johan>conlist
container list of the node johan
[1] johan_container1
[2] johan_container2
엔진 컨테이너 환경변수(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
엔진 목록을 출력한다.
사용법
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
해당 노드의 모든 엔진 목록을 출력한다.
사용법
allenglist [node_name] [engineType]
파라미터
파라미터 | 설명 |
---|---|
[node_name] | 엔진 목록을 출력할 노드의 이름이다. |
[engineType] | 주어진 엔진의 종류에 해당하는 엔진을 출력한다.
|
예제
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
========================================
디플로이하려는 애플리케이션을 각 엔진 컨테이너 디렉터리(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]
파라미터
“4.2.3.21. deploy” 명령어의 파라미터와 동일하다.
예제
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
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] |
|
[-keep]|[-nkeep] |
|
[-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_name | APP_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 ... ...
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] | 제거될 애플리케이션의 애플리케이션 또는 모듈의 종류를 지정한다. 지정된 종류의 애플리케이션 또는 모듈만 제거한다.
|
[-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)
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] | 다시 디플로이하려는 애플리케이션 또는 모듈의 종류를 지정한다. 디플로이된 애플리케이션과 모듈 중에 지정된 종류의 것만 다시 디플로이한다.
|
[-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>
start 명령어는 정지(stopped) 상태에 있는 애플리케이션을 실행한다. start 명령어를 실행한 후의 애플리케이션의 상태는 실행 중(running)이 된다.
사용법
start [-con container_name] [-mod module_type] [-r] ([-n application_name]|[module_name])
파라미터
파라미터 | 설명 |
---|---|
[-con container_name] | 시작하려는 애플리케이션이 디플로이된 엔진 컨테이너 이름을 설정한다. (기본값: 모든 엔진 컨테이너를 대상 설정) |
[-mod module_type] | 시작하려는 애플리케이션 또는 모듈의 종류를 지정한다. 디플로이된 애플리케이션과 모듈 중에 지정된 종류만 시작한다.
|
[-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
stop 명령어는 실행 중(running) 상태에 있는 애플리케이션을 정지시킨다. start 명령어를 실행시킨 후의 애플리케이션의 상태는 정지(stopped)가 된다.
사용법
stop [-con container_name] [-mod module_type] [-r] ([-n application_name]|[module_name])
파라미터
파라미터 | 설명 |
---|---|
[-con container_name] | 정지하려는 애플리케이션이 디플로이된 컨테이너 이름을 설정한다. |
[-mod module_type] | 정지하려는 애플리케이션 또는 모듈의 종류를 지정한다. 디플로이된 애플리케이션과 모듈 중에 지정된 종류의 것만 정지한다.
|
[-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
현재 디플로이된 애플리케이션의 목록을 출력한다.
출력되는 정보는 애플리케이션(모듈)의 이름, 애플리케이션의 종류, 애플리케이션이 디플로이된 컨테이너와 노드 이름, 애플리케이션의 상태이다.
사용법
applist [-con container_name] [-mod module_type] [-r] [-more] ([-n application_name]|[module_name])
파라미터
파라미터 | 설명 |
---|---|
[-con container_name] | 애플리케이션이 디플로이된 컨테이너 이름을 설정한다. 이 컨테이너에 있는 애플리케이션 목록을 출력한다. (기본값: 모든 엔진 컨테이너를 대상으로 설정) |
[-mod module_type] | 출력할 애플리케이션 또는 모듈의 타입을 지정한다. 디플로이된 애플리케이션과 모듈 중에 지정된 타입만 출력한다.
|
[-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) |
EJBModule | EJB 모듈(.jar) |
AppClientModule | 애플리케이션 클라이언트 모듈(.jar) |
ResourceAdapterModule | 리소스 어댑터 모듈(.rar) |
애플리케이션 상태(state)
애플리케이션 상태 | 설명 |
---|---|
starting | distribute가 성공적으로 이루어진 후 애플리케이션의 서비스를 위해 start되고 있는 상태이다. |
running | start(deploy)가 성공적으로 이루어져 애플리케이션이 서비스를 할 수 있는 상태이다. |
stopping | 애플리케이션의 서비스를 중지하기 위해 stop되고 있는 상태이다. |
stopped | stop이 성공적으로 완료되어 애플리케이션이 서비스를 할 수 없는 상태이다. |
failed | 애플리케이션 디플로이에 실패한 상태이다. |
요청을 처리하는 서블릿 스레드와 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 스레드에 대한 모든 정보를 출력)
|
- [-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] | 특정 상태의 스레드의 정보만 보고 싶을 때 사용하며, 서블릿 스레드에 대해서만 유효하다.
|
[-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>
서블릿 또는 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)
서블릿 또는 EJB RMI 스레드에 인터럽트 시그널을 전송한다. 스레드에 인터럽트 시그널을 보냈을 때의 결과에 대한 자세한 설명은 “JEUS Server 안내서”의 “3.2.2. Thread 제어”를 참고한다.
이 기능은 현재 실험적으로 제공하는 것이므로 사용에 주의한다.
사용법
interrupt-thread [-con container_name] [-f] tid
파라미터
파라미터 | 설명 |
---|---|
[-con container_name] | Target Thread가 존재하는 엔진 컨테이너를 지정한다. (기본값: 현재 접속한 노드에 엔진 컨테이너가 하나일 경우 그 엔진 컨테이너를 대상으로 설정) |
[-f] | 실제로 인터럽트 시그널을 전송하기 전에 “y/n” 확인을 무시하고 진행한다. |
tid | Target 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
지정된 노드나 컨테이너의 지정된 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] | 새로 설정할 레벨이다.
|
예제
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
클러스터링 된 다른 노드에 접속하여 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>
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
파일을 다른 위치로 이동한다.
사용법
ftp source ftpRoot:/destination
파라미터
파라미터 | 설명 |
---|---|
source | 이동할 소스 파일이다. |
ftpRoot:/destination | ftpRoot는 다음 중 하나이다.
|
예제
johan>ftp c:\MyApp.ear web:/app_home/MyApp.ear
c:\MyApp.ear -> web:/app_home/MyApp.ear ftp successful
Garbage Collection을 실행한다.
사용법
gc [container_name]
파라미터
파라미터 | 설명 |
---|---|
[container_name] | Garbage Collection을 실행할 엔진 컨테이너를 설정한다. (기본값: JEUS Manager에 Garbage Collection을 실행) |
예제
johan>gc johan>gc johan_container1
바인딩 되어 있는 객체의 정보를 출력한다.
사용법
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
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
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
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.33. ftp”와 기능은 동일하지만 소스측에 "ftpRoot"를 사용하는 점이 다르다.
사용법
rftp ftpRoot:/source destination
파라미터
파라미터 | 설명 |
---|---|
ftpRoot:/source | ftpRoot는 다음 중 하나이다.
|
destinatioin | 파일을 이동할 위치이다. |
예제
johan>rftp web:/app_home/MyApp.ear c:\MyApp.ear
web:/app_home/MyApp.ear -> c:\MyApp.ear ftp performed
EJB 엔진 관련 명령어의 목록은 다음과 같다.
명령어 | 설명 |
---|---|
compile | EJB 모듈을 컴파일한다. |
beanlist | EJB Bean의 목록을 조회한다. |
moduleinfo | EJB 모듈의 정보를 조회한다. |
리모트(remote)에 있는 jeus machine의 EJB 모듈을 컴파일할 때 사용한다. 로컬에 있는 모듈 외에 리모트의 모듈을 컴파일하기 위한 appcompiler이므로 자세한 사용법은 “4.4. appcompiler”를 참조한다.
사용법
compile command
파라미터
파라미터 | 설명 |
---|---|
command | appcompiler의 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
-----------------------------------------------------------------
지정한 모듈에 포함된 모든 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
모듈에 대한 모니터링 정보를 보여준다.
사용법
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
...
서블릿 엔진 관련 명령어의 목록은 다음과 같다.
명령어 | 설명 |
---|---|
info | 디플로이된 컨텍스트들의 일반적인 정보를 조회한다. |
webreload | 특정 컨텍스트 그룹, 컨텍스트를 동적으로 Reload한다. |
webresume | 일시 중지된 컨텍스트 그룹, 컨텍스트, 서블릿 등을 재시작한다. |
websuspend | 컨텍스트 그룹, 컨텍스트, 서블릿 등을 일시중지 한다. |
webtob | WebtoB Listener를 시작 또는 중지한다. |
clrstat | 컨텍스트 그룹, 컨텍스트, 서블릿 등의 요청 통계 자료를 초기화한다. |
setcfg | 웹 컨테이너 관련 설정을 동적으로 변경한다. |
cfg | 웹 컨테이너 관련 설정 정보를 조회한다. |
stat | 웹 컨테이너 관련 각종 통계 자료를 조회한다. |
다음은 서블릿 엔진 관련 명령어에서 공통적으로 적용되는 옵션에 대한 설명이다.
[-con container_name] 옵션
모든 명령어에 포함되어 있는 이 옵션은 각 명령어가 적용될 컨테이너를 지정할 때 사용하는 옵션이다. 옵션을 설정하지 않으면 현재 설정된 컨테이너에 각 명령어가 적용된다. 해당 명령어에 한해서 임시적으로 컨테이너를 지정하고 싶을 때 이 옵션을 사용하고, 컨테이너를 계속 지정하고 싶으면 setProperty 명령어를 사용해서 지정한다.
각 명령어의 옵션 설명에서 이 옵션에 대한 설명은 생략한다.
디플로이된 컨텍스트 그룹(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
디스크로부터 지정한 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>
일시 중지된 컨텍스트 그룹, 컨텍스트, 서블릿 등을 재시작한다.
사용법
webresume [-con container_name][ContextGroup[Context[Servlet]]]
파라미터
파라미터 | 설명 |
---|---|
[ContextGroup] | 중지된 컨텍스트 그룹 중에서 다시 시작할 컨텍스트 그룹이다. |
[Context] | 중지된 컨텍스트 중에서 다시 시작할 컨텍스트이다. 컨텍스트 그룹이 설정되어 있어야 한다. |
[Servlet] | 중지된 서블릿 중에서 다시 시작할 서블릿이다. 컨텍스트 그룹, 컨텍스트가 설정되어 있어야 한다. |
예제
johan>webresume MyGroup
resume successful
johan>
지정한 컨텍스트 그룹, 컨텍스트, 서블릿을 중지하여 클라이언트의 이용을 중지한다.
사용법
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>
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
지정한 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
콘솔에서 웹 컨테이너에 대한 설정을 동적으로 변경하기 위한 명령어이다. 변경된 정보는 운영되고 있는 상태에만 적용되며 설정 파일에는 반영되지 않는다는 점에 주의한다. 그러므로 다음 구동시에도 적용하려면 반드시 설정 파일을 변경하여야 한다.
사용법
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
웹 컨테이너에 대한 설정 정보를 조회한다. 이 명령어를 실행하여 조회되는 구성 항목과 필드들에 대한 정보는 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>
구동 중인 웹 컨테이너의 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>
JEUS에 구성된 Connection Pool을 모니터링하거나 제어할 수 있다. JCA Connection Pool 뿐만 아니라 DB Pool도 사용 가능하다. dsinfo 등과 같은 기존 명령도 사용 가능하나 되도록이면 이 명령을 사용하길 권장한다.
Connection Pool 모니터링과 제어 명령어의 목록은 다음과 같다.
명령어 | 설명 |
---|---|
list-connection-pool | Connection Pool 또는 커넥션 정보를 조회한다. |
control-connection-pool | Connection Pool을 제어한다. |
JEUS 5.x 버전부터는 JDBC 데이터소스에 대해서 lookup이 완료된 후에 DB 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
엔진 컨테이너에 있는 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
JEUS에 구성된 DB Connection Pool을 모니터링하거나 제어할 수 있다.
DB Connection Pool 관련 명령어의 목록은 다음과 같다.
명령어 | 설명 |
---|---|
createds | JDBC 데이터소스의 Connection Pool을 생성한다. |
refreshds | JDBC 데이터소스의 Connection Pool을 갱신한다. |
testdsconfig | JDBC 데이터소스 설정을 테스트한다. |
dsinfo | JDBC 데이터소스 정보를 조회한다. |
dsconinfo | JDBC 데이터소스 커넥션 정보를 조회한다. |
enableds | JDBC 데이터소스의 Connection Pool을 활성화한다. |
cdisableds | JDBC 데이터소스의 Connection Pool을 비활성화한다. |
shrinkds | JDBC 데이터소스의 Connection Pool의 idle 커넥션을 삭제한다. |
reconfigds | JDBC 데이터소스의 Connection Pool을 재구성한다. |
controlcds | 클러스터 데이터소스를 제어한다. |
1. JEUS v6.0 Fix#7부터는 새로운 Connection Pool 명령을 제공하므로 가능하면 그것을 사용하기 바란다. 이에 관한 자세한 사항은 “4.2.6. Connection Pool 모니터링과 제어 명령어”를 참조한다.
2. JEUS v5.0부터는 애플리케이션이 JDBC 데이터소스를 lookup한 이후에 DB Pool이 구성된다.
해당 JDBC 데이터소스의 Connection Pool을 생성한다.
사용법
createds [-con container_name] data-source-id
파라미터
파라미터 | 설명 |
---|---|
[-con container_name] | JDBC 데이터소스가 존재하는 엔진 컨테이너 이름을 설정한다. |
data-source-id | JEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다. |
예제
johan>createds -con johan_container1 datasource1
해당 JDBC 데이터소스의 Connection Pool의 커넥션들을 모두 버리고 설정된 최솟값만큼 다시 커넥션을 맺는다.
사용법
refreshds [-con container_name] data-source-id
파라미터
파라미터 | 설명 |
---|---|
[-con container_name] | JDBC 데이터소스가 존재하는 컨테이너 이름을 설정한다. |
data-source-id | JEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다. |
예제
johan>refreshds -con johan_container1 datasource1
데이터소스의 설정을 변경하고 테스트할 때 이용한다. JEUSMain.xml의 설정을 변경한 후 이용한다.
사용법
testdsconfig data-source-id
파라미터
파라미터 | 설명 |
---|---|
data-source-id | JEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다. |
예제
johan>testdsconfig johan_datasource
지정한 엔진 컨테이너 내에 등록된 모든 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
지정한 엔진 컨테이너 내에 존재하는 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-id | JEUSMain.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
해당 JDBC 데이터소스의 Connectio Pool을 활성화한다.
사용법
enableds [-con container_name] data-source-id
파라미터
파라미터 | 설명 |
---|---|
[-con container_name] | JDBC 데이터소스가 존재하는 컨테이너 이름을 설정한다. |
data-source-id | JEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다. |
예제
johan>enableds -con johan_container1 datasource1
해당 JDBC 데이터소스의 Connection Pool을 비활성화한다.
사용법
disableds [-con container_name] data-source-id
파라미터
파라미터 | 설명 |
---|---|
[-con container_name] | JDBC 데이터소스가 존재하는 컨테이너 이름을 설정한다. |
data-source-id | JEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다. |
예제
johan>disableds -con johan_container1 datasource1
Idle 커넥션을 삭제하여 Connection Pool의 크기를 줄인다.
사용법
shrinkds [-con container_name] data-source-id
파라미터
파라미터 | 설명 |
---|---|
[-con container_name] | JDBC 데이터소스가 존재하는 컨테이너 이름을 설정한다. |
data-source-id | JEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다. |
예제
johan>shrinkds -con johan_container1 datasource1
지정된 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-id | JEUSMain.xml에서 설정한 <data-source-id>를 입력한다. 이것을 설정하지 않은 경우에는 <export-name>을 입력한다. |
예제
johan>reconfigds -con johan_container1 -min 5 -max 7 datasource1
클러스터 데이터소스를 수동으로 제어할 수 있는 기능을 제공한다. 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-id | JEUSMain.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
트랜잭션 관련 명령어의 목록은 다음과 같다.
리소스 매니저를 복구한다.
사용법
tmresync [-con container_name] resource_type export_name [connector_module_name]
파라미터
파라미터 | 설명 |
---|---|
[-con container_name] | 트랜잭션 매니저가 존재하는 컨테이너 이름을 설정한다. |
resource_type | 복구할 리소스 타입이다. 각 타입은 다음과 같다.
|
export_name | 리소스의 export_name 이다. |
[connector_module_name] | 리소스가 Connector인 경우에는 해당 Connector Module의 이름을 설정한다. |
예제
johan>tmresync -con johan_container1 sql johan_source
여러 상태의 트랜잭션들을 모니터링한다.
사용법
txlist [-con container_name] [-transaction_type]
파라미터
파라미터 | 설명 |
---|---|
[-con container_name] | 트랜잭션 매니저가 존재하는 컨테이너 이름을 설정한다. |
[-transaction_type] | 모니터링할 트랜잭션 타입이다. 각 타입은 다음과 같다.
|
예제
johan>txlist -con johan_container1 -inflight
본 절에서는 보안과 관련된 명령어에 대해 설명한다.
보안과 관련 명령어는 각각 Subject, 그룹, Policy 관리 및 보안 체크 명령어로 분류되고, 목록은 다음과 같다.
Subject 관리 명령어
Subject 관리 명령어는 Subject를 추가, 수정, 삭제할 때 사용한다.
명령어 | 설명 |
---|---|
addsubject | 새로운 Subject를 추가한다. |
removesubject | Subject를 삭제한다. |
getsubjectnames | 로그인된 사용자명 목록을 조회한다. |
getsubject | Subject에 대한 정보를 조회한다. |
setpassword | 패스워드를 설정한다. |
locksubject | 특정 Subject에 Lock을 설정한다. |
unlocksubject | 특정 Subject에 설정된 Lock을 해제한다. |
setsubjectexpiration | Subject에 대한 만료시간을 설정한다. |
clearsubjectexpiration | 설정된 Subject에 대한 만료시간을 해제한다. |
addprincipal | Subject에 Principal을 추가한다. |
removeprincipal | Subject에서 Principal을 삭제한다. |
setsubjectdescription | Subject에 대한 설명을 추가한다. |
addcredential | Subject에 Custom Credential을 추가한다. |
removecredential | Subject에서 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를 조회한다. |
getpolicyids | policy 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 | 특정 리소스에 대한 권한이 있는지 체크한다. |
다음은 보안 관련 명령어에서 공통적으로 적용되는 옵션에 대한 설명이다.
[-domain domain_name] 옵션
JEUS에서 보안이 적용되는 범위인 도메인을 지정한다. 기본값으로 SYSTEM_DOMAIN이 사용된다. SYSTEM_DOMAIN, DEFAULT_APPLICATION_DOMAIN, SHARED_DOMAIN이 제공되며, custom 도메인 설정도 가능하다. 도메인에 대한 자세한 내용은 "JEUS Security 안내서"를 참고한다.
각 명령어의 옵션 설명에서 이 옵션에 대한 설명은 생략한다.
보안 시스템에 새로운 Subject를 추가한다. 주어진 사용자명은 현재 도메인 내에서 유일해야 한다("getsubjectnames"명령어로 확인 가능). 사용자명은 일련의 호출 과정에서 특정 Subject를 참조하기 위해 사용한다. 즉 Subject 대한 ID에 해당된다.
사용법
addsubject user_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
user_name | 사용자명이다. |
예제
johan>addsubject johan
Added Subject johan
현재 도메인에서 이미 존재하고 있는 Subject를 삭제한다.
사용법
removesubject user_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
user_name | 사용자명이다. |
예제
johan>removesubject johan
Removed Subject johan
현재 도메인에 로그인된 모든 사용자명(Subject명) 목록을 조회한다.
사용법
getsubjectnames [-domain domain_name]
예제
johan>getsubjectnames -domain SYSTEM_DOMAIN 1. johan 2. administrator Got 2 Subject names
주어진 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}]
주어진 Subject에 대한 패스워드를 설정한다. 패스워드는 어떤 암호화나 인코딩없는 일반 문자로 설정해야 한다.
이 명령어는 해당 Subject에 이전에 설정되었던 모든 패스워드를 삭제한다.
사용법
setpassword user_name plain_password [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
user_name | 사용자명이다. |
plain_password | 사용자 패스워드이다. |
예제
johan>setpassword johan johan
Password set for johan
이 명령어는 특정 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
"locksubject"로 설정했던 Lock을 해제한다.
사용법
unlocksubject user_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
user_name | 사용자명이다. |
예제
johan>unlocksubject johan
Unlocked johan
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}]
“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}]
특정 Subject에 새로운 Principal을 설정한다(선택 사항). 새로운 Principal은 Subject에 대한 user name일 수도 있고, 만약 하나 이상의 Subject 에 동일한 Principal이 부여되어 있다면, Subject group명일 수도 있다.
사용법
addprincipal user_name principal_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
user_name | 사용자명이다. |
principal_name | Principal 이름이다. |
예제
johan>addprincipal jeus johan
Added principal johan to Subject jeus
Subject에서 Principal을 삭제한다. "addprincipal"로 추가된 Principal을 삭제할 때 사용한다.
사용법
removeprincipal user_name principal_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
user_name | 사용자명이다. |
principal_name | Principal 이름이다. |
예제
johan>removeprincipal jeus johan
Removed principal johan from Subject jeus
사용자명이 나타내는 Subject에 대한 설명을 추가한다. 만약 설명문 내에 공백이 포함되어 있다면 " " 안에 입력해야 한다.
사용법
setsubjectdescription user_name "description" [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
user_name | 사용자명이다. |
description | subject에 대한 설명이다. 공백이 있을 경우 " " 안에 입력해야 한다. |
예제
johan>setsubjectdescription jeus "jeus system user"
Set description for Subject jeus
사용자명이 나타내는 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에 필요한 속성을 제공할 수 있다.
|
예제
johan>addcredential javajoe jeus.security.resource.DefaultPasswordFactory
–properties password=pw;algorithm=AES
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에 필요한 속성을 제공할 수 있다.
|
예제
johan>removecredential javajoe jeus.security.resource.DefaultPasswordFactory
–properties password=pw;algorithm=AES
현재 도메인에 해당 사용자명이 존재하는지 여부를 조회한다.
사용법
userexist user_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
user_name | 사용자명이다. |
예제
johan>userexist jeus
The User(jeus) exist in the current security domain
보안 시스템에 새로운 그룹를 추가한다. 설정된 그룹명은 현재 도메인 내에서 유일해야 한다("getgroupnames"명령어로 확인 가능). rm그룹명은 일련의 호출 과정에서 특정 그룹를 참조 하기위해 사용한다. 즉 그룹에 대한 ID에 해당된다.
사용법
addgroup group_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
group_name | 그룹명이다. |
예제
johan>addgroup admin_group
Added Group admin_group
보안 시스템에 등록된 특정 그룹에 새로운 사용자 멤버를 추가한다.
사용법
addusertogroup group_name user_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
group_name | 그룹명이다. |
user_name | 사용자명이다. |
예제
johan>addusertogroup admin_group jeus
Added user(jeus) to Group(admin_group)
현재 도메인에서 이미 존재하고 있는 그룹을 삭제한다.
사용법
removegroup group_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
group_name | 그룹명이다. |
예제
johan>removegroup admin_group
Removed Group admin_group
현재 도메인에서 존재하는 특정 그룹의 특정 사용자 멤버를 삭제한다.
사용법
removeuserfromgroup group_name user_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
group_name | 그룹명이다. |
user_name | 사용자명이다. |
예제
johan>removeuserfromgroup admin_group jeus
Removed user jeus from Group admin_group
현재 도메인의 모든 그룹에 대한 목록을 조회한다.
사용법
getgroupnames [-domain domain_name]
예제
johan>getgroupnames
0. admin_group
Got 1 Group names
주어진 특정 그룹에 대한 자세한 정보를 조회한다.
사용법
getgroup group_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
group_name | 그룹명이다. |
예제
johan>getgroup admin_group
admin_group(members:Principal jeus)
Got 1 Group information
현재 도메인에 등록된 모든 그룹의 정보를 조회한다.
사용법
getgroups [-domain domain_name]
예제
johan>getgroups
deploy_group(members:Principal johan)
admin_group(members:Principal jeus)
Got 2 Group information
특정 그룹에 대한 설명을 추가한다. 만약 설명문 내에 공백이 포함되어 있다면 " "내에 입력해야 한다.
사용법
setgroupdescription group_name "description" [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
group_name | 그룹명이다. |
description | 그룹에 대한 설명이다. |
예제
johan>setsubjectdescription jeus "jeus system group"
Set description for Group admin_group
특정 그룹에 대한 설명을 조회한다.
사용법
getgroupdescription group_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
group_name | 그룹명이다. |
예제
johan>getgroupdescription admin_group
jeus system group
특정 그룹에 등록된 사용자와 서브 그룹 정보를 조회한다.
사용법
getmembersfromgroup group_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
group_name | 그룹명이다. |
예제
johan>getmembersfromgroup admin_group
jeus system group
특정 그룹에 해당 사용자가 등록되었는지 여부를 조회한다.
사용법
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)
현 도메인에 해당 그룹명이 존재하는지 여부를 조회한다.
사용법
groupexist group_name [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
group_name | 그룹명이다. |
예제
johan>groupexist admin_group
The Group(admin_group) exist in the current security domain
특정 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)
보안 시스템에서 설정되어 있는 ID 목록을 조회한다.
사용법
getpolicyids [-domain domain_name]
예제
johan>getpolicy
1. login
2. default
Got 2 Policy context ids
특정 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_name | Principal 이름이다. |
role_name | Role 이름이다. |
[-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"
특정 role에 Principal을 삭제한다.
사용법
unassignrole principal_name role_name [-actions actions_for_role] [-contextid context_id][-classname permission_class_name] [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
principal_name | Principal 이름이다. |
role_name | Role 이름이다. |
[-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"
Role을 배제한다. 즉, 해당 Role은 모두에게 거부된다.
사용법
excluderole role_name [-actions comma_separated_list_of_actions] [-contextid context_id][-classname permission_class_name] [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
role_name | Role 이름이다. |
[-actions comma_separated_list_of_actions] | Role에 부여된 action들 목록이다. |
[-contextid context_id] | Policy를 구분하는 컨텍스트 이름이다. |
[-classname permission_class_name] | Permission 클래스 이름이다. |
예제
johan>excluderole deploy
Excluded role "deploy"
"excluderole" 설정에서 모두에게 거부된 Role을 해제한다.
사용법
includerole role_name [-actions comma_separated_list_of_actions] [-contextid context_id] [-classname permission_class_name] [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
role_name | Role 이름이다. |
[-actions comma_separated_list_of_actions] | Role에 부여된 action들 목록이다. |
[-contextid context_id] | Policy를 구분하는 컨텍스트 이름이다. |
[-classname permission_class_name] | Permission 클래스 이름이다. |
예제
johan>includerole deploy
Included role "deploy"
Role을 체크하지 않는다. 해당 Role은 모두에게 허용된다.
사용법
uncheckrole role_name [-actions comma_separated_list_of_actions] [-contextid context_id][-classname permission_class_name] [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
role_name | Role 이름이다. |
[-actions comma_separated_list_of_actions] | Role에 부여된 action들 목록이다. |
[-contextid context_id] | Policy를 구분하는 컨텍스트 이름이다. |
[-classname permission_class_name] | Permission 클래스 이름이다. |
예제
johan>uncluderole deploy
Unchecked role "deploy"
"uncheckrole" 설정에서 모두에게 허용된 role을 해제한다.
사용법
checkrole role_name [-actions comma_separated_list_of_actions] [-contextid context_id][-classname permission_class_name] [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
role_name | Role 이름이다. |
[-actions comma_separated_list_of_actions] | Role에 부여된 action들 목록이다. |
[-contextid context_id] | Policy를 구분하는 컨텍스트 이름이다. |
[-classname permission_class_name] | Permission 클래스 이름이다. |
예제
johan>checkrole deploy
Checked role "deploy"
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_name | Role 이름이다. |
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"
Role로부터 리스스를 삭제할 때 사용한다. Role은 더 이상 해당 리소스에 접근이 불가능하다.
사용법
unassignresource role_name resource_name [-actions comma_separated_list_of_actions] [-contextid context_id][-classname permission_class_name] [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
role_name | Role 이름이다. |
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"
리소스를 배제한다. 즉, 리소스는 모두에게 거부된다.
사용법
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"
“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"
리스스 체크를 해제한다. 즉, 리소스는 누구에게나 허용된다.
사용법
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"
“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"
현재 로그인된 Subject 가 특정 Role에 포함되어 있는지 체크한다. -contextid는 선택 사항으로 "default"이외의 Context를 지정하고자할 때 사용한다.
사용법
authorizerole role_name [-contextid context_id] [-domain domain_name]
파라미터
파라미터 | 설명 |
---|---|
role_name | Role 이름이다. |
[-contextid context_id] | Policy를 구분하는 컨텍스트 이름이다. |
예제
johan>authorizerole deploy login
Role granted for current Subject
현재 로그인된 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
본 절에서는 JEUS의 JMS 엔진을 관리하기 위한 콘솔 툴인 jmsadmin의 사용법을 설명한다.
명령어 설명 규칙은 jeusadmin 콘솔 툴과 동일하므로 “제2장 명령어 설명 규칙”를 참조한다.
jmsadmin의 기동과 종료 명령어에 대해 설명한다.
jmsadmin 툴을 실행한다. 이 명령 스크립트는 JEUS_HOME\bin\에 위치한다.
사용법
jmsadmin [-verbose] engine_container_name [-U<username>] [-P<password>] [-f<filename>] [command] [command_options]
파라미터
파라미터 | 설명 |
---|---|
[-verbose] | 작업 진행 상태를 자세히 출력한다. |
engine_container_name | jmsadmin이 접속할 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>
다음은 공통 명령어에 대한 설명이다.
명령어에 대한 도움말을 출력한다. 명령어의 설명, 이름, Alias, 사용법, 파라미터 설명이 포함된다.
아무런 옵션 없이 사용하면 help 명령어에 대한 설명과 명령어의 목록만 출력한다.
사용법
help(h) [-l] [-a] [-g group_name] [command]
파라미터
파라미터 | 설명 |
---|---|
[-l] | 모든 명령어에 대한 간단한 설명을 출력한다. |
[-a] | 모든 명령어에 대한 자세한 도움말을 출력한다. |
[-g group_name] | 지정한 명령어 그룹(group_name)에 포함된 명령어의 도움말을 출력한다. 사용 가능한 명령어 그룹은 다음과 같다.
|
[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
JMS 엔진 명령어는 다음과 같다.
명령어 | 설명 |
---|---|
commit | Pending 트랜잭션을 강제로 Commit한다. |
conf | Connection Factory 정보를 조회한다. |
confall | Connection Factory 목록을 조회한다. |
createconf | 새로운 Connection Factory를 추가한다. |
createdest | 새로운 Destination을 추가한다. |
est | Destination을 관리한다. |
destall | Destination의 목록을 조회한다. |
durable | Durable Subscription 정보를 조회한다. |
durableall | Durable Subscription의 목록을 조회한다. |
entry | 클라이언트를 관리한다. |
entryall | 클라이언트의 목록을 조회한다. |
mbeanlist | MBean의 목록을 조회한다. |
ptall | pending상태의 트랜잭션을 조회한다. |
removeconf | Connection Factory를 제거한다. |
removedest | Destination을 제거한다. |
restat | Destination의 통계 정보를 초기화한다. |
rollback | Pending 트랜잭션을 강제로 Rollback한다. |
server | JMS 엔진의 정보를 조회한다. |
stat | Destination의 통계 정보를 조회한다. |
switchover | Active 서버를 복원한다. |
Pending 트랜잭션을 강제로 Commit한다.
사용법
commit id
파라미터
파라미터 | 설명 |
---|---|
id | 강제로 Commit할 트랜잭션의 ID이다. ID는 ptall 명령으로 확인할 수 있다. |
예제
johan_container1>commit 1024
1024 is commited.
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)]
===============================================================================
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
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
. . .
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
. . .
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를 지정한다.
|
예제
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
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
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
현재 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
접속한 클라이언트의 정보를 출력하거나 클라이언트와의 연결을 강제로 종료한다.
사용법
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
현재 접속해 있는 모든 클라이언트의 목록을 조회한다.
사용법
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
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
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
--------+------------+------------+---------------------------------------------
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
. . .
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
. . .
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
------------------------------------------------------------------------
Pending 트랜잭션을 강제로 Rollback한다.
사용법
rollback id
파라미터 | 설명 |
---|---|
id | 강제로 Rollback할 트랜잭션의 ID이다. ID는 ptall 명령으로 확인할 수 있다. |
예제
johan_container1>rollback 1024
1024 is rolled back.
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
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
------------------------------------------------------------------------
Active 서버에 장애가 발생하여 Standby 서버가 장애를 극복을 한 상태에서 Active 서버를 다시 복원할 때 사용한다.
switchover 명령어를 사용하면 Standby 서버는 클라이언트로부터 새로운 커넥션을 받지 않게 되고, 현재 연결되어 있는 모든 클라이언트와의 접속을 강제로 종료하고 모든 Destination의 메시지들을 Active 서버로 마이그레이션한다. Standby 서버와 연결이 끊어진 클라이언트는 커넥션 장애 복구 과정을 통해 Active 서버로 자동으로 재접속할 것이다.
이 명령은 Standby 서버로 접속한 후에 실행해야 한다.
사용법
switchover
예제
johan2_container1>switchover
본 절에서는 애플리케이션의 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_filename은 application_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
본 절에서는 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-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-name | String | unique JNDI binding name, 특정 EJB에 대해서만 사용 권장 |
local-export-name | String | unique JNDI binding name, 특정 EJB에 대해서만 사용 권장 |
export-port | int (not negative) | |
export-iiop | boolean | |
single-vm-only | boolean | |
local-invoke-optimize | boolean | |
thread-max | int (not negative) | |
bean-pool-min | int (not negative) | |
bean-pool-max | int (not negative) | |
connect-pool-min | int (not negative) | |
connect-pool-max | int (not negative) | |
capacity | int (not negative) | |
passivation-timeout | long (not negative or -1 for disable) | |
disconnect-timeout | long (not negative or -1 for disable) | |
engine-type | String (defined) | EXCLUSIVE_ACCESS, SINGLE_OBJECT, MULTIPLE_OBJECT |
subengine-type | String (defined) | ReadLocking, WriteLocking, or WriteLockingFind |
fetch-size | int (not negative) | |
init-caching | boolean | |
table-name | String | |
creating-table | String (defined) |
|
deleting-table | boolean | |
db-vendor | String | |
datasource-name | String | |
enable-instant-ql | boolean |
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
암호화 툴(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=]
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_name | JSP 파일들이 사전 컴파일해야 할 웹 컨테이너의 이름이다. |
-U userid | JEUS 사용자 ID이다. |
-P password | JEUS 사용자 패스워드이다. |
[-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
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> | 생성되는 소스 파일들의 위치를 명시한다. |
-verbose | Verbose 메시지를 출력한다. |
-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" 디렉터리에 생성이 된다.
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 바인딩 파일들을 지정한다. |
-catalog | TR9401, XCatalog, OASIS XML Catalog 형식과 같은 외부의 Entity 참조값을 설정할 수 있다. 또한 ant xmlcatalog 타입을 사용할 수도 있다. |
-extension | 벤더 특정의 확장성을 명시할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다. |
-help | 도움말을 출력한다. |
-httpproxy:<host>:<port> | HTTP 프록시 서버를 지정한다. (기본값: 8080) |
-keep | 생성되는 파일들을 보존한다. |
-p | WSDL의 모든 Namespace URI에 대한 Java 패키지 이름을 지정한다. |
-s <directory> | 생성된 소스 파일들이 놓일 위치를 지정한다. 이 속성을 지정하면 keep 속성이 자동으로 설정된다. |
-verbose | Verbose 출력은 “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 클래스 소스들은 삭제되지 않는다.
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 | 로그 레벨을 지정한다. |
-verbose | Verbose 메시지를 출력한다. |
예제
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 매핑 파일을 생성한다.
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 | 컴파일된 클래스 파일이 생성될 디렉터리를 지정한다. |
-inputmapping | Java 클래스를 생성하기 위하여 사용되는 입력 JAX-RPC 매핑 파일을 지정한다. |
-package | WSDL의 모든 Namespace URI에 대한 Java 패키지 이름을 지정한다. |
-ns2pkg NS=PKG | Namespace URI에 대한 Java 패키지 이름을 지정한다.
|
-outputmapping | 입력 WSDL에 대한 출력 JAX-RPC 매핑 파일을 지정한다. |
-compile | 생성된 Java 파일을 컴파일한다. |
-nokeepsrc | 생성된 Java 소스 파일을 유지하지 않고 삭제한다. |
-nowrapped | WSDL에 대한 wrapped 모드 탐지를 사용할 수 없게 한다. |
-datahandleronly | MIME 타입에 대하여 javax.activation.DataHandler를 적용하게 한다. |
-nodatabinding | 모든 WSDL massage part에 대하여 javax.xml.soap.SOAPElement를 적용하게 한다. |
-soapver | stub/tie 클래스에서 사용되는 SOAP 버전을 지정한다.
|
-resolveDir | 원격의 WSDL 파일(스키마 파일 포함)을 접근 가능한 저장소에 저장하고자 할 때 사용한다. |
-username | WSDL-URI에 접근하기 위한 사용자명이다. |
-password | WSDL-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 및 서비스 인터페이스들은 컴파일이 된다.
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
파라미터
파라미터 | 설명 |
---|---|
UDDIVersion | UDDI의 버전을 설정한다. 입력값은 v2 또는 v3이다. |
WSDLURI | 실제 WSDL이 존재하는 곳의 URI 값이다. |
-uddiInquiry | 실제 UDDI의 Inquiry URI 값을 지정한다. |
-uddiPublish | 실제 UDDI의 publish URI 값을 지정한다. |
-uddiUsername | UDDI에 접근할 때 필요한 사용자명을 설정한다. |
-uddiPassword | UDDI에 접근할 때 필요한 패스워드를 설정한다. |
-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와 사용자명, 패스워드를 각각 지정해줄 수 있다.
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). |
-extension | true값일 경우에 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 포맷에 관한 외부 카탈로그 파일을 명시한다. |
-readOnly | true값일 경우에 Java 소스 파일들은 읽기 가능 모드이다. 기본값은 false이다(true|false). |
-npa | package-info.java 라는 파일에 패키지 수준의 Annotation 생성을 요약한다. |
-xmlschema | 입력 스키마를 W3C XML Schema로 제어한다. |
-relaxng | 입력 스키마로써 RELAX NG를 제어한다. |
-relaxng-compact | 입력 스키마로써 RELAX NG compact 문법을 제어한다. |
-dtd | XML DTD 파일을 컴파일러의 입력 스키마로 사용한다. |
-wsdl | WSDL 파일을 입력하여 그 안에 사용되고 있는 스키마 파일들을 컴파일한다. |
-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"에 생성한다.
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 | 사용법을 출력한다. |
본 절에서는 tcpmon 툴에 대해 설명한다.
tcpmon 프로그램은 송수신하는 TCP 패킷을 조회하는 프로그램이다. tcpmon은 HTTP의 SOAP 메시지를 조회할 때 사용한다.
다음과 같이 tcpmon을 실행한다.
C:\jeus\bin> tcpmon
다음은 tcpmon을 실행했을 때 나타나는 화면이다.
tcpmon은 다음의 2가지 모드로 동작한다.
Listener
tcpmon이 listen port로 요청을 받아서 지정된 target host와 target port로 받은 요청을 다시 전송하고 응답을 받아서 원래 요청한 커넥션으로 응답을 전송한다.
Proxy
tcpmon을 일반적인 HTTP Proxy처럼 동작하게 한다.
Listener 모드를 사용하기 위해서 다음과 같은 시나리오를 가정한다.
서버(A)는 8000번 Port로 SOAP 요청을 받아들인다.
클라이언트(B)의 웹 서비스 클라이언트가 송수신하는 SOAP 메시지를 모니터링하고자 한다.
이 경우 웹 서비스 클라이언트 프로그램에서는 tcpmon을 사용하여 SOAP 메시지를 모니터링할 수 있다.
클라이언트(B)에서 tcpmon을 실행한 뒤 다음과 같이 설정한다.
[Admin] 탭에서 'Listen Port'와 'Act as a'를 각각 다음과 같이 설정한 후 [Add] 버튼을 클릭한다.
Listen Port : 9000
Act as a : Listener 선택
- Target Hostname : A
- Target Port : 8000
다음과 같이 [Port 9000] 탭이 생성된다. 이 탭을 클릭하면 다음과 같은 화면이 나타난다.
화면의 체크 박스와 각 버튼에 대한 설명이다.
구분 | 설명 |
---|---|
XML Format | XML Format 체크 박스는 XML을 보기 좋은 형태로 정렬하여 TCPMON 화면에 출력한다. |
Save | [Save] 버튼을 사용하여 현재 SOAP 메시지를 저장할 수 있다. |
Resend | 현재 Request SOAP 메시지를 재전송한다. |
Switch Layout | 메시지 출력 화면의 가로/세로 분할 모드를 바꾼다. |
이렇게 설정한 후 클라이언트 프로그램에서 서버(A)의 8000번에 접속하는 대신 클라이언트(B)의 9000번에 접속하도록 한 후 클라이언트 프로그램을 실행하면 tcpmon이 9000번으로 들어온 요청을 받아서 서버(A)의 8000번 Port로 전송 후 응답을 받아서 클라이언트가 tcpmon에 연결한 커넥션의 응답으로 돌려주고 송수신한 메시지를 tcpmon에 출력한다.
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>
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