
![[8.5.5.6 이상]](../ng_v8556.gif)
일괄처리 REST API 관리
WebSphere Application Server Liberty 프로파일은 일괄처리 작업을 관리하기 위해 RESTful 관리 인터페이스를 포함합니다.
일괄처리 작업과 연관되는 기본 조작은 제출(시작), 중지, 다시 시작 및 상태 보기입니다. HTTP REST 클라이언트를 사용하여 이러한 조작을 수행할 수 있습니다. 요청의 일부로 제출되거나 응답의 일부로 리턴되는 데이터는 JSON으로 형식화됩니다.
다음 예는 REST API로 수행할 수 있는 기능을 보여줍니다.
작업 인스턴스
- GET /ibm/api/batch/jobinstances/
- 이 URI는 작업 인스턴스 목록을 리턴합니다. 조회 매개변수는 다음과 같습니다.
- page=[page number]: 리턴할 페이지(레코드의 서브세트)를 표시합니다. 기본값은 0입니다.
- pageSize=[number of records per page]: 페이지당 레코드 수를 표시합니다. 기본값은 50입니다.
- 샘플 요청:
https://localhost:9443/ibm/api/batch/jobinstances
https://localhost:9443/ibm/api/batch/jobinstances?page=13&pagesize=20
- 샘플 응답:
[ { "jobName":"test_sleepyBatchlet", "instanceId":7, "appName":"SimpleBatchJob#SimpleBatchJob.war", "submitter":"bob", "batchStatus":"COMPLETED", "jobXMLName":"test_sleepyBatchlet", "instanceState":"COMPLETED", "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/joblogs" } ] }, { "jobName":"test_sleepyBatchlet", "instanceId":6, "appName":"SimpleBatchJob#SimpleBatchJob.war", "submitter":"bob", "batchStatus":"COMPLETED", "jobXMLName":"test_sleepyBatchlet", "instanceState":"COMPLETED", "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobinstances/6" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobinstances/6/joblogs" } ] } ]
- GET /ibm/api/batch/jobinstances/job instance id
- 이 URI는 지정된 작업 인스턴스에 대한 자세한 정보(예: 지정된 작업 인스턴스와 연관된 모든 실행)를 리턴합니다. 결과는 최신 결과부터 가장 이전의 결과까지 순서대로 리턴됩니다. 최신 결과는 목록에서 첫 번째로 표시됩니다.
- 샘플 응답:
{ "jobName":"test_sleepyBatchlet", "instanceId":7, "appName":"SimpleBatchJob#SimpleBatchJob.war", "submitter":"bob", "batchStatus":"COMPLETED", "jobXMLName":"test_sleepyBatchlet", "instanceState":"COMPLETED", "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/joblogs" }, { "rel":"job execution", "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/jobexecutions/7" } ] }
- POST /ibm/api/batch/jobinstances/
- 새 작업을 제출(시작)하려면 이 URI를 사용하십시오. 다음 예는 WAR 모듈에 패키지된 작업을 제출하기 위한 요청 본문을 JSON 형식으로 보여줍니다.
{ "applicationName" : "SimpleBatchJob", "moduleName" : "SimpleBatchJob.war", "jobXMLName" : "test_batchlet_jsl", "jobParameters" : { "prop1" : "prop1value", "prop2" : "prop2value"} }
다음 예는 EJB 모듈에 패키지된 작업을 제출하기 위한 요청 본문을 JSON 형식으로 보여줍니다.{ "applicationName" : "SimpleBatchJob", "moduleName" : "SimpleBatchJobEJB.jar", "componentName" : "MyEJB", "jobXMLName" : "test_batchlet_jsl", "jobParameters" : { "prop1" : "prop1value", "prop2" : "prop2value"} }
applicationName은 일괄처리 애플리케이션을 식별합니다. 이 변수는 moduleName을 지정하지 않는 경우 필요합니다. 이 경우 applicationName은 moduleName에서 .war 또는 .jar 접미부를 잘라내고 moduleName에서 파생됩니다. 예를 들면, applicationName을 제공하지 않고 moduleName=SimpleBatchJob.war인 경우 applicationName의 기본값은 SimpleBatchJob입니다.
moduleName은 JSL과 같은 작업 아티팩트를 포함하는 일괄처리 애플리케이션 내의 모듈을 식별합니다. 작업은 모듈의 컴포넌트 컨텍스트에 따라 제출됩니다. moduleName은 applicationName을 지정하지 않는 경우 필요합니다. 이 경우 moduleName은 applicationName에 .war를 추가하여 applicationName에서 파생됩니다. 예를 들면, applicationName=SimpleBatchJob이고 moduleName을 제공하지 않는 경우, moduleName의 기본값은 SimpleBatchJob.war입니다.
componentName은 일괄처리 애플리케이션 EJB 모듈 내의 EJB 컴포넌트를 식별합니다. 이 변수를 지정하는 경우 작업은 EJB의 컴포넌트 컨텍스트에 따라 제출됩니다.참고: componentName은 EJB 모듈인 경우에만 필요합니다. WAR 모듈인 경우 componentName은 필요하지 않습니다.jobXMLName의 값을 입력해야 합니다. jobParameters의 값은 선택사항입니다.
- 다음 샘플 응답은 완료된 작업 제출을 나타냅니다.
{ "jobName": "test_sleepyBatchlet", "instanceId": 10, "appName": "SimpleBatchJob#SimpleBatchJob.war", "submitter": "bob", "batchStatus": "STARTING", "jobXMLName": "test_sleepyBatchlet", "instanceState": "SUBMITTED", "_links": [ { "rel": "self", "href": "https://localhost:9443/ibm/api/batch/jobinstances/10" }, { "rel": "job logs", "href": "https://localhost:9443/ibm/api/batch/jobinstances/10/joblogs" } ] }
- PUT /ibm/api/batch/jobinstances/job instance id?action=stop
- 최신 작업이 실행 중인 경우 이 작업 인스턴스와 연관된 최신 작업 실행을 중지하려면 이 URI를 사용하십시오. 최신 작업이 실행 중이 아닌 경우 API는 오류를 리턴합니다.
- PUT /ibm/api/batch/jobinstances/job instance id?action=restart
- 최신 작업 실행이 STOPPED 또는 FAILED 상태인 경우에만 이 작업 인스턴스와 연관된 최신 작업 실행을 다시 시작하려면 이 URI를 사용하십시오. 작업 실행이 이 인스턴스와 연관되지 않거나 최신 작업 실행이 COMPLETED 상태인 경우 API는 오류를 리턴합니다.
- PUT /ibm/api/batch/jobinstances/job instance id?action=restart&reusePreviousParams=true
- 최신 작업을 다시 시작하고 이 작업 인스턴스와 연관된 이전 실행의 작업 매개변수를 다시 사용하려면 이 URI를 사용하십시오. 이전 실행은 STOPPED 또는 FAILED 상태여야 합니다.
이 인스턴스와 연관된 작업 실행이 없거나 최신 작업 실행이 COMPLETED 상태인 경우 이 API는 오류를 리턴합니다. reusePreviousParams는 선택적 설정이라는 점을 참고하십시오.
기본 설정은 reusePreviousParams=false입니다.
참고: reusePreviousParams=true인 경우에는 현재 다시 시작 요청의 일부로서 제출된 작업 매개변수가 이전 작업 매개변수보다 우선순위를 갖습니다. 현재 매개변수는 작업 매개변수 키 이름이 같은 이전 매개변수를 대체합니다.
- DELETE /ibm/api/batch/jobinstances/job instance id
- 이 작업 인스턴스와 연관된 모든 데이터베이스 항목과 작업 로그를 제거하려면 이 URI를 사용하십시오. 작업 인스턴스에 활성 작업 실행이 있는 경우 이 API는 오류를 리턴합니다. 작업 로그를 삭제하는 데 오류가 있는 경우에는 작업 저장소 데이터베이스에서 작업 인스턴스 데이터에 대한 삭제 시도가 수행되지 않습니다.
- DELETE /ibm/api/batch/jobinstances/job instance id?purgeJobStoreOnly=true
- 이 작업 인스턴스와 연관된 작업 저장소 데이터베이스 항목만 제거하려면 이 URI를 사용하십시오. purgeJobStoreOnly=true인 경우에는 이 작업 인스턴스와 연관된 작업 로그에 대한 제거 시도가 수행되지 않습니다. 기본 설정은 purgeJobStoreOnly=false입니다. 작업 인스턴스에 활성 작업 실행이 있는 경우 이 API는 오류를 리턴합니다.
작업 실행
- GET /ibm/api/batch/jobexecutions/job execution id
- 이 URI는 지정된 작업 실행에 대한 자세한 정보를 리턴하며 연관된 단계 실행과 작업 로그에 대한 링크를 포함합니다.
- 샘플 요청:
http://localhost:9443/ibm/api/batch/jobinstances/9/jobexecutions/9
- 샘플 응답:
{ "jobName":"test_sleepyBatchlet", "executionId":9, "instanceId":9, "batchStatus":"COMPLETED", "exitStatus":"COMPLETED", "createTime":"2015/05/07 16:09:41.025 -0400", "endTime":"2015/05/07 16:09:52.127 -0400", "lastUpdatedTime":"2015/05/07 16:09:52.127 -0400", "startTime":"2015/05/07 16:09:41.327 -0400", "jobParameters":{ }, "restUrl":"https://localhost:9443/ibm/api/batch", "serverId":"localhost/C:/ibm/RAD_workspaces/Liberty7/build.image/wlp/usr/server1", "logpath":"C:\\ibm\\Liberty\\wlp\\usr\\servers\\server1\\logs\\joblogs\\test_sleepyBatchlet\\2015-05-07\\instance.9\\execution.9\\", "stepExecutions":[ { "stepExecutionId":9, "stepName":"step1", "batchStatus":"COMPLETED", "exitStatus":"SleepyBatchlet:i=10;stopRequested=false", "stepExecution":"https://localhost:9443/ibm/api/batch/jobexecutions/9/stepexecutions/step1" } ], "_links":[ { "rel":"self", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9" }, { "rel":"job instance", "href":"https://localhost:9443/ibm/api/batch/jobinstances/9" }, { "rel":"step executions", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9/stepexecutions" }, { "rel":"job logs", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9/joblogs" }, { "rel":"stop url", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9?action=stop" } ] }
- GET /ibm/api/batch/jobinstances/job instance id/jobexecutions/job execution sequence number
- 이 URI는 지정된 작업 실행에 대한 자세한 정보를 리턴하며 연관된 단계 실행과 작업 로그에 대한 링크를 포함합니다.
- PUT /ibm/api/batch/jobexecutions/job execution id?action=stop
- 지정된 실행 중인 작업 실행을 중지하려면 이 URI를 사용하십시오. 필수 매개변수는 action = stop, restart입니다.
- PUT /ibm/api/batch/jobexecutions/job execution id?action=restart
- 지정된 작업 실행을 다시 시작하려면 이 URI를 사용하십시오. 필수 매개변수는 action = stop, restart입니다.
단계 실행
- GET /ibm/api/batch/jobexecutions/job execution id/stepexecutions
- 이 URI는 지정된 작업 실행에 대해 모든 단계 실행 세부사항의 JSON 배열을 리턴합니다. 파티션된 단계가 작업에 포함된 경우 파티션 정보는 각 단계 내에 나열되어 리턴됩니다.
- 샘플 요청:
https://localhost:8020/ibm/api/batch/jobexecutions/40/stepexecutions
- 다음 샘플은 파티션된 단계에 대한 응답을 나타냅니다.
[ { "stepExecutionId":47, "executionId":39, "instanceId":35, "stepName":"step1", "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:08.652 -0400", "endTime":"2015/03/30 11:10:09.817 -0400", "exitStatus":"COMPLETED", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" }, "partitions":[ { "partitionNumber":0, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.579 -0400", "endTime":"2015/03/30 11:10:09.706 -0400", "exitStatus":"step1", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":1, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.257 -0400", "endTime":"2015/03/30 11:10:09.302 -0400", "exitStatus":"step1", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":2, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.469 -0400", "endTime":"2015/03/30 11:10:09.548 -0400", "exitStatus":"step1", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } } ] }, { "stepExecutionId":51, "executionId":39, "instanceId":35, "stepName":"step2", "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:09.915 -0400", "endTime":"2015/03/30 11:10:10.648 -0400", "exitStatus":"COMPLETED", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" }, "partitions":[ { "partitionNumber":0, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:10.324 -0400", "endTime":"2015/03/30 11:10:10.417 -0400", "exitStatus":"step2", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":1, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:10.260 -0400", "endTime":"2015/03/30 11:10:10.347 -0400", "exitStatus":"step2", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "partitionNumber":2, "batchStatus":"COMPLETED", "startTime":"2015/03/30 11:10:10.507 -0400", "endTime":"2015/03/30 11:10:10.557 -0400", "exitStatus":"step2", "metrics":{ "READ_COUNT":"0", "WRITE_COUNT":"0", "COMMIT_COUNT":"0", "ROLLBACK_COUNT":"0", "READ_SKIP_COUNT":"0", "PROCESS_SKIP_COUNT":"0", "FILTER_COUNT":"0", "WRITE_SKIP_COUNT":"0" } }, { "_links":[ { "rel":"job execution", "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9" }, { "rel":"job instance", "href":"https://localhost:9443/ibm/api/batch/jobinstances/9" } ] } ]
- GET /ibm/api/batch/jobexecutions/job execution id/stepexecutions/step name
- 이 URI는 지정된 작업 실행에 대한 단계 실행 세부사항과 단계 이름을 포함한 JSON 배열을 리턴합니다.
- GET /ibm/api/batch/jobeinstances/job instance id/jobexecutions/job execution sequence number/stepexecutions/step name
- 이 URI는 지정된 작업 인스턴스에 대한 단계 실행 세부사항, 작업 실행 및 단계 이름을 포함한 JSON 배열을 리턴합니다.
- GET /ibm/api/batch/stepexecutions/step execution id
- 이 URI는 지정된 단계 실행에 대해 단계 실행 세부사항을 포함한 JSON 배열을 리턴합니다.
작업 로그
- GET /ibm/api/batch/jobinstances/job instance id/joblogs
- 이 URI는 지정된 작업 인스턴스의 모든 작업 로그 파트에 대한 REST 링크가 포함된 JSON 배열을 리턴합니다.
- GET /ibm/api/batch/jobexecutions/job execution id/joblogs
- 이 URI는 지정된 작업 실행의 모든 작업 로그 파트에 대한 REST 링크가 포함된 JSON 배열을 리턴합니다.중요사항: 다음 예는 REST 링크의 형식을 보여줍니다.작업 실행에 다음과 같은 작업 로그 파트가 있는 경우
해당하는 REST 링크는 다음과 같습니다.joblogs/instance.inst-id/execution.exec-id/part.1.log joblogs/instance.inst-id/execution.exec-id/part.2.log joblogs/instance.inst-id/execution.exec-id/step.step-name/partition.0/part.1.log joblogs/instance.inst-id/execution.exec-id/step.step-name/partition.1/part.1.log
/ibm/api/batch/jobexecutionsexec-id/joblogs?part=part.1.log /ibm/api/batch/jobexecutionsexec-id/joblogs?part=part.2.log /ibm/api/batch/jobexecutionsexec-id/joblogs?part=step.step-name/partition.0/part.1.log /ibm/api/batch/jobexecutionsexec-id/joblogs?part=step.step-name/partition.1/part.1.log
- GET /ibm/api/batch/jobexecutions/job execution id/joblogs
- 선택적 매개변수는 다음과 같습니다.
- type = text
- 텍스트는 일반 텍스트로서 모든 작업 로그를 리턴합니다. 모든 작업 로그 파트는 함께 수집됩니다. 헤더 레코드와 푸터 레코드를 구분하는 파트는 스트림에 삽입되어 작업 로그 파트가 함께 수집될 때 다른 파트를 구분합니다. Type = text가 기본 설정입니다.
- type = zip
- Zip은 지정된 작업 인스턴스 또는 작업 실행에 대한 모든 작업 로그를 압축 파일로 리턴합니다. 작업 로그의 디렉토리 구조는 압축 파일로 유지됩니다.
- GET /ibm/api/batch/jobexecutions/job execution id/joblogs?part=path to part&type=text|zip
- 이 URI는 작업 로그 파트를 일반 텍스트(type=text) 또는 압축 파일(type=zip)로 리턴합니다. 기본 설정은 type=text입니다.
HTTP 리턴 코드
- HTTP 200 확인
- HTTP 201 자원을 새로 작성했습니다.
- HTTP 202 요청을 수락했지만, 처리가 완료되지 않았습니다.
- HTTP 400 매개변수가 올바르지 않은 잘못된 요청입니다. 자세한 내용은 리턴된 메시지를 참조하십시오.
- HTTP 401 이 자원에 액세스할 수 있는 권한이 없습니다.
- HTTP 403 인증에 실패했습니다.
- HTTP 404 요청된 자원을 찾을 수 없거나 자원이 존재하지 않습니다.
- HTTP 409 요청이 자원의 현재 상태와 충돌합니다. 자세한 내용은 리턴된 메시지를 참조하십시오.
- HTTP 500 내부 서버 오류입니다.
분산 서버 일괄처리 환경에서의 STOP 요청
일괄처리 REST API로 전송되는 중지 요청은 작업이 실행 중인 실행기로 직접 전송되어야 합니다. 작업이 실행되고 있지 않은 디스패처 또는 실행기로 중지 요청이 전송되면 HTTP 302 경로 재지정 응답 메시지에 의해 요청이 올바른 실행기로 경로 재지정됩니다. HTTP 302 경로 재지정 응답의 위치 필드는 중지 요청에 사용할 올바른 URL을 표시합니다.