제4장 애플리케이션 작성 및 Deploy

내용 목차

4.1. 애플리케이션 작성
4.2. Deploy 명령어
4.3. 애플리케이션 제어 및 모니터링
4.3.1. 애플리케이션을 도메인에 Install
4.3.2. 도메인에서 애플리케이션 Uninstall
4.3.3. 애플리케이션 Deploy
4.3.4. 애플리케이션 Redeploy
4.3.5. 애플리케이션 Undeploy
4.3.6. 애플리케이션 시작
4.3.7. 애플리케이션 중지
4.3.8. 서비스 중인 애플리케이션에 서버 추가
4.3.9. 서비스 중인 애플리케이션에서 서비스 중인 서버 삭제
4.3.10. 애플리케이션 정보 확인
4.4. Staging Mode Deploy
4.5. Deployment Plan을 사용한 Deployment
4.5.1. Deployment Plan 설정 및 동작 방식
4.5.2. Deployment Plan Install
4.5.3. Install한 Deployment Plan 확인
4.5.4. Deployment Plan을 적용한 Deploy
4.5.5. 애플리케이션에 적용된 Deployment Plan 확인
4.5.6. Deployment Plan Uninstall
4.5.7. Deployment Plan Redeploy

본 장에서는 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을 먼저 도메인의 DAS인 "adminServer"로 install하고, 서버 "server1"에 deploy한다.

다음의 순서로 애플리케이션을 작성한다.

콘솔 툴, WebAdmin을 통해서 제공하는 Deploy 관련 툴에서는 다음과 같은 작업들을 지원한다.

설명
distribute애플리케이션 파일을 대상 서버나 클러스터로 복사하고, 애플리케이션을 서비스하기 위한 사전 작업을 한다. 대상으로 설정한 서버나 클러스터 중 하나라도 distribute에 실패하면 전체 작업을 실패로 간주하고 distribute에 성공한 서버에서 모두 undeploy한다.
deploy

애플리케이션 파일을 대상 서버로 복사하고, 애플리케이션을 서비스하기 위한 사전 작업을 한다. 이 작업이 성공하면 애플리케이션을 실행시킨다. 대상으로 설정한 서버나 클러스터 중 하나라도 distribute에 실패하면 전체 작업을 실패로 간주하고 distribute에 성공한 서버에서 모두 undeploy한다.

Start 작업에서 실패한 서버가 있더라도 하나라도 서비스 가능한 상태가 있으면 애플리케이션 Start 작업은 성공이다.

start대상 서버에 distribute(배포)되어 있는 애플리케이션을 동작시키는 작업이다. Start 작업에서 실패한 서버가 있더라도 하나라도 서비스 가능한 상태가 있으면 애플리케이션 Start 작업은 성공이다.
stop대상 서버에 배치되어 실행 중인 애플리케이션을 일시정지시키는 작업이다. 이때 애플리케이션을 대상 서버에서 삭제하지 않는다. 또한 애플리케이션 이름으로 start하거나 redeploy할 수도 있다.
undeploy배치되어 실행 중인 애플리케이션을 정지시키고, deploy되어 있는 대상 서버나 클러스터에서 애플리케이션을 제거하는 작업이다.
redeploy

deploy되어 실행 중인 애플리케이션의 내용이 변경된 경우에 그 내용을 현재 애플리케이션에 반영하여 다시 deploy하는 작업이다.

모든 애플리케이션을 재배치할 때 Deploy 작업이 하나라도 실패하면 모든 애플리케이션은 정지된다.

다음 작업들은 JEUS에서만 제공하는 Deploy 작업이다. 이 작업은 콘솔 툴이나 WebAdmin을 통해서만 해야 한다.

작업설명
Add Application Target

deploy나 distribute된 애플리케이션에 대상으로 특정 서버 또는 클러스터를 추가한다. 이미 서비스되고 있는 애플리케이션을 서비스하는 대상을 확장하려고 할 때 사용하는 작업이다.

대상은 여러 서버 또는 여러 클러스터를 설정할 수 있고, 이 작업이 대상으로 설정한 서버나 클러스터에서 실패한 경우 전체 작업 실패로 간주하고 기존에 서비스되고 있던 서버를 제외한 새로 추가하려는 서버에서는 모두 undeploy된다.

Remove Application Target

deploy나 distribute된 애플리케이션에서 대상으로 설정된 특정 서버 또는 클러스터를 삭제한다. 이미 서비스되고 있는 애플리케이션을 서비스하는 대상을 축소하려고 할 때 사용하는 작업이다.

대상은 여러 서버 또는 여러 클러스터를 설정할 수 있다.

본 절에서는 WebAdmin과 콘솔 툴을 사용한 애플리케이션 제어 및 모니터링 방법에 대해서 설명한다.

WebAdmin은 JEUS를 전반적으로 관리하기 위해 제공되는 웹 기반의 관리 툴이다.

WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 도메인에 존재하는 애플리케이션을 관리할 수 있는 Deployed Application 화면으로 이동한다. WebAdmin에서 애플리케이션을 deploy하거나 새로운 애플리케이션을 도메인에 install할 때 또는 도메인에 존재하는 애플리케이션의 정보를 조회할 때 모두 이 화면에서부터 시작해야 한다.

이제 WebAdmin을 통해 앞장에서 살펴본 myApp.ear 애플리케이션을 도메인에 install, deploy, 조회하는 방법에 대해 살펴보기로 한다.

참고

애플리케이션을 제어하는 작업(deploy, distribute, undeploy, start, stop)은 도메인에 설정변경 Lock을 가져오지 않은 상태에서만 가능하다. 만약 [Lock & Edit] 버튼을 통해 Lock을 가져온 상태라면 [Activate changes] 버튼을 선택하여 변경 중인 모든 설정을 반영하거나, [Undo all changes] 메뉴를 선택하여 변경했던 설정을 취소하고 난 후 애플리케이션 제어 작업을 진행해야 한다.

다음은 WebAdmin을 사용해서 애플리케이션을 도메인에 install하는 과정에 대한 설명이다.

  1. WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 Deployed Application 화면으로 이동한다. 해당 화면에서 도메인에 존재하는 애플리케이션의 정보를 확인할 수 있다. 애플리케이션 목록 상단에 위치한 [install] 버튼을 클릭하면 도메인에 새로운 애플리케이션을 install할 수 있는 화면으로 이동한다.

  2. [Install] 버튼을 클릭하면 나타나는 화면에서 애플리케이션 ID와 애플리케이션 파일의 경로 등의 install 관련 정보를 입력하고 [확인] 버튼을 클릭한다.

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

    항목설명
    Idinstall할 애플리케이션에 부여할 ID를 지정한다. 이 값을 주지 않은 경우에는 애플리케이션 파일 이름을 변경하여 ID로 사용한다. 애플리케이션 ID는 입력하지 않아도 만들어 주지만, 관리의 편의상 입력하는 것을 권장한다.
    Pathinstall할 애플리케이션 파일의 경로를 입력한다. [찾아보기] 버튼으로 애플리케이션 파일을 선택할 수 있다.
    Force동일한 ID를 가진 애플리케이션이 이미 도메인에 존재할 경우 덮어쓸지 여부를 설정한다. 이미 deploy되어 있는 애플리케이션 내용이 변경되어 파일을 업데이트해야 하는 경우에 사용할 수 있다.
    UpgradeJEUS 6 이하 버전의 JEUS DD를 사용하는 경우 JEUS 8에 맞는 DD로 변경할지 여부를 설정한다.
  3. install 작업을 마치고 나면 화면 상단에 그 결과가 나타난다. 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 해당 애플리케이션을 확인할 수 있다. 이때 애플리케이션은 INSTALLED 상태가 된다.

install된 애플리케이션에 deploy 명령어를 통해 애플리케이션이 서비스되도록 한다. 본 절에서는 애플리케이션을 deploy하는 3가지 방법에 대해 설명한다.

콘솔 툴을 통한 Run-time Deploy 방법은 다음의 사항을 가정하여 설명한다.

  • 애플리케이션은 “4.1. 애플리케이션 작성”에서 작성한 myApp.ear을 사용한다.

  • JEUS의 도메인 이름은 'domain1'이고, 애플리케이션을 deploy할 서버는 'server1'이다.

참고

deploy-application 명령어를 수행할 때 사용할 수 있는 옵션에 대한 자세한 내용은 JEUS Reference Book”의 “4.2.6.4. deploy-application”을 참고한다.

JEUS에서는 콘솔 툴에서 애플리케이션을 Run-time Deploy할 경우 애플리케이션의 위치에 따라 다음의 3가지 방법을 제공한다. 각 방법은 deploy, stop, start, redeploy, undeploy의 순서대로 deploy 명령어를 실행하며, 각 명령어를 실행한 뒤에는 applist를 수행하여 각 단계에서의 애플리케이션 상태를 확인한다.

JEUS를 직접 관리할 수 있는 콘솔 툴을 통해 DAS에 연결하여 서버나 클러스터의 제어 및 모니터링을 할 수 있으며, 애플리케이션을 deploy할 수도 있다.

다음은 콘솔 툴에서 사용하는 애플리케이션의 Deploy 관련 명령어이다.

명령어설명
distribute-application애플리케이션을 deploy할 수 있도록 배치 대상에 애플리케이션을 복사하고, 애플리케이션 서비스를 위한 사전 준비작업을 한다.
deploy-application

애플리케이션을 deploy한다.

Deploy란 Deploy 대상에 애플리케이션을 복사하고(Distribute), 애플리케이션의 서비스를 시작(Start)하는 것이다.

Deploy가 성공적으로 완료되면 RUNNING 상태가 되며, Distribute 완료 후 서비스 단계에서 장애가 발생하면 DISTRIBUTED 상태에 머물러 있다.

start-applicationDISTRIBUTED 상태에 있는 애플리케이션을 실행한다. 작업이 수행되는 동안에는 STARTING 상태로 성공적으로 완료되면 RUNNING 상태가 된다.
stop-applicationRUNNING 상태에 있는 애플리케이션을 정지한다. 작업이 수행되는 동안에는 STOPPING 상태로 성공적으로 완료되면 DISTRIBUTED 상태가 된다.
redeploy-applicationDeploy가 완료된 애플리케이션에 변경된 내용이 있는 경우 변경 내용을 반영하여 다시 deploy한다. Deploy와 같은 단계로 이루어지며 각 단계에서의 상태 또한 같다.
undeploy-application애플리케이션 서비스를 종료하고 배치 대상에서 애플리케이션을 제거한다.
application-info도메인에 존재하는 애플리케이션의 정보를 출력한다.
add-application-targetDeploy되어 있는 애플리케이션에 서비스 대상을 추가한다. 서비스 대상은 서버나 클러스터가 될 수 있다.
remove-application-targetDeploy되어 있는 애플리케이션에서 서비스 대상을 삭제한다. 서비스 대상은 서버나 클러스터가 될 수 있다.

본 절에서는 WebAdmin과 콘솔 툴을 사용해서 도메인에 install한 애플리케이션 Deploy하는 방법을 설명한다.

WebAdmin 사용

다음은 WebAdmin을 사용해서 도메인에 install한 애플리케이션을 deploy하는 과정에 대한 설명이다.

  1. WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 Deployed Application 화면으로 이동한다. 애플리케이션 목록에서 deploy하고자 하는 애플리케이션을 체크박스에서 선택하고, 애플리케이션 목록 하단에 위치한 [deploy] 버튼을 클릭한다.

  2. 'Server' 항목에서 deploy할 대상 서버를 선택하고 [확인] 버튼을 클릭하면 애플리케이션 Deploy가 진행된다. 만약 Deploy가 아니라 distribute까지만 진행하고 싶다면 고급 선택사항'Only Distribute' 항목을 체크하고 [확인] 버튼을 클릭한다. 이 경우 애플리케이션을 서비스하기 위해서는 별도로 애플리케이션 Start 작업이 필요하다.

  3. 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
----------------------------------------------------------------
[DAS]domain1.adminServer>install-application -id myApp /usr/apphome/myApp.ear
Successfully installed the application [myApp].

[DAS]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                |
+----------+-----------+-------+----------+-----------+------------------------+
================================================================================

[DAS]domain1.adminServer>deploy myApp -servers server1
deploy the application for the application [myApp] succeeded.

[DAS]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          |
+----------+------------+---------+----------+-----------+---------------------+
================================================================================

[DAS]domain1.adminServer>stop-application myApp
stop the application for the application [myApp] succeeded.

[DAS]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                |
+----------+-----------+--------+----------+----------+------------------------+
================================================================================

[DAS]domain1.adminServer>start-application myApp
start the application for the application [myApp] succeeded.

[DAS]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          |
+----------+------------+---------+----------+-----------+---------------------+
================================================================================

[DAS]domain1.adminServer>redeploy-application myApp
redeploy application on das for the application [myApp] succeeded.

[DAS]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          |
+----------+------------+---------+----------+-----------+---------------------+
================================================================================

[DAS]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)

[DAS]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                |
+----------+-----------+-------+----------+-----------+------------------------+
================================================================================

[DAS]domain1.adminServer>uninstall-application myApp
uninstall the application for the application [myApp] succeeded. : Successfully deleted [myApp].

[DAS]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.5.1. 애플리케이션 저장소 추가/삭제/조회”를 참고한다.

WebAdmin 사용

WebAdmin을 사용해서 애플리케이션 저장소에 위치하는 애플리케이션을 deploy하는 방법은 도메인에 install된 애플리케이션을 deploy하는 것과 동일하다. 애플리케이션 Deploy 작업이 완료되면 화면 상단에 그 결과가 나타나고, 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 보여지는 해당 애플리케이션의 상태는 RUNNING이 된다.

콘솔 툴 사용

다음은 콘솔 툴을 사용해서 애플리케이션 저장소에 있는 애플리케이션 deploy하는 예제이다.

[DAS]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"

[DAS]domain1.suok>list-application-repositories
Application Repositories
================================================================================
+------------------------------------------------------------------------------+
|                        Path to Application Repository                        |
+------------------------------------------------------------------------------+
| /home/user1/apps                                                             |
+------------------------------------------------------------------------------+
================================================================================

[DAS]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                      |
+----------+-----------+-------+----------+-----------+------------------------+
================================================================================

[DAS]domain1.adminServer>deploy exploded -servers server1
deploy the application for the application [exploded.war] succeeded.

[DAS]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하는 방법에 대한 설명이다. DAS가 존재하는 머신에 있는 애플리케이션의 절대 경로를 설정하고 deploy하는 기능에 대한 자세한 내용은 “1.6. path를 지정하여 Deploy”를 참고한다.

WebAdmin 사용

다음은 WebAdmin을 사용해서 path를 지정하여 Deploy하는 과정에 대한 설명이다.

  1. WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 Deployed Application 화면으로 이동한다. 애플리케이션 목록 상단에 위치한 [deploy] 버튼을 클릭하면 도메인에 새로운 애플리케이션을 deploy할 수 있는 화면으로 이동한다.

  2. 'Path' 항목에 deploy할 애플리케이션이 위치하는 절대경로를 입력한다. [입력] 버튼을 클릭하면 DAS에 존재하는 애플리케이션의 경로를 선택할 수 있다. 'Server' 항목에서 deploy할 대상 서버인 'server1'을 선택하고 [확인] 버튼을 클릭하면 애플리케이션 Deploy가 진행된다. 필요하다면 고급 선택사항 영역에서 Deploy 옵션을 설정할 수 있다.

  3. Deploy 작업을 마치고 나면 화면 상단에 그 결과가 나타난다. 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 보여지는 해당 애플리케이션의 상태는 RUNNING이 된다.

콘솔 툴 사용

다음은 콘솔 툴을 사용해서 path를 지정하여 deploy하는 방법이다.

[DAS]domain1.adminServer>deploy -path /home/user1/apps/myApp.ear -servers server1
deploy the application for the application [/home/user1/apps/myApp.ear] succeeded.

[DAS]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 과정에 대한 설명이다.

  1. WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 Deployed Application 화면으로 이동한다. 애플리케이션 목록에서 redeploy할 애플리케이션을 선택하고, 목록 오른쪽에 위치 [redeploy] 버튼을 클릭한다.

  2. 'Timeout' 항목에 Graceful Redeploy Timeout과 그외 필요한 Redeploy 옵션을 설정하고 [확인] 버튼을 클릭하면 애플리케이션 redeploy가 진행된다.

  3. Redeploy 작업이 완료되면 화면 상단에 그 결과가 나타난다.

애플리케이션 서비스를 확장하기 위해 애플리케이션을 서비스할 대상에 서버나 클러스터를 추가하는 기능을 제공한다. 이미 도메인에 존재하는 애플리케이션을 특정 서버에만 deploy할 수는 없기 때문에 서비스 대상을 추가(add-target)하는 별도의 명령어를 지원한다. 애플리케이션에 서비스 대상을 추가하는 명령(add-target)은 애플리케이션이 RUNNING 상태이거나 DISTRIBUTED 상태일 때 가능하다.

다음은 WebAdmin을 사용해서 서비스 중인 애플리케이션에 서버를 추가하는 과정에 대한 설명이다.

  1. WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 Deployed Application 화면으로 이동한다. 애플리케이션 목록에서 애플리케이션을 서비스하는 서버를 추가하기 위해 애플리케이션을 선택하고, 목록 오른쪽에 위치한 [add-target] 버튼을 클릭한다.

  2. 'Server' 항목에서 애플리케이션서비스 대상에 추가할 서버를 선택하고 [확인] 버튼을 클릭하면 해당 서버에 애플리케이션 Deploy가 진행된다.

  3. Deploy 대상 추가 작업이 완료되면 화면 상단에 그 결과가 나타난다.

  4. 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 해당 애플리케이션을 선택하여 'Server''Running Servers' 항목에 선택한 서버가 추가되어 있는 것을 확인할 수 있다.

애플리케이션 서비스를 축소하기 위해 애플리케이션을 서비스하고 있는 대상에서 서버나 클러스터를 삭제하는 기능을 제공한다. 이미 도메인에 존재하는 애플리케이션을 특정 서버에만 undeploy할 수 없기 때문에 서비스 대상을 삭제(remove-target)하는 별도의 명령어를 지원한다. 애플리케이션에 서비스 대상을 삭제하는 명령은 애플리케이션이 RUNNING 상태 또는 DISTRIBUTED 상태일 때 가능하다.

다음은 WebAdmin을 사용해서 서비스 중인 애플리케이션에서 서비스 중인 서버를 삭제하는 과정에 대한 설명이다.

  1. WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 Deployed Application 화면으로 이동한다. 애플리케이션 목록에서 서비스를 중지하려고하는 애플리케이션을 선택하고, 목록 오른쪽에 위치한 [remove-target] 버튼을 클릭한다.

  2. 'Servers' 항목에서 더 이상 애플리케이션 서비스를 하지 않은 서버를 선택하고 [확인] 버튼을 클릭하면 해당 서버에만 애플리케이션 Undeploy가 진행된다.

  3. 애플리케이션 서비스 대상 삭제 작업이 완료되면 화면 상단에 그 결과가 나타난다.

  4. 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 해당 애플리케이션을 선택하여 'Server''Running Servers' 항목에 선택한 서버가 삭제된 것을 확인할 수 있다.

본 절에서는 WebAdmin과 콘솔을 사용해서 애플리케이션 정보를 확인하는 방법에 대해서 설명한다.

WebAdmin에서는 애플리케이션에 대해서 다음의 두 가지의 정보를 확인할 수 있다.

  • 애플리케이션이 어떻게 deploy되어 있는가?

  • 애플리케이션이 어떻게 구성되어 있는가?

애플리케이션의 Deploy 정보 확인

애플리케이션이 어떤 서버나 클러스터에 어떤 속성으로 deploy되어 있는지를 확인할 수 있다.

다음은 WebAdmin을 사용해서 애플리케이션의 Deploy 정보를 확인하는 방법이다.

애플리케이션 구성 모듈 정보 확인

애플리케이션이 어떻게 구성되어 있는지 실제 애플리케이션의 모듈 정보를 확인할 수 있다.

EAR일 경우에는 EAR 애플리케이션을 구성하고 있는 모듈 리스트를 확인할 수 있다. 애플리케이션을 구성하는 모듈 중 하나를 선택하면 해당 모듈에 대한 자세한 구성 정보를 확인할 수 있다. 이 정보는 EJB나 웹 모듈에 대해서만 확인 가능하다. EJB 모듈을 선택하면 EJB Bean 리스트를 확인할 수 있고, 웹 모듈을 선택하면 서블릿 리스트를 확인할 수 있다.

WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 Deployed Application 화면으로 이동한다. 애플리케이션 목록에서 애플리케이션 ID를 클릭하면 애플리케이션 경로, 형식, 배포 시간, 대상 서버 등 기본적인 정보를 확인할 수 있다.

애플리케이션 Deploy 정보 화면에서 애플리케이션 정보의 'Running Servers'에서 특정 서버를 클릭하면 애플리케이션 구성 정보를 확인할 수 있다.

EAR 애플리케이션인 경우에는 위와 같이 애플리케이션을 구성하는 모듈 리스트를 확인할 수 있을 뿐만 아니라 애플리케이션을 구성하고 있는 EJB 모듈과 WEB 모듈의 정보도 확인할 수 있다.

참고

모듈의 정보는 EJB나 WEB일 경우에만 확인할 수 있다. 클라이언트 모듈이나 리소스 모듈인 경우에는 모듈 정보를 확인하는 기능을 제공하지 않는다.

  • EJB 모듈 정보 확인

    다음은 EAR 애플리케이션인 myApp를 구성하는 EJB 모듈 'ejb'에 대한 정보를 확인하는 방법이다.

    1. 애플리케이션 myApp의 모듈 목록에서 'ejb'를 선택하면 EJB 모듈을 구성하고 있는 Bean 리스트를 확인할 수 있다. 리스트에는 Bean 이름, Type, Export Name 등이 표시된다.

    2. 모듈 'ejb'의 Bean 목록에서 'HelloBean'을 선택하면 HelloBean의 세부 정보 및 관련 통계값들을 확인할 수 있다.

  • WEB 모듈 정보 확인

    다음은 EAR 애플리케이션인 myApp를 구성하고 있는 웹 모듈 'web'에 대한 정보를 확인하는 방법이다.

    1. 애플리케이션 myApp의 모듈 목록에서 'web'을 선택하면 웹 모듈을 구성하고 있는 서블릿 리스트를 확인할 수 있다. 각 서블릿 별로 실제 서블릿을 구현한 클래스명, 상태 등 상세 정보를 확인할 수 있고, 서블릿 필터나 서블릿 리스너들에 대한 목록 및 상세 정보도 확인 가능하다.

    2. 'Command' 컬럼의 [thread-info] 버튼을 클릭하면 웹 모듈의 요청 스레드에 대한 정보를 확인할 수 있다.

콘솔 툴의 application-info 명령어를 통해 myApp.ear 애플리케이션에 대한 정보를 조회할 수 있다.

다음은 콘솔 툴에서 애플리케이션 정보를 확인하는 예제이다. 각 옵션에 대한 자세한 설명은 JEUS Reference Book”의 “4.2.6.3. application-info”를 참조한다.

[DAS]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          |
+----------+------------+---------+----------+-----------+---------------------+
================================================================================

[DAS]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    |            |             |
+------------+-----------------+-------------+------+------------+-------------+
================================================================================

[DAS]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.
===============================================================

[DAS]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    |                   |                    |
+-----------+-------------------------+-------------------+--------------------+
================================================================================

[DAS]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)
================================================================================

[DAS]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이다. 이 값은 도메인에서 유일해야 한다.
Applicatio Type

애플리케이션의 종류로 5가지 중 하나가 될 수 있다.

  • EAR : 애플리케이션

  • EJB : EJB 모듈

  • WAR : 웹 애플리케이션 모듈

  • RAR : 리소스 어댑터 모듈

  • CAR : 애플리케이션 클라이언트 모듈

state

애플리케이션이 도메인에서의 상태로 다음 4가지 중 하나가 될 수 있다.

  • INSTALLED

  • DISTRIBUTED

  • RUNNING

  • DEPLOYED

각 상태에 대한 자세한 설명은 “1.1.3. 애플리케이션 상태”를 참고한다.

Server Target애플리케이션이 deploy되어 있는 대상 서버이다.
Cluster Target애플리케이션이 deploy되어 있는 대상 클러스터이다.
Application PathDAS에 존재하는 애플리케이션 파일의 경로를 나타낸다.

exploded 모듈 형태의 애플리케이션은 파일을 압축하여 다른 머신의 MS에 deploy할 수 있다. 이를 Staging Mode Deploy라고 한다. 애플리케이션 파일이 애플리케이션 저장소에 위치하거나 DAS가 존재하는 머신에 있는 절대 경로를 설정하고 deploy할 수 있다. Staging Mode Deploy 기능에 대한 자세한 내용은 “1.7. Staging Mode Deploy”를 참고한다.

WebAdmin 사용

다음은 WebAdmin을 사용해서 path를 지정하여 deploy하는 방법에 대한 설명이다.

  1. WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 Deployed Application 화면으로 이동한다. 애플리케이션 목록에서 INSTALLED 상태의 exploded 애플리케이션을 선택하고 애플리케이션 목록 하단에 위치한 [deploy] 버튼을 클릭하거나, 애플리케이션 목록 상단에 위치한 [deploy] 버튼을 클릭해 'Path' 항목을 입력한다.

  2. 'Server' 항목에서 deploy할 대상 서버를 선택한다.

  3. Deploy 정보 입력 화면의 고급 선택사항에서 'Staging' 항목을 체크하고 [확인] 버튼을 클릭하면 애플리케이션 Deploy가 진행된다.

  4. Deploy 작업이 완료되면 화면 상단에 그 결과가 나타난다. 명령어가 성공적으로 수행되었다면 애플리케이션 목록에서 해당 애플리케이션의 상태는 RUNNING이 된다.

  5. 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___
    ...

콘솔 툴 사용

다음은 콘솔 툴을 사용한 Stagind Mode Deploy 방법이다. deploy 명령어를 staging 옵션을 지정하여 수행한다.

[DAS]domain1.adminServer>deploy exploded -servers server1 -staging
deploy the application for the application [exploded] succeeded.

[DAS]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 설정

다음은 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>의 하위 태그에 대한 설명이다.

Deployment Plan 동작 방식

위의 작성 예제를 바탕으로 태그별 동작 방식에 대해 설명한다.

Deployment Plan을 이용하여 deploy를 하기 위해서는 우선 Deployment Plan을 도메인에 install해야 한다. 애플리케이션과 유사하게 Deploy에 이용할 수 있는 Deployment Plan 또한 도메인에 install된 것들에 한한다. Deployment Plan을 install할 때는 도메인에서의 Deployment Plan의 식별자를 설정할 수 있다.

Deployment Plan은 WebAdmin 또는 콘솔 툴을 사용해서 install할 수 있다.

WebAdmin 사용

다음은 WebAdmin을 사용해서 Deployment Plan을 install하는 과정에 대한 설명이다.

  1. WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 Deployed Application 화면으로 이동한다. 해당 화면에서 [plan] 버튼을 클릭하면 Deployment Plan 화면으로 이동한다.

  2. Deployment Plan 화면에서 [install] 버튼을 클릭하여 install할 Deployment Plan의 경로를 설정하고 적절한 식별 이름을 입력한 후 [확인] 버튼을 클릭한다.

  3. 입력한 식별 이름으로 Deployment Plan이 install된 것을 확인할 수 있다.

콘솔 툴 사용

콘솔 툴에서 install-deployment-plan 명령어를 통해 Deployment Plan을 install할 수 있다.

[DAS]domain1.adminServer>installdp -path /home/user1/plans/jeus-deployment-plan.xml -name plan1
Installing the deployment plan [plan1] was successful.

WebAdmin 또는 콘솔 툴을 사용해서 Install한 Deployment Plan을 확인할 수 있다. 각각의 Deploymnet Plan은 install할 때 설정한 Deployment Plan의 식별자로 구분되며 Deployment Plan별로 그것이 적용된 애플리케이션 목록이 표시된다. Deployment Plan의 실제 파일 내용도 화면에 출력할 수 있다.

WebAdmin 사용

다음은 WebAdmin을 사용해서 Install한 Deployment Plan을 확인하는 과정에 대한 설명이다.

  1. WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 Deployed Application 화면으로 이동한다. 해당 화면에서 [plan] 버튼을 클릭하면 Deployment Plan 화면으로 이동한다.

  2. Deployment Plan 화면에서 install된 Deployment Plan의 목록이 조회된다.

  3. 조회된 목록에서 특정 Deployment Plan의 이름을 클릭하면 내용을 확인할 수 있다.

콘솔 툴 사용

콘솔 툴에서 deployment-plan-info 명령어를 통해서 도메인에 install한 Deployment Plan이 적용된 애플리케이션의 목록을 조회할 수 있고, 특히 특정 Deployment Plan을 지정하면 해당 Deployment Plan의 내용을 화면에서 확인할 수 있다.

  • Deployment Plan의 목록 조회

    [DAS]domain1.adminServer>dpinfo
    The list of deployment plans installed in the domain and the applications to which each deployment plan applies
    ===========================================================
    +------------------------------------------+--------------+
    |              Deployment plan             | Applications |
    +------------------------------------------+--------------+
    | plan1                                    |              |
    +------------------------------------------+--------------+
    ===========================================================
  • 특정 Deployment Plan의 내용 조회

    [DAS]domain1.adminServer>dpinfo -name plan1
    <?xml version="1.0" encoding="UTF-8"?>
    <jeus-deployment-plan xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
       ...
    </jeus-deployment-plan>

WebAdmin 또는 콘솔 툴을 사용해서 임의의 애플리케이션에 어떤 Deployment Plan이 적용되었는지 확인할 수 있다.

WebAdmin 사용

다음은 WebAdmin을 사용해서 애플리케이션에 적용된 Deployment Plan을 확인하는 과정에 대한 설명이다.

  1. WebAdmin의 왼쪽 메뉴에서 [Applications]를 선택하면 Deployed Application 화면으로 이동한다. 해당 화면에서 정보를 확인할 애플리케이션 ID를 클릭하면 상세 정보를 확인할 수 있다.

  2. 선택한 애플리케이션에 대한 상세 정보에는 적용된 Deployment Plan도 포함된다.

콘솔 툴 사용

콘솔 툴에서 application-info 명령어를 통해 애플리케이션에 적용된 Deployment Plan을 확인할 수 있다.

[DAS]domain1.adminServer>appinfo -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   |          |     |
+------+-------+-----+------+-------+--------------+----------+----------+-----+
================================================================================