JSON을 사용한 명령어 실행
HTTP POST 요청을 사용하여 명령어 실행을 요청하는 JSON 문장을 보내면, 서버에서 요청을 처리한 후 명령어 실행 결과를 담은 JSON 문장을 HTTP 응답으로 보내주는 구조이다.
JSON에 대한 기본적인 내용은 www.json.org을 참고한다. |
1. 일반 명령어 실행
설명을 위해 사용할 예제 명령어는 다음과 같다.
serverinfo -server server1 -state
위 명령어를 JSON을 사용하여 실행하는 과정은 다음과 같다.
-
명령어 수행을 요청하는 JSON 문장을 작성한다.
예제 명령어를 실행하기 위해 작성해야 하는 JSON 문장은 다음과 같다.
{ "jeusadmin": { "command": "server-info", "options":[ "-server server1", "-state" ], "argument": null } }
구분 설명 command
실행할 명령어 이름
options
명령어에 적용할 옵션과 옵션에 대한 인자들
argument
명령어에 적용할 인자들
-
작성한 JSON 문장을 서버로 전송하여 명령어 실행을 요청한다. 전송할 때 사용하는 프로토콜은 HTTP이며, method는 POST를 사용해야 한다.
JEUS 서버에서 JSON 명령어 실행을 위한 요청을 받는 URL은 다음과 같다.
http://${SERVER_HOST}:${SERVER_BASE_PORT}/jsonCommand/command.json
JEUS 서버에서 명령어를 실행하려면 사용자 인증이 필요하다. 사용자 인증은 HTTP Basic Authentication을 사용한다.
-
서버가 요청한 JSON 문장을 해석하여 실행한 후, 실행 결과를 담은 JSON 문장을 HTTP 응답으로 전송한다. 실행 결과는 개별 명령어별로 각각 다르다.
아래 결과는 예제 명령어를 실행한 경우 서버에서 응답으로 올 수 있는 결과물의 예제이다. JEUS 도메인 구성에 따라 결과는 달라질 수 있다.
{ "jeusadmin-result": { "message":"", "data":[ { "title":"Information of Domain (domain1)", "header":null, "column-names":[ "Server","Status","Node Name","PID","Cluster", "Latest StartTime/ShutdownTime","Need to Restart", "Listen Ports","Running Engines" ], "rows":[ { "row-key":"0", "values":[ "server1(*)","RUNNING (284sec)","N/A","2151","N/A", ... (생략) ] } ], "footer":null } [, "post-message":"" } }
응답 결과를 담고 있는 JSON 문장은 다음과 같은 요소들로 구성된다.
-
message
상단에 출력할 메시지이다. message가 여러 개인 경우 List 형태로 표현한다. 명령어에 따라 존재하지 않을 수도 있다.
-
data
실행 결과를 담고 있는 객체로 명령어에 따라 존재하지 않을 수도 있다. data는 기본적으로 표 형태의 자료 구조를 표현하고 있으며, 구성 요소는 다음과 같다.
구분 설명 title
표의 제목이다.
header
표의 머릿말이다.
column-names
표를 구성하는 각 열(column)들의 이름이다.
rows
표를 구성하는 각 행(row)의 내용이다.
다음의 2가지 구성 요소로 이루어져 있다.
-
row-key : 해당 행의 이름이다.
-
values : 해당 행에 들어갈 값이다.
footer
표의 꼬릿말이다.
-
-
post-message
하단에 출력할 메시지이다. post-message가 여러 개인 경우 List 형태로 표현한다. 명령어에 따라 존재하지 않을 수도 있다.
-
2. Application deploy
본 절에서는 JSON을 사용하여 애플리케이션을 설치하거나 배포하는 방법을 설명한다. 애플리케이션을 설치하거나거 배포하는 작업은 일반 명령어와 다르게 실행할 JSON 명령어와 배포할 애플리케이션을 함께 전달해야 한다.
다음은 JSON을 사용하여 애플리케이션을 설치하거나 배포하는 과정에 대한 설명이다.
-
명령어 수행을 요청하는 JSON 문장을 작성한다. Hello.war라는 애플리케이션을 'server1’에 배포하려고 할 경우 JSON 명령어는 다음과 같이 작성한다.
{ "jeusadmin": { "command": "deploy-application", "options":[ "-servers server1", "-path Hello.war" ], "argument": null } }
-
작성한 JSON 문장과 배포할 파일을 Multi-part 형태로 서버로 전송하여 명령어 실행을 요청한다. Multi-part는 1에서 작성한 JSON 명령어를 담은 command 파트와 배포할 애플리케이션 아카이브를 지정한 file 파트로 구성한다.
JEUS 서버에서 JSON 명령어를 통한 애플리케이션 deploy 요청을 받는 URL은 다음과 같다.
http://${SERVER_HOST}:${SERVER_BASE_PORT}/jsonCommand/install.json
JEUS 서버에서 명령어를 실행하려면 사용자 인증이 필요하다. 사용자 인증은 HTTP Basic Authentication을 사용한다.
-
서버가 요청한 JSON 문장을 해석하여 실행한 후 실행 결과를 담은 JSON 문장을 HTTP 응답으로 전송한다. 이 부분은 일반 명령어를 실행했을 경우와 다르지 않으므로 일반 명령어 실행을 참고한다.
애플리케이션 설치 또는 배포에 관련한 명령어는 install-application, deploy-application, distribute-application이 있다. |