내용 목차
본 장에서는 JEUS의 환경설정 및 기동 방법에 대한 기본적인 내용을 설명한다.
WebAdmin을 사용해서 시스템을 구성하는 방법은 다음의 순서로 설명한다.
기본 환경설정
시스템 컴포넌트의 추가와 설정 방법
시스템 기동 방법
JEUS WebAdmin은 웹을 통해 JEUS의 모든 요소를 관리하기 위한 서비스를 제공한다. 사용자는 쉽게 JEUS에 접근하여 시스템 설정과 모니터링 및 애플리케이션을 관리할 수 있다.
다음 순서에 따라 WebAdmin을 실행한다.
커맨드 창에서 ‘jeus’ 스크립트를 실행해서 JEUS Manager를 실행한다.
‘jeus’ 스크립트는 JEUS_HOME\bin\ 디렉터리에 있으며 시스템 PATH에 설정되어 있어야 한다. WebAdmin을 사용하기 위해서는 JEUSMain.xml에 <enable-webadmin> 태그의 값이 true로 설정되어 있어야 한다.
다음은 JEUS Manager를 실행 예제이다.
C:\Documents and Settings\Administrator>jeus ************************************************************** - JEUS Home : C:\TmaxSoft\JEUS6.0 - JEUS Base Port : 9736 - Added Java Option : - Java Vendor : Sun ************************************************************** "C:\java\1.5.0.7\bin\java" -server -Xmx512m -Xbootclasspath/p:"C:\TmaxSoft\JEUS6 .0\lib\system\extension.jar";"C:\TmaxSoft\JEUS6.0\lib\system\classloader.jar" -c lasspath "C:\TmaxSoft\JEUS6.0\lib\system\bootstrap.jar" -Djava.endorsed.dirs="C: \TmaxSoft\JEUS6.0\lib\endorsed" -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rm i.dgc.server.gcInterval=3600000 -Djeus.jvm.version=hotspot -Djeus.home="C:\TmaxS oft\JEUS6.0" -Djava.naming.factory.initial=jeus.jndi.JNSContextFactory -Djava.na ming.factory.url.pkgs=jeus.jndi.jns.url -Djava.library.path="C:\TmaxSoft\JEUS6.0 \lib\system" -Djeus.baseport=9736 -Djava.util.logging.config.file="C:\TmaxSoft\J EUS6.0\bin\logging.properties" -Djeus.properties.replicate=jeus,java.util.loggin g,sun.rmi.dgc -Djeus.tool.webadmin.locale.language=ko -Djava.net.preferIPv4Stack =true -Djeus.management.simple.log=true jeus.server.JeusBootstrapper [2007.05.19 13:33:39][1][] [client-10] initialize virtual DNS table, enable : tr ue, table : {shimbh:9736=johan} [2007.05.19 13:33:40][0][b037] [johan-10] [MGR-0411] virtual host name of this m anager : johan [Network Configuration] default local hostname : null, default local ip : null, local inetaddress : shimbh/192.168.1.210, local host address : 192.168.1.210, full host name : shimbh, local hostname : shimbh [RMI Configuration] Default RMI export port for this container : 9743 [SystemProperty] The system property is set but has no corresponding jeus proper ty, maybe typographical error : jeus.management.simple.log [2007.05.19 13:33:48][2][b037] [johan-10] jeus.server.useListenPortPerContainer= true [2007.05.19 13:33:48][2][b037] [johan-10] The id of this container johan_contain er1 is 63 [2007.05.19 13:33:48][2][b037] [johan-10] The base port of this container johan_ container1 is 10381 [2007.05.19 13:33:48][3][b037] [johan-10] [MGR-0239] JEUSMain.xml is loaded [2007.05.19 13:33:50:390] webt.properties file is not found [2007.05.19 13:33:57][0][b037] [johan-10] [MGR-0241] JeusServer is Ready
웹 브라우저를 사용해서 WebAdmin에 접속한다.
http://localhost:9744/webadmin
JEUS를 설치할 때 설정해 주었던 JEUS에 대한 로그인 ID와 패스워드를 입력한다. 성공적으로 인증되었다면 다음과 같은 WebAdmin 초기 화면이 나타난다.
JEUS 노드 트리에 JEUS를 관리하기 위한 요소들이 노드명을 루트 노드로 하여 트리 형태로 구성되어 있다. 다음 그림에서 보는 것과 같이 JEUS 노드 트리는 크게 엔진 컨테이너, JEUS 매니저 리소스, JEUS 매니저 서비스, 어플리케이션 모듈 디플로이, JEUS 모니터링으로 구성되어 있다.
엔진과 관련된 설정 변경은 각 엔진에 해당되는 설정 파일에 반영되며, 루트 노드(예: johan)를 선택했을 때 나오는 설정 항목과 엔진 컨테이너 설정, JEUS 매니저 리소스 설정, JEUS 매니저 설정, 영구모듈 설정은 JEUS의 설정 파일에 반영된다.
JEUS와 각 엔진을 구동하기 위한 설정 파일들은 다음의 위치에 존재한다.
JEUS 메인
JEUS_HOME\config\<nodename>\JEUSMain.xml
EJB 엔진
JEUS_HOME\config\<nodename>\<nodename>_ejb_<enginename>\EJBMain.xml
서블릿 엔진
JEUS_HOME\ config\<nodename>\<nodename>_servlet_<enginename>\WEBMain.xml
JMS 엔진
JEUS_HOME\ config\<nodename>\<nodename>_jms_<enginename>\JMSMain.xml
엔진이란 Java EE스펙을 만족하는 JEUS 엔진이다. JEUS에는 EJB 엔진, 서블릿 엔진, JMS 엔진, 웹 서버(Web Server) 엔진의 4가지의 엔진 타입이 있다. 이 엔진들은 하나의 엔진 컨테이너 내에 존재한다. 단, 같은 엔진 컨테이너 내에 동일한 타입의 엔진이 2개 이상 존재할 수 없다.
JEUS는 기본적으로 하나 이상의 엔진 컨테이너를 필요로 하며, 설치할 때 하나의 엔진 컨테이너와 EJB 엔진, 서블릿 엔진을 포함한다. 엔진 컨테이너를 추가하는 방법은 기존의 엔진 컨테이너를 복사하는 방법과 새로운 엔진 컨테이너를 생성한 후 엔진을 추가하는 방법이 있다.
다음은 새로운 엔진 컨테이너를 추가하고, 추가된 엔진 컨테이너에 EJB 엔진과 서블릿 엔진을 추가하는 방법이다.
JEUS 노드 트리에서 루트 노드 아래 [엔진 컨테이너]를 클릭한다.
Main View에서 [새 엔진 컨테이너 생성]을 클릭하고 엔진 컨테이너 이름을 입력한다. 엔진은 하나 이상 필수로 추가해야 하므로 여기에서는 EJB 엔진을 추가한다.
엔진 컨테이너를 추가하라는 팝업 화면에서 [확인] 버튼을 클릭한다. 새 엔진 컨테이너 생성이 성공할 경우 다음과 같은 화면이 나타난다.
엔진 컨테이너에 엔진을 추가하기 위해 JEUS 노드 트리에서 생성한 엔진 컨테이너의 [엔진]을 클릭한다.
[새 서블릿 엔진 생성]을 클릭하고, 엔진 이름을 입력한다.
[확인] 버튼을 클릭하면 새로 생성된 서블릿 엔진을 확인할 수 있다.
새로 추가된 엔진 컨테이너를 구동하기 위한 설정은 기본 설정으로 충분하며, 서블릿 엔진이 있을 경우 컨텍스트 그룹에 등록된 Web Listener Port가 중복되지 않도록 설정해야 한다.
새로 생성된 엔진 컨테이너의 [서블릿 엔진] > [MyGroup] > [lsnr1]을 클릭하면 다음과 같은 Web Listener 설정 화면이 나타난다.
다른 엔진 컨테이너의 서블릿 엔진에서 사용하는 Web Listener Port와 중복되지 않도록 설정한다.
데이터소스(Datasource)는 Database와 Java EE 프로그램을 연결하기 위해 사용된다.
예제에서는 JEUS에 기본적으로 포함되어 있는 Apache Derby DB를 사용한다. Apache Derby는 JEUS_HOME\derby에 포함되어 있다. 만약 Derby가 실행되어 있지 않다면 다음과 같이 실행한다.
UNIX/LINUX에서 또는 Windows의 명령 프롬프트에서 다음과 같이 실행한다.
JEUS_HOME\bin> startderby
추후에 Derby를 종료하기 위해서는 다음과 같이 실행한다.
JEUS_HOME\bin> stopderby
Derby를 JEUS에서 사용하려면 Derby의 JDBC 드라이버 파일인 derbyclient.jar가 JEUS_HOME\lib\datasource에 위치해야 한다(기본적으로 포함되어 있음).
Derby에 대한 자세한 내용은 http://db.apache.org/derby/를 참고한다.
예제에서는 sample이라고 하는 데이터베이스를 jdbc/sample이라는 데이터소스 이름으로 사용한다. 다음은 데이터소스를 추가하는 방법에 대한 설명이다.
JEUS 노드 트리에서 [JEUS 매니저 리소스] > [JDBC]를 선택한다. Main View에서 [새 JDBC 데이터 소스 생성]을 클릭한다.
[1. 데이터 소스] 탭의 데이터소스 설정 화면에서 ‘DBMS’는 Derby를 ‘가능한 데이터 소스들’에서는 Derby Connection PoolDataSource를 선택한다.
데이터소스의 속성을 설정한다. 입력 항목들이 기본값으로 설정되어 표시된다. 다음과 같이 입력하고 [다음] 버튼을 클릭하여 [2. 속성] 탭에서 속성을 설정한다.
Export Name: datasource1 추가 속성들: ServerName=localhost DatabaseName=sample User=app Password=app
[3. 연결 풀] 탭에서 데이터소스의 연결 풀을 설정한다. 입력 항목들이 기본값으로 설정되어 출력된다.
다음과 같이 입력하고 [생성] 버튼을 클릭한다.
데이터소스가 정상적으로 설정되었는지 확인한다.
데이터소스 설정은 JEUS 설정 파일에 반영된다. JEUS 노드 트리에 [JEUS 매니저 리소스] > [JDBC] 하위에 데이터소스 이름의 트리 노드가 생성되며, 바인드할 경우 루트 노드의 [JNDI트리]에서 데이터소스를 확인할 수 있다.
Connection Pool 데이터소스일 경우 설정 후 바로 Connection Pool이 생성되지 않고, Java EE 모듈에서 처음 데이터소스를 사용할 때 모듈이 디플로이된 엔진 켄테이너의 [리소스] > [JDBC] 하위에 나타난다. 데이터소스의 정상적인 동작 여부 또한 커넥션을 처음 사용할 경우 알 수 있다.
WebAdmin을 통해 JEUS를 기동하는 경우 JEUS Manager가 실행된 상태여야 한다. JEUS Manager가 실행된 상태에서 WebAdmin을 통해 노드의 컨테이너를 Boot, Down시킬 수 있고 JEUS Manager를 종료시킬 수 있다.
다음은 WebAdmin에서 JEUS를 기동하는 과정에 대한 설명이다.
JEUS 노드 트리에서 루트 노드를 선택한다.
Main View 에서 [제어] 탭을 클릭하면, 다음와 같이 [부트], [다운], [종료] 메뉴가 나타난다. 현재 노드의 컨테이너가 부팅되지 않은 상태이므로, [부트] 탭을 선택하면 부팅 가능한 노드가 나타난다.
앞에서 추가한 컨테이너를 부팅하려면 JEUS를 재기동해야 한다. 그러므로 우선 [종료] 탭을 클릭해서 JEUS를 완전히 종료 한다. 만약 JEUS 매니저만 뜬 상태라면 컨테이너를 추가해도 JEUS를 종료할 필요 없이 바로 부트해도 된다.
JEUS가 완전히 종료된 것을 확인한 다음, JEUS를 다시 실행한다. 그리고 전과 같은 방법으로 WebAdmin을 실행한다.
[부트] 탭에서 노드를 선택하고 [확인] 버튼을 클릭하면 JEUS가 기동된다.
엔진 컨테이너를 개별적으로 Boot, Down할 수 있다. JEUS 노드 트리에서 [엔진 컨테이너]를 선택하면 [그림 8.18]과 같은 메뉴를 볼 수 있다.
Text Editor 사용해서 수동으로 환경설정을 하는 방법은 다음의 순서로 설명한다.
환경설정
시스템 기동 방법
WebAdmin을 사용할 수 없는 환경에서 텍스트 기반으로 편집할 경우 "JEUS Server 안내서", "JEUS EJB 안내서", "JEUS Web Container 안내서"의 부록이나 해당 스키마를 참조하면 설정하는데 도움이 될 수 있다. 스키마 파일은 JEUS_HOME\lib\schemas\jeus 아래에서 참조할 수 있다.
WebAdmin이 아닌 Text Editor를 이용하여 "JEUS_HOME\config\<node name>\JEUSMain.xml" 파일을 생성하고 설정할 수 있다.
JEUS를 설치할 때 설정되는 노드 이름은 해당 호스트 머신의 네트워크 ID명이다. Windows에서는 hostname이라는 명령어를 통해, UNIX에서는 uname -an이라는 명령어를 통해 알아낼 수 있다. 만약 JEUS의 VirtualHost 기능을 사용한다면, vhost.properties 파일을 참고해서 적절한 노드 이름을 선택해서 작업한다.
다음 JEUSMain.xml 예제는 이전 절의 모든 설정값(노드, 엔진 컨테이너, EJB 엔진, 서블릿 엔진, 데이터베이스 커넥션)을 적용한 것이다.
[예 8.1] <<JEUSMain.xml>>
<?xml version="1.0" encoding="utf-8"?> <jeus-system xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="6.0"> <node> <name>johan</name> <engine-container> <name>container1</name> <engine-command> <type>ws</type> <name>engine1</name> </engine-command> <engine-command> <type>jms</type> <name>engine1</name> </engine-command> <engine-command> <type>ejb</type> <name>engine1</name> </engine-command> <engine-command> <type>servlet</type> <name>engine1</name> </engine-command> <sequential-start>true</sequential-start> </engine-container> <engine-container> <name>container2</name> <engine-command> <type>ejb</type> <name>engine2</name> </engine-command> <engine-command> <type>servlet</type> <name>engine2</name> </engine-command> </engine-container> <class-ftp>true</class-ftp> <sequential-start>true</sequential-start> <enable-webadmin>true</enable-webadmin> </node> <resource> <data-source> <database> <vendor>others</vendor> <export-name>jdbc/sample</export-name> <data-source-class-name> org.apache.derby.jdbc.ClientConnectionPoolDataSource </data-source-class-name> <data-source-type>DataSource</data-source-type> <auto-commit>true</auto-commit> <property> <name>PortNumber</name> <type>java.lang.Integer</type> <value>1527</value> </property> <property> <name>Password</name> <type>java.lang.String</type> <value>app</value> </property> <property> <name>ServerName</name> <type>java.lang.String</type> <value>localhost</value> </property> <property> <name>ConnectionAttributes</name> <type>java.lang.String</type> <value>;create=true</value> </property> <property> <name>DatabaseName</name> <type>java.lang.String</type> <value>sample</value> </property> <property> <name>User</name> <type>java.lang.String</type> <value>app</value> </property> </database> </data-source> </resource> </jeus-system>
JEUSMain.xml 파일에 EJB 엔진과 서블릿 엔진만 정의하는 것으로는 충분하지 않다. 추가적으로 이들 엔진의 설정 파일이 필요한데, 이 설정은 JEUS에서 EJB 엔진과 서블릿 엔진을 시작하기 위해 필요하다.
EJB 엔진을 위해서는 EJBMain.xml이 서블릿 엔진을 위해서는 WEBMain.xml 파일이 필요하다.
[예 8.2] <<EJBMain.xml>>
<?xml version="1.0"?> <ejb-engine xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="6.0"> </ejb-engine>
[예 8.3] <<WEBMain.xml>>
<?xml version="1.0" encoding="UTF-8"?> <web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="6.0"> <context-group> <group-name>MyGroup</group-name> <webserver-connection> <http-listener> <listener-id>http1</listener-id> <port>8088</port> <output-buffer-size>8192</output-buffer-size> <thread-pool> <min>10</min> <max>20</max> <step>1</step> <max-idle-time>300000</max-idle-time> <max-wait-queue>4</max-wait-queue> <max-queue>-1</max-queue> </thread-pool> <postdata-read-timeout>30000</postdata-read-timeout> <back-log>50</back-log> <server-access-control>false</server-access-control> </http-listener> </webserver-connection> </context-group> </web-container>
JEUSMain.xml, EJBMain.xml 과 WEBMain.xml을 위와 같이 설정했다면 JEUS를 시작할 준비가 된 것이다. 콘솔 창에서 jeus 명령어를 통해 JEUS Manager를 시작한다. 그러면 JEUS를 시작하고 엔진 컨테이너나 엔진을 시작시킬 수 있는 stand-by 모드로 들어가게 된다.
콘솔 창에 jeus라고 입력한다.
C:\Documents and Settings\Administrator>jeus ************************************************************** - JEUS Home : C:\TmaxSoft\JEUS6.0 - JEUS Base Port : 9736 - Added Java Option : - Java Vendor : Sun ************************************************************** "D:\java\1.5.0.7\bin\java" -server -Xmx512m -Xbootclasspath/p:"C:\TmaxSoft\JEUS6 .0\lib\system\extension.jar";"C:\TmaxSoft\JEUS6.0\lib\system\classloader.jar" -c lasspath "C:\TmaxSoft\JEUS6.0\lib\system\bootstrap.jar" -Djava.endorsed.dirs="C: \TmaxSoft\JEUS6.0\lib\endorsed" -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rm i.dgc.server.gcInterval=3600000 -Djeus.jvm.version=hotspot -Djeus.home="C:\TmaxS oft\JEUS6.0" -Djava.naming.factory.initial=jeus.jndi.JNSContextFactory -Djava.na ming.factory.url.pkgs=jeus.jndi.jns.url -Djava.library.path="C:\TmaxSoft\JEUS6.0 \lib\system" -Djeus.baseport=9736 -Djava.util.logging.config.file="C:\TmaxSoft\J EUS6.0\bin\logging.properties" -Djeus.properties.replicate=jeus,java.util.loggin g,sun.rmi.dgc -Djeus.tool.webadmin.locale.language=ko -Djava.net.preferIPv4Stack =true -Djeus.management.simple.log=true jeus.server.JeusBootstrapper [2007.05.19 13:33:39][1][] [client-10] initialize virtual DNS table, enable : tr ue, table : {shimbh:9736=johan} [2007.05.19 13:33:40][0][b037] [johan-10] [MGR-0411] virtual host name of this m anager : johan [Network Configuration] default local hostname : null, default local ip : null, local inetaddress : shimbh/192.168.1.210, local host address : 192.168.1.210, fu ll host name : shimbh, local hostname : shimbh [RMI Configuration] Default RMI export port for this container : 9743 [SystemProperty] The system property is set but has no corresponding jeus proper ty, maybe typographical error : jeus.management.simple.log [2007.05.19 13:33:48][2][b037] [johan-10] jeus.server.useListenPortPerContainer= true [2007.05.19 13:33:48][2][b037] [johan-10] The id of this container johan_contain er1 is 63 [2007.05.19 13:33:48][2][b037] [johan-10] The base port of this container johan_ container1 is 10381 [2007.05.19 13:33:48][3][b037] [johan-10] [MGR-0239] JEUSMain.xml is loaded [2007.05.19 13:33:50:390] webt.properties file is not found [2007.05.19 13:33:57][0][b037] [johan-10] [MGR-0241] JeusServer is Ready
“JeusServer is Ready” 메시지가 콘솔 창에 나타나면 기동시킬 수 있는 준비가 된 것이다.
JEUS의 bin 디렉터리에 있는 콘솔 툴인 jeusadmin을 실행시킨다.
“jeusadmin <node name>”이라고 실행시키며, nodename은 JEUS 노드의 이름을 가리킨다(예제의 경우 “johan”가 된다). JEUS를 설치할 때 정의 했던 관리자의 ID와 패스워드를 입력한다. 관리자의 ID는 기본적으로 "administrator"로 설정되어 있다.
C:\TmaxSoft\JEUS6.0\bin>jeusadmin johan Login name>administrator Password> JEUS 6.0 Jeus Manager Controller johan>
“johan>” 라는 jeusadmin 프롬프트가 나타나면 JEUS를 제어할 수 있게 된다. 앞서 jeus 명령어로 실행시킨 JEUS Manager에 명령을 전달함으로써 제어한다.
JEUS와 설정된 EJB/서블릿 엔진을 실행시키기 위해 boot 명령어를 입력한다.
johan>boot johan_container1 johan_conatiner2
프롬프트가 나타나면 JEUS가 기동된 것이다.
EJB와 서블릿 엔진이 정상적으로 기동되었는지 확인하기 위해 jeusadmin 프롬프트에서 allenglist를 실행한다.
johan>allenglist ======================================== engines in the container johan_container1 johan_ws_engine1 johan_jms_engine1 johan_ejb_engine1 johan_servlet_engine1 ======================================== ======================================== engines in the container johan_container2 johan_ejb_engine2 johan_servlet_engine2 ========================================
jeusadmin 프롬프트에서 down 명령어를 실행하면 JEUS가 종료된다.
johan>down Do you really want to down whole JEUS? (y : n):>y johan down successful
jeusadmin 프롬프트에서 jeusexit를 입력하면 JEUS Manager가 완전히 종료되고 exit를 입력하면 jeusadmin이 종료된다.
johan>jeusexit johan jeusexit successful