본 장에서는 Jakarta EE 애플리케이션 파일(EAR)을 작성하고 이를 JEUS에 deploy하는 방법에 대해 설명한다. 또한 JEUS에서 제공하는 애플리케이션을 deploy할 수 있는 툴을 사용하여 JEUS 서버에 애플리케이션을 deploy하는 방법과 그 외 관련된 작업에 대해 설명한다.
본 절에서는 작성된 각각의 모듈을 포함하는 애플케이션 작성 방법 중 jar 유틸리티를 사용해서 Jakarta EE 애플리케이션을 직접 작성하는 방법에 대해서만 설명한다.
EAR 파일을 작성하기 전에 우선 포함될 모듈을 작성해야 한다. EAR 파일에 포함되는 모듈은 EJB 모듈인 JAR 파일과 웹 애플리케이션 모듈인 WAR 파일, 리소스 어댑터 모듈인 RAR 파일 등이 있다. 모듈 파일을 작성하는 자세한 내용에 대해서는 각 해당 안내서에서 다루고 있으므로 해당 안내서를 참고한다.
다음은 애플리케이션 작성 환경에 대한 설명이다.
myApp.ear이라는 EAR 파일을 작성한다. 이 파일은 ejb.jar라는 EJB 모듈과 web.war라는 웹 애플리케이션 모듈, appclient.jar 애플리케이션 클라이언트 모듈을 포함하고 있다.
애플리케이션 myApp.ear을 먼저 도메인의 Master Server인 "adminServer"로 install하고, 서버 "server1"에 deploy한다.
다음의 순서로 애플리케이션을 작성한다.
EAR 파일에 포함될 JAR, WAR, RAR 파일을 작성한다.
JAR, WAR, RAR 파일과 같은 디렉터리에서 META-INF 디렉터리를 생성한다.
application.xml 파일을 생성(EAR 파일의 모듈을 포함시킨다)해서 META-INF 디렉터리에 복사한다.
[예 4.1] <application.xml>
<?xml version="1.0" encoding="UTF-8"?> <application version="7" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"> <description>Application description</description> <display-name>Sample application</display-name> <module> <ejb>ejb.jar</ejb> </module> <module> <web> <web-uri>web.war</web-uri> <context-root>hello</context-root> </web> </module> <module> <java>appclient.jar</java> </module> </application>
다음과 같이 jar 유틸리티를 사용해서 명령어를 실행하면 myApp.ear 파일이 생성된다.
> jar cf myApp.ear ejb.jar web.war appclient.jar META-INF
콘솔 툴, WebAdmin을 통해서 제공하는 Deploy 관련 툴에서는 다음과 같은 작업들을 지원한다.
툴 | 설명 |
---|---|
애플리케이션 파일을 대상 서버나 클러스터로 복사하고, 애플리케이션을 서비스하기 위한 사전 작업을 한다. 대상으로 설정한 서버나 클러스터 중 하나라도 distribute에 실패하면 전체 작업을 실패로 간주하고 distribute에 성공한 서버에서 모두 undeploy한다. | |
애플리케이션 파일을 대상 서버로 복사하고, 애플리케이션을 서비스하기 위한 사전 작업을 한다. 이 작업이 성공하면 애플리케이션을 실행시킨다. 대상으로 설정한 서버나 클러스터 중 하나라도 distribute에 실패하면 전체 작업을 실패로 간주하고 distribute에 성공한 서버에서 모두 undeploy한다. Start 작업에서 실패한 서버가 있더라도 하나라도 서비스 가능한 상태가 있으면 애플리케이션 Start 작업은 성공이다. | |
대상 서버에 distribute(배포)되어 있는 애플리케이션을 동작시키는 작업이다. Start 작업에서 실패한 서버가 있더라도 하나라도 서비스 가능한 상태가 있으면 애플리케이션 Start 작업은 성공이다. | |
대상 서버에 배치되어 실행 중인 애플리케이션을 일시정지시키는 작업이다. 이때 애플리케이션을 대상 서버에서 삭제하지 않는다. 또한 애플리케이션 이름으로 start하거나 redeploy할 수도 있다. | |
배치되어 실행 중인 애플리케이션을 정지시키고, deploy되어 있는 대상 서버나 클러스터에서 애플리케이션을 제거하는 작업이다. | |
deploy되어 실행 중인 애플리케이션의 내용이 변경된 경우에 그 내용을 현재 애플리케이션에 반영하여 다시 deploy하는 작업이다. 모든 애플리케이션을 재배치할 때 Deploy 작업이 하나라도 실패하면 모든 애플리케이션은 정지된다. |
다음 작업들은 JEUS에서만 제공하는 Deploy 작업이다. 이 작업은 콘솔 툴이나 WebAdmin을 통해서만 해야 한다.
작업 | 설명 |
---|---|
deploy나 distribute된 애플리케이션에 대상으로 특정 서버 또는 클러스터를 추가한다. 이미 서비스되고 있는 애플리케이션을 서비스하는 대상을 확장하려고 할 때 사용하는 작업이다. 대상은 여러 서버 또는 여러 클러스터를 설정할 수 있고, 이 작업이 대상으로 설정한 서버나 클러스터에서 실패한 경우 전체 작업 실패로 간주하고 기존에 서비스되고 있던 서버를 제외한 새로 추가하려는 서버에서는 모두 undeploy된다. | |
deploy나 distribute된 애플리케이션에서 대상으로 설정된 특정 서버 또는 클러스터를 삭제한다. 이미 서비스되고 있는 애플리케이션을 서비스하는 대상을 축소하려고 할 때 사용하는 작업이다. 대상은 여러 서버 또는 여러 클러스터를 설정할 수 있다. |
본 절에서는 WebAdmin과 콘솔 툴을 사용한 애플리케이션 제어 및 모니터링 방법에 대해서 설명한다.
WebAdmin은 JEUS를 전반적으로 관리하기 위해 제공되는 웹 기반의 관리 툴이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택하면 애플리케이션 목록 화면이 나타난다. WebAdmin에서 애플리케이션을 deploy하거나 새로운 애플리케이션을 도메인에 install할 때 또는 도메인에 존재하는 애플리케이션의 정보를 조회할 때 모두 이 화면에서부터 시작해야 한다.
애플리케이션 목록 화면에서 검색 항목에 버튼을 클릭하면 아래와 같이 애플리케이션 화면이 확장되어 표시된다. 본 절에서는 WebAdmin을 사용해서 myApp.ear 애플리케이션을 도메인에 install, deploy, 조회하는 방법에 대해서 설명한다.
다음은 WebAdmin을 사용해서 애플리케이션을 도메인에 install하는 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한다.
애플리케이션 목록 화면([그림 4.1])의 검색 항목에 버튼을 클릭한 후 애플리케이션 화면([그림 4.2])에서 [설치] 버튼을 클릭하면 애플리케이션을 Install할 수 있다.
설치 화면에서 애플리케이션 ID와 애플리케이션 파일의 경로 등의 install 관련 정보를 입력하고 [설치] 버튼을 클릭한다.
다음은 설정 항목에 대한 설명이다. (*는 필수 입력항목)
항목 | 설명 |
---|---|
Id | install할 애플리케이션에 부여할 ID를 지정한다. ID를 입력하지 않은 경우 애플리케이션 파일 이름을 변경하여 ID로 사용한다. 애플리케이션 ID는 필수 입력 항목은 아니지만 관리의 편의상 입력하는 것을 권장한다. |
Path * | install할 애플리케이션 파일의 경로를 입력한다. [선택] 버튼으로 애플리케이션 파일을 선택할 수 있다. |
Force | 동일한 ID를 가진 애플리케이션이 이미 도메인에 존재할 경우 덮어쓸지 여부를 설정한다. 이미 deploy되어 있는 애플리케이션 내용이 변경되어 파일을 업데이트해야 하는 경우에 사용할 수 있다. |
Upgrade | JEUS 6 이하 버전의 JEUS DD를 사용하는 경우 JEUS에 맞는 DD로 변경할지 여부를 설정한다. |
install 작업을 마치고 나면 화면 상단에 그 결과가 나타난다. 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 해당 애플리케이션을 확인할 수 있다. 이때 애플리케이션은 INSTALLED 상태가 된다.
애플리케이션이 도메인에 더 이상 사용되지 않는다면 도메인에서 삭제할 수 있다. 애플리케이션이 INSTALLED 상태이거나 DEPLOYED 상태인 경우에 애플리케이션에 Uninstall 작업을 할 수 있다.
다음은 WebAdmin을 사용해서 애플리케이션을 도메인에서 Uninstall하는 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한 후 애플리케이션 목록 화면([그림 4.1])의 검색 항목에 버튼을 클릭한다.
애플리케이션 화면에서 삭제할 애플리케이션을 선택한 후 [삭제] 버튼을 클릭한다.
삭제여부 대화상자에서 [삭제] 버튼을 클릭하면 애플리케이션 Uninstall 작업이 진행된다. [취소] 버튼을 클릭하면 작업은 취소되고, 애플리케이션은 그대로 INSTALLED 상태로 남아있게 된다.
Uninstall 작업이 완료되면 화면 상단에 그 결과가 나타난다. 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 해당 애플리케이션에 대한 정보는 확인할 수 없다.
install된 애플리케이션에 deploy 명령어를 통해 애플리케이션이 서비스되도록 한다. 본 절에서는 애플리케이션을 deploy하는 3가지 방법에 대해 설명한다.
콘솔 툴을 통한 Run-time Deploy 방법은 다음의 사항을 가정하여 설명한다.
애플리케이션은 “4.1. 애플리케이션 작성”에서 작성한 myApp.ear을 사용한다.
JEUS의 도메인 이름은 'domain1'이고, 애플리케이션을 deploy할 서버는 'server1'이다.
deploy-application 명령어를 수행할 때 사용할 수 있는 옵션에 대한 자세한 내용은 “JEUS Reference 안내서”의 “4.2.6.4. deploy-application”을 참고한다.
JEUS에서는 콘솔 툴에서 애플리케이션을 Run-time Deploy할 경우 애플리케이션의 위치에 따라 다음의 3가지 방법을 제공한다. 각 방법은 deploy, stop, start, redeploy, undeploy의 순서대로 deploy 명령어를 실행하며, 각 명령어를 실행한 뒤에는 applist를 수행하여 각 단계에서의 애플리케이션 상태를 확인한다.
JEUS를 직접 관리할 수 있는 콘솔 툴을 통해 Master Server에 연결하여 서버나 클러스터의 제어 및 모니터링을 할 수 있으며, 애플리케이션을 deploy할 수도 있다.
다음은 콘솔 툴에서 사용하는 애플리케이션의 Deploy 관련 명령어이다.
명령어 | 설명 |
---|---|
애플리케이션을 deploy할 수 있도록 배치 대상에 애플리케이션을 복사하고, 애플리케이션 서비스를 위한 사전 준비작업을 한다. | |
애플리케이션을 deploy한다. Deploy란 Deploy 대상에 애플리케이션을 복사하고(Distribute), 애플리케이션의 서비스를 시작(Start)하는 것이다. Deploy가 성공적으로 완료되면 RUNNING 상태가 되며, Distribute 완료 후 서비스 단계에서 장애가 발생하면 DISTRIBUTED 상태에 머물러 있다. | |
DISTRIBUTED 상태에 있는 애플리케이션을 실행한다. 작업이 수행되는 동안에는 STARTING 상태로 성공적으로 완료되면 RUNNING 상태가 된다. | |
RUNNING 상태에 있는 애플리케이션을 정지한다. 작업이 수행되는 동안에는 STOPPING 상태로 성공적으로 완료되면 DISTRIBUTED 상태가 된다. | |
Deploy가 완료된 애플리케이션에 변경된 내용이 있는 경우 변경 내용을 반영하여 다시 deploy한다. Deploy와 같은 단계로 이루어지며 각 단계에서의 상태 또한 같다. | |
애플리케이션 서비스를 종료하고 배치 대상에서 애플리케이션을 제거한다. | |
도메인에 존재하는 애플리케이션의 정보를 출력한다. | |
Deploy되어 있는 애플리케이션에 서비스 대상을 추가한다. 서비스 대상은 서버나 클러스터가 될 수 있다. | |
Deploy되어 있는 애플리케이션에서 서비스 대상을 삭제한다. 서비스 대상은 서버나 클러스터가 될 수 있다. |
콘솔 툴에 대한 설명 및 각 명령어에 대한 자세한 내용은 “JEUS Reference 안내서”의 “4.2. jeusadmin”을 참고한다.
본 절에서는 WebAdmin과 콘솔 툴을 사용해서 도메인에 install한 애플리케이션 Deploy하는 방법을 설명한다.
다음은 WebAdmin을 사용해서 도메인에 install한 애플리케이션을 deploy하는 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한 후 애플리케이션 목록 화면([그림 4.1])의 검색 항목에 버튼을 클릭한다.
애플리케이션 화면에서 deploy할 애플리케이션을 체크박스에서 선택하고, [배포] 버튼을 클릭한다.
배포 화면에서 'Target Server' 항목에서 deploy할 대상 서버를 선택하고 [배포] 버튼을 클릭하면 애플리케이션 Deploy가 진행된다. 만약 Deploy가 아니라 distribute까지만 진행하려면 고급 선택사항의 'Distribute Only' 항목을 체크하고 [배포] 버튼을 클릭한다. 이 경우 애플리케이션을 서비스하기 위해서는 별도로 애플리케이션 Start 작업이 필요하다.
Deploy 작업이 성공적으로 수행되었다면 애플리케이션 목록에서 보여지는 해당 애플리케이션의 상태는 RUNNING이 된다. distribute만 진행했다면 애플리케이션의 상태는 DISTRIBUTED가 된다.
install-application 명령어를 통해 애플리케이션을 도메인에 install하여 INSTALL_HOME(DOMAIN_HOME/.applications)에 위치시킨다. 이때 애플리케이션의 ID를 옵션으로 줄 수 있다. ID를 주지 않은 경우는 myApp_ear이 애플리케이션의 ID가 된다. 애플리케이션이 도메인에 install되고 난 후에 deploy-application 명령어를 사용해 대상 서버에 애플리케이션을 deploy한다.
---------------------------------------------------------------- using deploy command for application with install application ---------------------------------------------------------------- [MASTER]domain1.adminServer>install-application -id myApp /usr/apphome/myApp.ear Successfully installed the application [myApp]. [MASTER]domain1.adminServer>application-info Application information for the domain [domain1]. ================================================================================ +----------+-----------+-------+----------+-----------+------------------------+ | Applicati|Application| State | Server | Cluster | Application Path | | on ID | Type | | Targets | Targets | | +----------+-----------+-------+----------+-----------+------------------------+ | myApp | | INSTAL| | | ${INSTALL_HOME}/myApp/m| | | |LED | | |yApp.ear | +----------+-----------+-------+----------+-----------+------------------------+ ================================================================================ [MASTER]domain1.adminServer>deploy myApp -servers server1 deploy the application for the application [myApp] succeeded. [MASTER]domain1.adminServer>application-info Application information for the domain [domain1]. ================================================================================ +----------+------------+---------+----------+-----------+---------------------+ | Applicati| Application| State | Server | Cluster | Application Path | | on ID | Type | | Targets | Targets | | +----------+------------+---------+----------+-----------+---------------------+ | myApp | EAR | RUNNING | server1 | | ${INSTALL_HOME}/myAp| | | | | | |p/myApp.ear | +----------+------------+---------+----------+-----------+---------------------+ ================================================================================ [MASTER]domain1.adminServer>stop-application myApp stop the application for the application [myApp] succeeded. [MASTER]domain1.adminServer>application-info Application information for the domain [domain1]. ================================================================================ +----------+-----------+--------+----------+----------+------------------------+ | Applicati|Application| State | Server | Cluster | Application Path | | on ID | Type | | Targets | Targets | | +----------+-----------+--------+----------+----------+------------------------+ | myApp | EAR | DISTRIB| server1 | | ${INSTALL_HOME}/myApp/m| | | |UTED | | |yApp.ear | +----------+-----------+--------+----------+----------+------------------------+ ================================================================================ [MASTER]domain1.adminServer>start-application myApp start the application for the application [myApp] succeeded. [MASTER]domain1.adminServer>application-info Application information for the domain [domain1]. ================================================================================ +----------+------------+---------+----------+-----------+---------------------+ | Applicati| Application| State | Server | Cluster | Application Path | | on ID | Type | | Targets | Targets | | +----------+------------+---------+----------+-----------+---------------------+ | myApp | EAR | RUNNING | server1 | | ${INSTALL_HOME}/myAp| | | | | | |p/myApp.ear | +----------+------------+---------+----------+-----------+---------------------+ ================================================================================ [MASTER]domain1.adminServer>redeploy-application myApp redeploy application on JEUS Master Server for the application [myApp] succeeded. [MASTER]domain1.adminServer>application-info Application information for the domain [domain1]. ================================================================================ +----------+------------+---------+----------+-----------+---------------------+ | Applicati| Application| State | Server | Cluster | Application Path | | on ID | Type | | Targets | Targets | | +----------+------------+---------+----------+-----------+---------------------+ | myApp | EAR | RUNNING | server1 | | ${INSTALL_HOME}/myAp| | | | | | |p/myApp.ear | +----------+------------+---------+----------+-----------+---------------------+ ================================================================================ [MASTER]domain1.adminServer>undeploy myApp Undeploying [myApp] (This may take time due to graceful undeployment) .......... undeploy the application for the application [myApp] succeeded. successfully undeployed (elapsed = 415ms) [MASTER]domain1.adminServer>application-info Application information for the domain [domain1]. ================================================================================ +----------+-----------+-------+----------+-----------+------------------------+ | Applicati|Application| State | Server | Cluster | Application Path | | on ID | Type | | Targets | Targets | | +----------+-----------+-------+----------+-----------+------------------------+ | myApp | EAR | INSTAL| | | ${INSTALL_HOME}/myApp/m| | | |LED | | |yApp.ear | +----------+-----------+-------+----------+-----------+------------------------+ ================================================================================ [MASTER]domain1.adminServer>uninstall-application myApp uninstall the application for the application [myApp] succeeded. : Successfully deleted [myApp]. [MASTER]domain1.adminServer>application-info No applications exist in this domain. Application information for the domain [domain1]. ================================================================================ +------------+---------------+-------+------------+-------------+--------------+ | Application| Application | State | Server | Cluster | Application | | ID | Type | | Targets | Targets | Path | +------------+---------------+-------+------------+-------------+--------------+ (No data available) ================================================================================
애플리케이션 저장소를 추가하고 나면 저장소에 존재하는 애플리케이션을 deploy한다. 애플리케이션 저장소의 기능과 저장소를 추가, 삭제하는 방법에 대한 자세한 내용은 “1.6.1. 애플리케이션 저장소 추가/삭제/조회”를 참고한다.
WebAdmin을 사용해서 애플리케이션 저장소에 위치하는 애플리케이션을 deploy하는 방법은 도메인에 install된 애플리케이션을 deploy하는 것과 동일하다. 애플리케이션 Deploy 작업이 완료되면 화면 상단에 그 결과가 나타나고, 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 보여지는 해당 애플리케이션의 상태는 RUNNING이 된다.
다음은 콘솔 툴을 사용해서 애플리케이션 저장소에 있는 애플리케이션 deploy하는 예제이다.
[MASTER]domain1.adminServer>add-application-repository /home/user1/apps Successfully performed the ADD operation for An application repository. Check the results using "add-application-repository or list-application-repositories" [MASTER]domain1.suok>list-application-repositories Application Repositories ================================================================================ +------------------------------------------------------------------------------+ | Path to Application Repository | +------------------------------------------------------------------------------+ | /home/user1/apps | +------------------------------------------------------------------------------+ ================================================================================ [MASTER]domain1.adminServer>application-info Application information for the domain [domain1]. ================================================================================ +----------+-----------+-------+----------+-----------+------------------------+ | Applicati|Application| State | Server | Cluster | Application Path | | on ID | Type | | Targets | Targets | | +----------+-----------+-------+----------+-----------+------------------------+ | exploded | | INSTAL| | | /home/user1/apps/explod| | | |LED | | |ed | +----------+-----------+-------+----------+-----------+------------------------+ ================================================================================ [MASTER]domain1.adminServer>deploy exploded -servers server1 deploy the application for the application [exploded.war] succeeded. [MASTER]domain1.adminServer>application-info Application information for the domain [domain1]. ================================================================================ +----------+------------+---------+----------+-----------+---------------------+ | Applicati| Application| State | Server | Cluster | Application Path | | on ID | Type | | Targets | Targets | | +----------+------------+---------+----------+-----------+---------------------+ | exploded | WAR | RUNNING | server1 | | /home/user1/apps/exp| | | | | | |loded | +----------+------------+---------+----------+-----------+---------------------+ ================================================================================
다음은 상위 디렉터리를 애플리케이션 저장소로 추가할 수 없는 경우에 path 옵션을 설정하고 deploy하는 방법에 대한 설명이다. Master Server가 존재하는 머신에 있는 애플리케이션의 절대 경로를 설정하고 deploy하는 기능에 대한 자세한 내용은 “1.7. path를 지정하여 Deploy”를 참고한다.
다음은 WebAdmin을 사용해서 path를 지정하여 Deploy하는 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한 후 애플리케이션 목록 화면([그림 4.1])의 검색 항목에 버튼을 클릭한다.
애플리케이션 화면에서 [직접 배포] 버튼을 클릭하면 도메인에 새로운 애플리케이션을 deploy할 수 있는 팝업창이 나타난다.
배포 화면의 'Path' 항목에 deploy할 애플리케이션이 위치하는 절대경로를 입력한다. 'Target Server' 항목에서 deploy할 대상 서버인 'server1'을 선택하고 [배포] 버튼을 클릭하면 애플리케이션 Deploy가 진행된다. 필요하다면 고급 선택사항 영역에서 Deploy 옵션을 설정할 수 있다.
Deploy 작업을 마치고 나면 화면 상단에 그 결과가 나타난다. 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 보여지는 해당 애플리케이션의 상태는 RUNNING이 된다.
다음은 콘솔 툴을 사용해서 path를 지정하여 deploy하는 방법이다.
[MASTER]domain1.adminServer>deploy -path /home/user1/apps/myApp.ear -servers server1 deploy the application for the application [/home/user1/apps/myApp.ear] succeeded. [MASTER]domain1.adminServer>application-info Application information for the domain [domain1]. ================================================================================ +-----------+------------+---------+-----------+-----------+-------------------+ | Applicati |Application | State | Target | Target | Application Path | | on ID | Type | | Servers | Clusters | | +-----------+------------+---------+-----------+-----------+-------------------+ | myApp.ear | EAR | RUNNING | server1 | | /home/user1/apps/ | | | | | | |myApp.ear | +-----------+------------+---------+-----------+-----------+-------------------+ ================================================================================
애플리케이션이 수정되면 deploy 명령어를 통해 애플리케이션이 서비스되도록 할 수 있다. 자세한 내용은 “2.2. Graceful Redeployment”를 참고한다.
다음은 WebAdmin을 사용해서 애플리케이션 Redeploy하는 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한 후 애플리케이션 목록 화면([그림 4.1])의 검색 항목에 버튼을 클릭한다.
애플리케이션 화면에서 redeploy할 애플리케이션의 'Action' 항목에 [재배포] 버튼을 클릭한다.
재배포 화면의 'Timeout' 항목에 Graceful Redeploy Timeout과 그외 필요한 Redeploy 옵션을 설정하고 [재배포] 버튼을 클릭하면 애플리케이션 redeploy가 진행된다.
도메인에서 서비스되고 있는 애플리케이션 서비스를 중단하고 애플리케이션을 내리려면 undeploy 명령어를 통해 가능하다.
다음은 WebAdmin을 사용해서 애플리케이션을 undeploy하는 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한 후 애플리케이션 목록 화면([그림 4.1])의 검색 항목에 버튼을 클릭한다.
애플리케이션 화면에서 undeploy할 애플리케이션을 체크박스에서 선택하고, 애플리케이션 목록 상단에 위치한 [배포 해제] 버튼을 클릭한다.
배포 해제 화면의 'Timeout' 항목을 설정해서 애플리케이션이 처리 중인 서비스를 보장해주도록 할 수 있다. 아무 옵션도 설정하지 않으면 5분(300초) 동안 애플리케이션은 처리 중인 요청이 모두 완료될 때까지 undeploy를 진행하지 않는다. Graceful Undeploy를 위해 Timeout을 설정하고 [배포 해제] 버튼을 클릭하면 undeploy가 진행된다. 애플리케이션의 Graceful Undeploy에 대한 설명은 “2.1. Graceful Undeployment”를 참고한다.
Undeploy 작업이 완료되면 화면 상단에 그 결과가 나타난다. 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 보여지는 해당 애플리케이션의 상태는 INSTALLED가 된다.
Install 과정을 거치지 않고 deploy한 애플리케이션을 undeploy하는 경우에는 INSTALLED 상태로 표시되지 않고 목록에서 바로 삭제된다.
애플리케이션을 deploy할 때 'Only Distribute' 옵션을 주고 distribute만 수행했거나, 서비스 중인 애플리케이션을 stop 명령어를 수행하여 DISTRIBUTED 상태인 애플리케이션을 다시 서비스하도록 하려면 Start 작업을 수행해야 한다.
다음은 WebAdmin을 사용해서 중지된 애플리케이션이 서비스를 시작하도록 하는 과정(start)에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한 후 애플리케이션 목록 화면([그림 4.1])의 검색 항목에 버튼을 클릭한다.
애플리케이션 화면에서 서비스를 시작할 DISTRIBUTED 상태인 애플리케이션을 체크박스에서 선택하고, 애플리케이션 목록 상단에 위치한 [실행] 버튼을 클릭한다.
실행 화면의 항목을 확인한 후 [실행] 버튼을 클릭한다. [취소] 버튼을 클릭하면 애플리케이션 실행 작업은 취소된다.
애플리케이션 Start 작업이 성공적으로 수행되었다면 애플리케이션 목록에서 보여지는 해당 애플리케이션의 상태는 RUNNING이 된다.
서비스 중인 애플리케이션에 stop 명령어를 수행하여 애플리케이션 서비스를 잠시 중지할 수 있다.
다음은 WebAdmin을 사용해서 애플리케이션이 서비스를 중지하는 과정(stop)에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한 후 애플리케이션 목록 화면([그림 4.1])의 검색 항목에 버튼을 클릭한다.
애플리케이션 화면에서 서비스를 중지할 애플리케이션을 체크박스에서 선택하고, 애플리케이션 목록 하단에 위치한 [중단] 버튼을 클릭한다.
중단 화면에서 항목을 확인한 후 [중단] 버튼을 클릭하면 애플리케이션의 서비스가 중지되어 이후에 들어오는 요청에 대해서는 처리되지 않는다. [취소] 버튼을 클릭하면 애플리케이션 서비스 중지 작업은 취소된다.
애플리케이션 Stop 작업이 성공적으로 수행되면 애플리케이션 목록에서 보여지는 해당 애플리케이션의 상태는 DISTRIBUTED가 된다.
애플리케이션 서비스를 확장하기 위해 애플리케이션을 서비스할 대상에 서버나 클러스터를 추가하는 기능을 제공한다. 이미 도메인에 존재하는 애플리케이션을 특정 서버에만 deploy할 수는 없기 때문에 서비스 대상을 추가(add-target)하는 별도의 명령어를 지원한다. 애플리케이션에 서비스 대상을 추가하는 명령(add-target)은 애플리케이션이 RUNNING 상태이거나 DISTRIBUTED 상태일 때 가능하다.
애플리케이션 서비스 대상에 서버를 추가하려면 서버가 하나 더 존재해야 한다. 서버를 추가하는 방법은 “JEUS Server 안내서”의 “2.2. 서버 추가”를 참고한다.
다음은 WebAdmin을 사용해서 서비스 중인 애플리케이션에 서버를 추가하는 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한 후 애플리케이션 목록 화면([그림 4.1])의 검색 항목에 버튼을 클릭한다.
애플리케이션 화면에서 애플리케이션의 'Action' 항목에 [타겟 추가] 버튼을 클릭한다.
타겟 추가 화면의 'Target Server' 항목에서 애플리케이션서비스 대상에 추가할 서버를 선택하고 [확인] 버튼을 클릭하면 해당 서버에 애플리케이션 Deploy가 진행된다.
명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 해당 애플리케이션을 선택하여 'Target Server'와 'Running Servers' 항목에 선택한 서버가 추가되어 있는 것을 확인할 수 있다.
애플리케이션 서비스를 축소하기 위해 애플리케이션을 서비스하고 있는 대상에서 서버나 클러스터를 삭제하는 기능을 제공한다. 이미 도메인에 존재하는 애플리케이션을 특정 서버에만 undeploy할 수 없기 때문에 서비스 대상을 삭제(remove-target)하는 별도의 명령어를 지원한다. 애플리케이션에 서비스 대상을 삭제하는 명령은 애플리케이션이 RUNNING 상태 또는 DISTRIBUTED 상태일 때 가능하다.
다음은 WebAdmin을 사용해서 서비스 중인 애플리케이션에서 서비스 중인 서버를 삭제하는 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한 후 애플리케이션 목록 화면([그림 4.1])의 검색 항목에 버튼을 클릭한다.
애플리케이션 화면에서 서비스를 중지할 애플리케이션을 선택하고, 'Action' 항목에 [타겟 삭제] 버튼을 클릭한다.
타겟 제거 화면의 'Target Server' 항목에서 제거할 서버를 선택하고 [확인] 버튼을 클릭하면 해당 서버에만 애플리케이션 Undeploy가 진행된다.
명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 해당 애플리케이션을 선택하여 'Server'와 'Running Servers' 항목에 선택한 서버가 삭제된 것을 확인할 수 있다.
본 절에서는 WebAdmin과 콘솔을 사용해서 애플리케이션 정보를 확인하는 방법에 대해서 설명한다.
WebAdmin에서는 애플리케이션에 대해서 다음의 두 가지의 정보를 확인할 수 있다.
애플리케이션이 어떻게 deploy되어 있는가?
애플리케이션이 어떻게 구성되어 있는가?
애플리케이션이 어떤 서버나 클러스터에 어떤 속성으로 deploy되어 있는지를 확인할 수 있다.
다음은 WebAdmin을 사용해서 애플리케이션의 Deploy 정보를 확인하는 방법이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한 후 애플리케이션 목록 화면([그림 4.1])의 검색 항목에 버튼을 클릭한다.
애플리케이션 화면에서 애플리케이션 ID를 클릭하면 애플리케이션 정보를 확인할 수 있다.
확인할 수 있는 정보는 애플리케이션의 ID, 애플리케이션이 Master Server에 위치하고 있는 경로, 애플리케이션 타입, 그리고 JEUS에서 제공하는 deploy할 때 설정하는 옵션 정보들이다. deploy 옵션에 대한 자세한 설명은 WebAdmin에서 항목 설명이나 “JEUS Reference 안내서”의 “4.2.6.4. deploy-application”을 참고한다.
애플리케이션이 어떻게 구성되어 있는지 실제 애플리케이션의 모듈 정보를 확인할 수 있다.
EAR일 경우에는 EAR 애플리케이션을 구성하고 있는 모듈 리스트를 확인할 수 있다. 애플리케이션을 구성하는 모듈 중 하나를 선택하면 해당 모듈에 대한 자세한 구성 정보를 확인할 수 있다. 이 정보는 EJB나 웹 모듈에 대해서만 확인 가능하다. EJB 모듈을 선택하면 EJB Bean 리스트를 확인할 수 있고, 웹 모듈을 선택하면 서블릿 리스트를 확인할 수 있다.
WebAdmin 메인 화면에서 Master Server를 선택하면 설정 화면으로 이동한다. 상단 탭에서 [애플리케이션]을 선택하면 애플리케이션 목록 화면이 나타난다. 애플리케이션 목록에서 애플리케이션 ID를 클릭하면 애플리케이션 경로, 형식, 배포 시간, 대상 서버 등 기본적인 정보를 확인할 수 있다.
애플리케이션 Deploy 정보 화면에서 애플리케이션 정보의 'Running Servers'에서 특정 서버를 클릭하면 애플리케이션 구성 정보를 확인할 수 있다.
EAR 애플리케이션인 경우에는 위와 같이 애플리케이션을 구성하는 모듈 리스트를 확인할 수 있을 뿐만 아니라 애플리케이션을 구성하고 있는 EJB 모듈과 WEB 모듈의 정보도 확인할 수 있다.
모듈의 정보는 EJB나 WEB일 경우에만 확인할 수 있다. 클라이언트 모듈이나 리소스 모듈인 경우에는 모듈 정보를 확인하는 기능을 제공하지 않는다.
EJB 모듈 정보 확인
다음은 EAR 애플리케이션인 myApp를 구성하는 EJB 모듈 'ejb'에 대한 정보를 확인하는 방법이다.
WEB 모듈 정보 확인
다음은 EAR 애플리케이션인 myApp를 구성하고 있는 웹 모듈 'web'에 대한 정보를 확인하는 방법이다.
콘솔 툴의 application-info 명령어를 통해 myApp.ear 애플리케이션에 대한 정보를 조회할 수 있다.
다음은 콘솔 툴에서 애플리케이션 정보를 확인하는 예제이다. 각 옵션에 대한 자세한 설명은 “JEUS Reference 안내서”의 “4.2.6.3. application-info”를 참조한다.
[MASTER]domain1.adminServer> application-info Application information for the domain [domain1]. ================================================================================ +----------+------------+---------+----------+-----------+---------------------+ | Applicati| Application| State | Server | Cluster | Application Path | | on ID | Type | | Targets | Targets | | +----------+------------+---------+----------+-----------+---------------------+ | myApp | EAR | RUNNING | server1 | | ${INSTALL_HOME}/myAp| | | | | | |p/myApp.ear | +----------+------------+---------+----------+-----------+---------------------+ ================================================================================ [MASTER]domain1.adminServer>application-info -id myApp -server server1 Application information for the server [server1] in the domain [domain1]. ================================================================================ +------------+-----------------+-------------+------+------------+-------------+ | Application| Application Name| Application | State| Server | Cluster | | ID | | Type | | Targets | Targets | +------------+-----------------+-------------+------+------------+-------------+ | myApp | myApp | ear | RUNNI| server1 | | | | | |NG | | | +------------+-----------------+-------------+------+------------+-------------+ ================================================================================ [MASTER]domain1.adminServer>application-info -id myApp -server server1 -detail Application name : myApp Application [myApp] =============================================================== +-------------+---------------------------------+-------------+ | Module Name | Unique Module Name | Module Type | +-------------+---------------------------------+-------------+ | ejb | myApp#ejb | EJB | | appclient | myApp#appclient | CAR | | web | myApp#web | WAR | +-------------+---------------------------------+-------------+ To view detailed information about EJBs or web modules in an EAR, use the "-module" or "-type" option. =============================================================== [MASTER]domain1.adminServer>application-info -id myApp -server server1 -detail -module ejb Application name : myApp General information about the EJB module [ejb]. ============================================================== +-------------+----------------------------------------------+ | Module Name | Unique Module Name | +-------------+----------------------------------------------+ | ejb | myApp#ejb | +-------------+----------------------------------------------+ ============================================================== Beans ================================================================================ +-----------+-------------------------+-------------------+--------------------+ | Bean Name | Type | Local Export Name | Remote Export Name | +-----------+-------------------------+-------------------+--------------------+ | HelloBean | StatelessSessionBean | | | +-----------+-------------------------+-------------------+--------------------+ ================================================================================ [MASTER]domain1.adminServer>application-info -id myApp -server server1 -detail -type war Application name : myApp There are no EJBs in this module. General information about the web module [web]. =============================================================== +-------------+--------------------------------+--------------+ | Module Name | Unique Module Name | Context Path | +-------------+--------------------------------+--------------+ | web | myApp#web | /hello | +-------------+--------------------------------+--------------+ =============================================================== Servlets ================================================================================ +---------+------------------+-------+-------+-----------+---------+-----------+ | Name | Class | State | Count | Attribute | RegType |URLPatterns| +---------+------------------+-------+-------+-----------+---------+-----------+ | HelloSer| dvt.deployment.se| READY | 0 | SYNC | WEB_XML | /HelloServ| |vlet |rvlet.HelloServlet| | | | |let | +---------+------------------+-------+-------+-----------+---------+-----------+ ================================================================================ Filters ================================================================================ +------+-------+--------------+-----------+----------------------+-------------+ | Name | Class | Attribute | RegType | URLPatterns | Servlets | +------+-------+--------------+-----------+----------------------+-------------+ (No data available) ================================================================================ Listeners ================================================ +------+------+--------------------------------+ | Name | Type | RegType | +------+------+--------------------------------+ (No data available) ================================================ EJBs ================================================================================ +-----------+------+-------------------------+---------------------------------+ | Bean Name | Type | Local Export Name | Remote Export Name | +-----------+------+-------------------------+---------------------------------+ (No data available) ================================================================================ [MASTER]domain1.suok>application-info -id myApp -server server1 -detail -module ejb -bean HelloBean bean HelloBean Application name : myApp Module name : ejb Bean name: HelloBean ================================================================================ +---------------+-----------+-------------------+--------------+---------------+ | Name | (Count) | WaterMark(High:Low| Bound(Upper:L| Time(Max:Min:T| | | | :Cur) | ower) | otal) | +---------------+-----------+-------------------+--------------+---------------+ | create | times(0) | | | | +---------------+-----------+-------------------+--------------+---------------+ | remove | times(0) | | | | +---------------+-----------+-------------------+--------------+---------------+ | timed-rb | transactio| | | | | |n(0) | | | | +---------------+-----------+-------------------+--------------+---------------+ | request | request(0)| | | | +---------------+-----------+-------------------+--------------+---------------+ | active-bean | | bean(0:0:0) | | | +---------------+-----------+-------------------+--------------+---------------+ | rolledback | transactio| | | | | |n(0) | | | | +---------------+-----------+-------------------+--------------+---------------+ | total-bean | | bean(0:0:0) | | | +---------------+-----------+-------------------+--------------+---------------+ | comitted | transactio| | | | | |n(0) | | | | +---------------+-----------+-------------------+--------------+---------------+ | MethodReadyCou| | bean(0:0:0) | | | |nt | | | | | +---------------+-----------+-------------------+--------------+---------------+ | active-thread | | thread(0:0:0) | | | +---------------+-----------+-------------------+--------------+---------------+ | total-remote-t| |thread(100:100:100)| | | |hread | | | | | +---------------+-----------+-------------------+--------------+---------------+ ================================================================================
application-info 명령은 도메인에 존재하는 모든 애플리케이션의 정보를 출력한다. 기본적으로 출력되는 정보는 다음과 같다.
항목 | 설명 |
---|---|
Application ID | 애플리케이션의 ID이다. 이 값은 도메인에서 유일해야 한다. |
Application Type | 애플리케이션의 종류로 5가지 중 하나가 될 수 있다.
|
state | 애플리케이션이 도메인에서의 상태로 다음 4가지 중 하나가 될 수 있다.
각 상태에 대한 자세한 설명은 “1.1.3. 애플리케이션 상태”를 참고한다. |
Server Target | 애플리케이션이 deploy되어 있는 대상 서버이다. |
Cluster Target | 애플리케이션이 deploy되어 있는 대상 클러스터이다. |
Application Path | Master Server에 존재하는 애플리케이션 파일의 경로를 나타낸다. |
exploded 모듈 형태의 애플리케이션은 파일을 압축하여 다른 머신의 MS에 deploy할 수 있다. 이를 Staging Mode Deploy라고 한다. 애플리케이션 파일이 애플리케이션 저장소에 위치하거나 Master Server가 존재하는 머신에 있는 절대 경로를 설정하고 deploy할 수 있다. Staging Mode Deploy 기능에 대한 자세한 내용은 “1.8. Staging Mode Deploy”를 참고한다.
다음은 WebAdmin을 사용해서 path를 지정하여 deploy하는 방법에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택하면 애플리케이션 목록 화면이 나타난다.
애플리케이션 목록에서 INSTALLED 상태의 exploded 애플리케이션을 선택하고 애플리케이션 목록 상단에 위치한 [배포] 버튼을 클릭하거나, 애플리케이션 목록 상단에 위치한 [직접 배포] 버튼을 클릭한 후 'Path' 항목을 입력한다.
배포 화면의 'Target Server' 항목에서 deploy할 대상 서버를 선택한다.
Deploy 정보 입력 화면의 고급 선택사항에서 'Staging' 항목을 체크하고 [배포] 버튼을 클릭하면 애플리케이션 Deploy가 진행된다.
Deploy 작업이 완료되면 화면 상단에 그 결과가 나타난다. 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 해당 애플리케이션의 상태는 RUNNING이 된다.
server1 로그에서 애플리케이션이 Staging Mode로 deploy된 것을 확인할 수 있다.
...
[2016.08.09 23:17:48][2] [server1-40] [WEB-1032] Distributed the web context [exploded] information
- Virtual host : DEFAULT_HOST
- Context path : /exploded
- Document base : /home/user1/jeus/domains/domain1/servers/server1/.workspace/deployed/exploded/exploded_war___
...
다음은 콘솔 툴을 사용한 Staging Mode Deploy 방법이다. deploy 명령어를 staging 옵션을 지정하여 수행한다.
[MASTER]domain1.adminServer>deploy exploded -servers server1 -staging deploy the application for the application [exploded] succeeded. [MASTER]domain1.adminServer>application-info Application information for the domain [domain1]. ================================================================================ +----------+------------+---------+----------+-----------+---------------------+ | Applicati| Application| State | Server | Cluster | Application Path | | on ID | Type | | Targets | Targets | | +----------+------------+---------+----------+-----------+---------------------+ | exploded | WAR | RUNNING | server1 | | /home/user1/apps/exp| | | | | | |loded | +----------+------------+---------+----------+-----------+---------------------+ | myApp | EAR | RUNNING | server1 | | ${INSTALL_HOME}/myAp| | | | | | |p/myApp.ear | +----------+------------+---------+----------+-----------+---------------------+ ================================================================================
Deployment Plan은 Deploy Time에 애플리케이션의 DD의 내용을 수정할 수 있는 애플리케이션 외부의 설정 파일이다. JEUS는 XML 형식의 Deployment Plan을 정의하며 EJB, 웹 애플리케이션, EAR의 표준 DD와 JEUS DD에 Deployment Plan를 적용할 수 있도록 지원한다. 애플리케이션을 deploy할 때 Deployment Plan 사용에 대해 명시하면 Deploy Time에 DD와 Deployment Plan의 설정을 merge하여 최종 애플리케이션 설정을 확정한 뒤 Deploy를 수행한다.
본 절에서는 Deployment Plan의 설정 방법과 동작 방식에 대해 설명한다. 또한 WebAdmin과 콘솔 툴에서 Deployment Plan을 사용한 Deploy 방법에 대해 설명한다.
Deployment Plan의 작성 예제를 통해 설정 방법과 동작 방식에 대해 설명한다.
다음은 Deployment Plan의 작성 예이다.
<?xml version="1.0" encoding="UTF-8"?> <jeus-deployment-plan xmlns="http://www.tmaxsoft.com/xml/ns/jeus" xmlns:jeus="http://www.tmaxsoft.com/xml/ns/jeus" xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee" xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"> <descriptors> <!-- For standalone EJB --> <descriptor> <uri>META-INF/ejb-jar.xml</uri> <configurations> <configuration> <action>REPLACE</action> <xpath>//j2ee:ejb-name[.='ByeBean']</xpath> <value> <![CDATA[<ejb-name>HiBean</ejb-name>]]> </value> </configuration> <configuration> <action>DELETE</action> <xpath>/child::j2ee:ejb-jar/child::j2ee:enterprise-beans/ child::j2ee:session/child::j2ee:local-home[.='HelloHomeLocal']</xpath> </configuration> <configuration> <action>APPEND_CHILD</action> <xpath>/child::j2ee:ejb-jar/descendant::j2ee:session[2]</xpath> <value> <![CDATA[<transaction-type>Bean</transaction-type>]]> </value> </configuration> <configuration> <action>INSERT_BEFORE</action> <xpath>/j2ee:ejb-jar/j2ee:enterprise-beans/j2ee:session/ j2ee:ejb-name[.='HelloBean']/../j2ee:transaction-type</xpath> <value> <![CDATA[<session-type>Stateless</session-type>]]> </value> </configuration> </configurations> </descriptor> <descriptor> <uri>META-INF/jeus-ejb-dd.xml</uri> <configurations> <configuration> <action>REPLACE</action> <xpath>/jeus:jeus-ejb-dd/jeus:beanlist/jeus:jeus-bean/ jeus:export-name[.='ByeBean']</xpath> <value> <![CDATA[<export-name>HiBean</export-name>]]> </value> </configuration> <configuration> <action>DELETE</action> <xpath>/jeus:jeus-ejb-dd/jeus:beanlist/jeus:jeus-bean/ jeus:local-export-name[.='HelloBeanLocal']</xpath> </configuration> <configuration> <action>APPEND_CHILD</action> <xpath>/jeus:jeus-ejb-dd/jeus:beanlist/jeus:jeus-bean</xpath> <value> <![CDATA[<jeus-rmi>false</jeus-rmi>]]> </value> </configuration> <configuration> <action>INSERT_BEFORE</action> <xpath>/jeus:jeus-ejb-dd/jeus:beanlist/jeus:jeus-bean/ jeus:ejb-name[.='HiBean']/../jeus:jeus-rmi</xpath> <value> <![CDATA[<thread-max>100</thread-max>]]> </value> </configuration> </configurations> </descriptor> <!-- For standalone web application --> <descriptor> <uri>WEB-INF/web.xml</uri> <configurations> <configuration> <action>REPLACE</action> <xpath>/child::javaee:web-app/child::javaee:servlet-mapping/ child::javaee:servlet-name[.='HiServlet']</xpath> <value> <![CDATA[<servlet-name>HelloServlet</servlet-name>]]> </value> </configuration> <configuration> <action>DELETE</action> <xpath>//javaee:load-on-startup</xpath> </configuration> <configuration> <action>APPEND_CHILD</action> <xpath>/javaee:web-app/descendant::javaee:login-config</xpath> <value> <![CDATA[<auth-method>BASIC</auth-method>]]> </value> </configuration> <configuration> <action>INSERT_BEFORE</action> <xpath>/javaee:web-app/javaee:env-entry/ javaee:env-entry-value[.='value1']</xpath> <value> <![CDATA[<env-entry-type>java.lang.String</env-entry-type>]]> </value> </configuration> </configurations> </descriptor> <descriptor> <uri>WEB-INF/jeus-web-dd.xml</uri> <configurations> <configuration> <action>REPLACE</action> <xpath>//jeus:enable-jsp</xpath> <value> <![CDATA[<enable-jsp>true</enable-jsp>]]> </value> </configuration> <configuration> <action>DELETE</action> <xpath>/jeus:jeus-web-dd/child::jeus:max-instance-pool-size</xpath> </configuration> <configuration> <action>INSERT_BEFORE</action> <xpath>/jeus:jeus-web-dd/descendant::jeus:enable-jsp</xpath> <value> <![CDATA[<context-path>/hello</context-path>]]> </value> </configuration> <configuration> <action>APPEND_CHILD</action> <xpath>//jeus:jeus-web-dd</xpath> <value> <![CDATA[<webinf-first></enabled>false</enabled></webinf-first>]]> </value> </configuration> </configurations> </descriptor> <!-- For EAR --> <descriptor> <uri>META-INF/application.xml</uri> <configurations> <configuration> <action>REPLACE</action> <xpath>/javaee:application/javaee:library-directory</xpath> <value> <![CDATA[<library-directory>mylib</library-directory>]]> </value> </configuration> </configurations> </descriptor> <descriptor> <uri>ejb.jar/META-INF/ejb-jar.xml</uri> <configurations> <configuration> <action>REPLACE</action> <xpath>/javaee:ejb-jar/javaee:enterprise-beans/ javaee:session/javaee:ejb-class</xpath> <value> <![CDATA[<ejb-class>HelloBean</ejb-class>]]> </value> </configuration> </configurations> </descriptor> <descriptor> <uri>web.war/WEB-INF/web.xml</uri> <configurations> <configuration> <action>REPLACE</action> <xpath>/javaee:web-app/javaee:servlet-mapping/ javaee:servlet-name</xpath> <value> <![CDATA[<servlet-name>HelloServlet</servlet-name>]]> </value> </configuration> </configurations> </descriptor> </descriptors> </jeus-deployment-plan>
다음은 <descriptor>의 하위 태그에 대한 설명이다.
<descriptor>는 여러 <configuration> 태그로 이루어져 있다.
<configuration>은 target DD에 적용할 하나의 설정 단위로 하위에 <action>, <xpath>, <value> 태그로 구성된다.
태그 | 설명 |
---|---|
<action> | DD의 특정 태그에 대해서 어떤 설정을 변경할 것인지를 명시한다. 다음은 설정값에 대한 설명이다.
|
<xpath> | DD의 특정 태그를 xpath expression으로 지정한다. 이때 <xpath> 표준에 따라 <xpath> 경로에 위치하는 모든 태그는 XML Name Space를 통해 qualified name으로 표현되어야 한다. 이를 위해 Deployment Plan에 각 DD의 XML Name Space를 Name Space Prefix와 함께 선언한다. 예를 들어 JEUS DD에 있는 임의의 태그를 <xpath>로 지정할 경우 <xpath> 경로에 위치하는 모든 태그는 JEUS XML Name Space(http://www.tmaxsoft.com/xml/ns/jeus)와 함께 qualified name으로 표현될 필요가 있다. Deployment Plan에서는 JEUS XML Name Space를 'jeus' Prefix로 매칭시켜 놓았으므로 <xpath> 경로에 위치하는 모든 태그의 이름 앞에 'jeus' Prefix를 붙여 qualified name을 표현한다. |
<value> | <value>는 <action> 값이 REPLACE, APPEND_CHILD, INSERT_BEFORE인 경우에만 유효하다. <action> 값에 따른 설정값은 다음과 같다.
<value> 값으로 설정되는 태그는 일반적으로 depth를 갖는 XML fragment 형태를 가정하므로 <value> 값은 특별히 CDATA section으로 표현한다. CDATA section에 action 수행을 위해 필요한 XML fragment를 그대로 적는다. |
위의 작성 예제를 바탕으로 태그별 동작 방식에 대해 설명한다.
Deployment Plan은 여러 개의 <descriptor> 태그로 이루어져 있다.
<descriptor> 단위로 target이 되는 DD를 지정하며 이를 위해 <uri> 태그를 사용한다. 애플리케이션 파일을 루트(root)로 가정하고 그로부터 정해지는 DD의 상대 경로를 <uri> 값으로 명시하여 target DD를 결정한다.
예를 들어 Standalone EJB 모듈의 표준 DD는 애플리케이션 루트로부터 항상 META-INF/ejb-jar.xml에 위치하며 JEUS DD는 META-INF/jeus-ejb-dd.xml에 위치한다. 그러므로 위의 Deployment Plan의 첫 번째 <descriptor>는 그것의 <uri> 값으로부터 Standalone EJB 모듈의 표준 DD를 위한 것이고 두 번째 <descriptor>는 그것의 <uri> 값으로부터 Standalone EJB 모듈의 JEUS DD를 위한 것임을 알 수 있다. Standalone 웹 애플리케이션이나 EAR에 대해서도 동일한 규칙이 적용된다.
<uri> 값이 'ejb.jar/META-INF/ejb-jar.xml'인 <descriptor>는 EAR에 속한 EJB 모듈(파일 이름이 ejb.jar)을 위한 것이고, <uri> 값이 'web.war/WEB-INF/web.xml'인 <descriptor>는 EAR에 속한 WEB 모듈(파일 이름이 web.war)을 위한 것이다.
하나의 Deployment Plan은 여러 개의 서로 다른 애플리케이션 Deploy를 위해 사용될 수 있다. deploy하는 애플리케이션의 DD와 <uri> 값이 매칭되어 유효한 것으로 판단되는 <descriptor>만 선택되어 해당 애플리케이션을 deploy할 때 적용되는 방식이므로 그 외의 <descriptor>는 Deploy에 전혀 영향을 주지 않는다.
다음은 첫 번째 <descriptor> 설정을 예로 들어 설명한 것으로 <descriptor>의 설정에 의해 DD에 실제적으로 수정되는 사항에 대한 설명이다.
첫 번째 <descriptor>는 앞서 언급했듯이 Standalone EJB 모듈의 표준 DD를 조작한다. 가정 먼서 수행되는 조작 action은 특정 태그의 대체로써 첫 번째 <configuration>으로 표현되어 있다. 값이 'ByeBean'이라는 <ejb-name> 태그를 값이 'HiBean'인 <ejb-name> 태그로 대체하고 있음을 확인할 수 있다.
두 번째 <configuration>은 값이 'HelloHomeLocal'인 <local-home> 태그의 삭제를 표현한다.
세 번째 <configuration>은 두 번째 <session> 태그의 last child로써 <transaction> 태그를 추가함을 표현한다.
네 번째 <configuration>은 <ejb-name> 태그의 값이 'HelloBean'인 <session> 태그의 previous sibling으로써 <session-type> 태그를 삽입함을 표현한다.
Deployment Plan을 이용하여 deploy를 하기 위해서는 우선 Deployment Plan을 도메인에 install해야 한다. 애플리케이션과 유사하게 Deploy에 이용할 수 있는 Deployment Plan 또한 도메인에 install된 것들에 한한다. Deployment Plan을 install할 때는 도메인에서의 Deployment Plan의 식별자를 설정할 수 있다.
Deployment Plan은 WebAdmin 또는 콘솔 툴을 사용해서 install할 수 있다.
다음은 WebAdmin을 사용해서 Deployment Plan을 install하는 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한다.
애플리케이션 목록 화면에서 [플랜] 탭을 선택하면 Deployment Plan 화면으로 이동한다. [설치] 버튼을 클릭하면 install할 정보를 설정할 수 있다.
설치 화면 화면에서 install할 Deployment Plan의 경로와 이름을 입력한 후 [설치] 버튼을 클릭한다.
설치가 완료되면 Deployment Plan 화면에서 입력한 이름으로 Deployment Plan이 install된 것을 확인할 수 있다.
콘솔 툴에서 install-deployment-plan 명령어를 통해 Deployment Plan을 install할 수 있다.
[MASTER]domain1.adminServer>install-deployment-plan -path /home/user1/plans/jeus-deployment-plan.xml -name plan1
Installing the deployment plan [plan1] was successful.
install-deployment-plan 명령의 사용 방법에 대한 자세한 내용은 “JEUS Reference 안내서”의 “4.2.6.9. install-deployment-plan”을 참고한다.
WebAdmin 또는 콘솔 툴을 사용해서 Install한 Deployment Plan을 확인할 수 있다. 각각의 Deployment Plan은 install할 때 설정한 Deployment Plan의 식별자로 구분되며 Deployment Plan별로 그것이 적용된 애플리케이션 목록이 표시된다. Deployment Plan의 실제 파일 내용도 화면에 출력할 수 있다.
다음은 WebAdmin을 사용해서 Install한 Deployment Plan을 확인하는 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한다.
애플리케이션 목록 화면에서 [플랜] 버튼을 클릭하면 Deployment Plan 화면에서 install된 Deployment Plan의 목록이 조회할 수 있다.
조회된 목록에서 특정 Deployment Plan의 이름을 클릭하면 내용을 확인할 수 있다.
콘솔 툴에서 deployment-plan-info 명령어를 통해서 도메인에 install한 Deployment Plan이 적용된 애플리케이션의 목록을 조회할 수 있고, 특히 특정 Deployment Plan을 지정하면 해당 Deployment Plan의 내용을 화면에서 확인할 수 있다.
Deployment Plan의 목록 조회
[MASTER]domain1.adminServer>deployment-plan-info
The list of deployment plans installed in the domain and the applications to which each deployment plan applies
===========================================================
+------------------------------------------+--------------+
| Deployment plan | Applications |
+------------------------------------------+--------------+
| plan1 | |
+------------------------------------------+--------------+
===========================================================
특정 Deployment Plan의 내용 조회
[MASTER]domain1.adminServer>deployment-plan-info -name plan1
<?xml version="1.0" encoding="UTF-8"?>
<jeus-deployment-plan xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
...
</jeus-deployment-plan>
deployment-plan-info 명령 사용 방법에 대한 자세한 내용은 “JEUS Reference 안내서”의 “4.2.6.6. deployment-plan-info”를 참고한다.
WebAdmin 또는 콘솔 툴을 사용해서 Install한 Deployment Plan을 적용하여 Deploy를 수행할 수 있다.
다음은 WebAdmin을 사용해서 Deployment Plan을 적용한 Deploy 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한다.
애플리케이션 목록 화면에서 deploy할 애플리케이션을 선택하고 [배포] 버튼을 클릭한다.
배포 화면에서 고급 선택 사항을 클릭한 후 'Plan' 항목에서 사용할 plan의 이름을 입력하고 [배포] 버튼을 클릭한다.
배포가 완료되면 화면 상단에 Deploy가 성공적으로 완료되었다는 메시지가 표시되고, 애플리케이션의 상태가 RUNNING으로 변경된 것을 확인할 수 있다.
콘솔 툴에서 deploy-application 명령어를 통해 Deployment Plan을 사용한 Deploy를 수행할 수 있다.
[MASTER]domain1.adminServer>deploy-application webapp -all -plan plan1
deploy the application for the application [webapp] succeeded.
WebAdmin 또는 콘솔 툴을 사용해서 임의의 애플리케이션에 어떤 Deployment Plan이 적용되었는지 확인할 수 있다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면으로 이동한다. 상단 메뉴에서 [애플리케이션]을 선택하면 애플리케이션 목록 화면이 나타난다. 해당 화면에서 정보를 확인할 애플리케이션 ID를 클릭하면 상세 정보를 확인할 수 있다. 선택한 애플리케이션에 대한 상세 정보에는 적용된 Deployment Plan도 포함된다.
콘솔 툴에서 application-info 명령어를 통해 애플리케이션에 적용된 Deployment Plan을 확인할 수 있다.
[MASTER]domain1.adminServer>application-info -id webapp -detail Application information for the domain [domain1]. ================================================================================ +------+-------+-----+------+-------+--------------+----------+----------+-----+ | Appli| Applic|State|Server|Cluster| Running | Applicati| Applicati| Plan| |cation| ation | |Target|Targets| Servers | on Path | on Time |Name | | ID | Type | | s | | | | | | +------+-------+-----+------+-------+--------------+----------+----------+-----+ |webapp| WAR | RUNN| ALL | ALL | server1,serve| ${INSTALL| Tue May |plan1| | | |ING | | |r2,server3,adm|HOME}/web|28 | | | | | | | |inServer |app/deploy|22:45:13 | | | | | | | | |ment_plan|KST 2013 | | | | | | | | |web.war | | | +------+-------+-----+------+-------+--------------+----------+----------+-----+ ================================================================================
WebAdmin 또는 콘솔 툴을 사용해서 Deployment Plan을 도메인에서 uninstall할 수 있다. Uninstall된 Deployment Plan은 도메인에서 더 이상 유효하지 않으며 당연히 deploy할 때도 사용할 수 없다.
다음은 WebAdmin을 사용해서 설치된 Deployment Plan을 uninstall하는 과정에 대한 설명이다.
WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [애플리케이션]을 선택한다.
애플리케이션 목록 화면에서 [플랜] 버튼을 클릭하면 Deployment Plan 화면에서 install된 Deployment Plan 목록이 조회할 수 있다. 목록에서 uninstall할 플랜을 선택한 후 [삭제] 버튼을 클릭한다.
삭제 여부를 묻는 대화상자를 확인한 후 [삭제] 버튼을 클릭한다.
삭제 수행 후 Deployment Plan 화면에서 삭제한 Deployment Plan이 표시되지 않는 것을 확인할 수 있다.
콘솔 툴에서 uninstall-deployment-plan 명령어를 통해 Deployment Plan을 uninstall할 수 있다.
[MASTER]domain1.adminServer>uninstall-deployment-plan plan1
Uninstalling the deployment plan was successful.
uninstall-deployment-plan 명령의 사용 방법에 대한 자세한 내용은 “JEUS Reference 안내서”의 “4.2.6.21. uninstall-deployment-plan”을 참고한다.