

AWS Mainframe Modernization Service(관리형 런타임 환경 환경 환경)는 더 이상 신규 고객에게 공개되지 않습니다. AWS Mainframe Modernization Service(관리형 런타임 환경 환경)와 유사한 기능은 AWS Mainframe Modernization Service(자체 관리형 환경)를 참조하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [AWS Mainframe Modernization 가용성 변경을](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html) 참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 메인프레임용 AWS 변환의 Gapwalk 애플리케이션 엔드포인트
<a name="ba-endpoints-gapwalk"></a>

이 주제에서는 Gapwalk 웹 애플리케이션의 엔드포인트에 대해 알아봅니다. 이들은 루트 경로 `/gapwalk-application`을 사용합니다.

**Topics**
+ [일괄 Job(현대화된 JCL 등) 관련 엔드포인트](#ba-endpoints-gapwalk-batch)
+ [지표 엔드포인트](#ba-endpoints-gapwalk-metrics)
+ [기타 엔드포인트](#ba-endpoints-gapwalk-other)
+ [작업 대기열 관련 엔드포인트](#ba-endpoints-gapwalk-jobq)

## 일괄 Job(현대화된 JCL 등) 관련 엔드포인트
<a name="ba-endpoints-gapwalk-batch"></a>

일괄 작업은 동기적으로 또는 비동기적으로 실행할 수 있습니다(아래 세부 정보 참조). 일괄 작업은 기존 스크립트(JCL)의 현대화에 따른 멋진 스크립트를 사용하여 실행되고 있습니다.

**Topics**
+ [배포된 스크립트 목록](#ba-list-deployed-scripts)
+ [스크립트를 동기적으로 실행](#ba-launch-script-synchronously)
+ [스크립트를 비동기적으로 실행](#ba-launch-script-asynchronously)
+ [트리거된 스크립트 목록](#ba-launch-script-triggered)
+ [작업 실행 세부 정보 검색](#ba-retrieve-job-execution-details)
+ [비동기적으로 실행되어 종료될 수 있는 스크립트를 나열합니다](#ba-list-async-scripts)
+ [동기적으로 실행된 스크립트 중 종료될 수 있는 스크립트를 나열합니다](#ba-list-sync-scripts)
+ [특정 작업 실행 중단](#ba-kill-job-execution)
+ [재시작이 가능하도록 기존 체크포인트를 나열합니다](#ba-list-existing-checkpoints)
+ [작업 재시작(동기식)](#ba-restart-job-sync)
+ [작업 재시작(비동기식)](#ba-restart-job-async)
+ [비동기 작업 실행에 대한 스레드 제한 설정](#ba-set-thread-limit)

### 배포된 스크립트 목록
<a name="ba-list-deployed-scripts"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/scripts`
+ 인수: 없음
+ 이 엔드포인트는 서버에 배포된 groovy 스크립트 목록을 문자열로 반환합니다. 결과 문자열은 활성 링크(실행 가능한 스크립트별 링크 -- 아래 샘플 참조)가 있는 HTML 페이지이므로 이 엔드포인트는 주로 웹 브라우저에서 사용하기 위한 것입니다.

샘플 응답:

```
<p><a href=./script/COMBTRAN>COMBTRAN</a></p><p><a href=./script/CREASTMT>CREASTMT</a></p><p><a href=./script/INTCALC>INTCALC</a></p><p><a href=./script/POSTTRAN>POSTTRAN</a></p><p><a href=./script/REPROC>REPROC</a></p><p><a href=./script/TRANBKP>TRANBKP</a></p><p><a href=./script/TRANREPT>TRANREPT</a></p><p><a href=./script/functions>functions</a></p>
```

**참고**  
링크는 나열된 각 스크립트를 **동기적**으로 시작하는 데 사용할 URL을 나타냅니다.
+ 지원되는 방법: GET / POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/triggerscripts`
+ 인수: 없음
+ 이 엔드포인트는 서버에 배포된 groovy 스크립트 목록을 문자열로 반환합니다. 결과 문자열은 활성 링크(실행 가능한 스크립트별 링크 -- 아래 샘플 참조)가 있는 HTML 페이지이므로 이 엔드포인트는 주로 웹 브라우저에서 사용하기 위한 것입니다.

  이전 엔드포인트 응답과 달리 링크는 나열된 각 스크립트를 **비동기적**으로 시작하는 데 사용할 URL을 나타냅니다.  
![\[리스팅 스크립트 샘플(브라우저 보기)\]](http://docs.aws.amazon.com/ko_kr/m2/latest/userguide/images/trigger_scripts.png)

### 스크립트를 동기적으로 실행
<a name="ba-launch-script-synchronously"></a>

이 엔드포인트에는 GET 및 POST 사용 전용 경로가 있는 두 가지 변형이 있습니다(아래 참조).
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/script/{scriptId:.+}`
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/post/script/{scriptId:.+}`
+ 인수:
  + **입력 검증**을 시작할 스크립트의 식별자: 스크립트 ID는 비워둘 수 없고 255자를 초과할 수 없으며 패턴과 일치해야 합니다. `^[a-zA-Z0-9._-]+$` 
  + 선택 사항: 요청 파라미터(`Map<String,String>`로 표시)를 사용하여 스크립트에 전달할 파라미터. 지정된 파라미터는 호출된 groovy 스크립트의 [바인딩](https://docs.groovy-lang.org/latest/html/api/groovy/lang/Binding.html)에 자동으로 추가됩니다. **입력 검증**: 파라미터 맵은 50개의 항목을 초과할 수 없습니다.
+ 호출은 선택적 파라미터를 사용하여 스크립트(scriptId로 식별됨)를 실행하고 완료될 때까지 기다린 후 다음 중 하나를 사용하여 *ResponseEntityString*을 반환합니다.
  + HTTP 200: "완료" 성공적인 실행에 대한 또는 JSON 성공 메시지
  + HTTP 200: 실행 실패 세부 정보가 포함된 JSON 오류 메시지입니다. 서버 로그에서 사용 가능한 추가 정보입니다.
**참고**  
런타임은 이제 실패한 작업 실행에 대한 HTTP 500 상태 코드 반환을 지원합니다. 이 응답 코드를 구성하려면 [기본 애플리케이션에 사용 가능한 속성을 참조하세요](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-key-value.html#ba-runtime-key-value-main).
  + **입력 검증**: 잘못된 스크립트 ID 또는 파라미터는 검증 오류 세부 정보와 함께 HTTP 400 잘못된 요청을 반환합니다.

    ```
    {
        "exitCode": -1,
        "stepName": "STEP15",
        "program": "CBACT04C",
        "status": "Error"
    }
    ```

    서버 로그를 살펴보면 이것이 배포 문제라는 것을 알 수 있습니다(예상한 프로그램이 제대로 배포되지 않아 찾을 수 없어 작업 실행이 실패합니다).  
![\[스크립트 실행 오류 샘플\]](http://docs.aws.amazon.com/ko_kr/m2/latest/userguide/images/script_exec_error_logs.png)

**참고**  
동기 호출은 단시간 실행 작업에만 사용해야 합니다. 장시간 실행되는 작업은 비동기적으로 시작하는 것이 좋습니다(아래 전용 엔드포인트 참조).

### 스크립트를 비동기적으로 실행
<a name="ba-launch-script-asynchronously"></a>
+ 지원되는 메서드: GET/POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/triggerscript/{scriptId:.+}`
+ 인수:
  + 시작을 위한 스크립트의 식별자 **입력 검증**: 스크립트 ID는 비워둘 수 없고 255자를 초과할 수 없으며 패턴과 일치해야 합니다. `^[a-zA-Z0-9._-]+$` 
  + 선택 사항: 요청 파라미터(`Map<String,String>`로 표시)를 사용하여 스크립트에 전달할 파라미터. 지정된 파라미터는 호출된 groovy 스크립트의 [바인딩](https://docs.groovy-lang.org/latest/html/api/groovy/lang/Binding.html)에 자동으로 추가됩니다. **입력 검증**: 파라미터 맵은 50개의 항목을 초과할 수 없습니다.
+ 위의 동기 모드와 달리 엔드포인트는 응답을 보내기 위해 작업 실행이 완료될 때까지 기다리지 않습니다. 사용 가능한 스레드를 찾을 수 있는 경우 작업 실행이 한 번에 시작되고 작업 실행을 나타내는 고유 식별자인 작업 실행 ID와 함께 호출자에게 즉시 응답이 전송됩니다. 이 응답은 작업 실행 상태를 쿼리하거나 오작동으로 간주되는 작업 실행을 강제 종료하는 데 사용할 수 있습니다. 리소스 레이블의 형식은 다음과 같습니다.

  ```
  Triggered script <script identifier> [unique job execution id] @ <date and time>
  ```
+ 작업 비동기 실행은 고정된 제한된 수의 스레드를 사용하므로 사용 가능한 스레드를 찾을 수 없는 경우 작업 실행이 시작되지 않을 수 있습니다. 이 경우 반환되는 메시지는 다음과 같습니다.

  ```
  Script [<script identifier>] NOT triggered - Thread limit reached (<actual thread limit>) - Please retry later or increase thread limit.
  ```

  스레드 제한을 늘리는 방법을 알아보려면 아래 `settriggerthreadlimit` 엔드포인트를 참조하세요.

샘플 응답:

```
Triggered script INTCALC [d43cbf46-4255-4ce2-aac2-79137573a8b4] @ 06-12-2023 16:26:15
```

고유한 작업 실행 식별자를 사용하면 필요한 경우 서버 로그에서 관련 로그 항목을 빠르게 검색할 수 있습니다. 또한 아래에 설명된 다른 여러 엔드포인트에서도 사용됩니다.

### 트리거된 스크립트 목록
<a name="ba-launch-script-triggered"></a>
+ 지원되는 메서드: GET/POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/triggeredscripts/{status:.+}`, `/triggeredscripts/{status:.+}/{namefilter}` 
+ 인수:
  + 상태(필수): 검색할 트리거된 스크립트의 상태입니다. **입력 검증**: 상태는 비워둘 수 없으며 50자를 초과할 수 없습니다. 가능한 값은 다음과 같습니다.
    + `all`: 작업이 아직 실행 중인지 여부에 관계없이 모든 작업 실행 세부 정보를 표시합니다.
    + `running`: 현재 실행 중인 작업에 대한 작업 세부 정보만 표시합니다.
    + `done`: 실행이 끝난 작업에 대한 작업 세부 정보만 표시합니다.
    + `killed`: 전용 엔드포인트를 사용하여 실행이 강제로 중단된 작업에 대한 작업 세부 정보만 표시합니다(아래 참조).
    + `triggered`: 트리거되었지만 아직 시작되지 않은 작업에 대한 작업 세부 정보만 표시합니다.
    + `failed`: 실행이 실패로 표시된 작업에 대한 작업 세부 정보만 표시합니다.
    + \$1namefilter(선택 사항)\$1: 지정된 스크립트 식별자에 대한 실행만 검색합니다. **입력 검증**: 255자를 초과할 수 없음
+ 작업 실행 세부 정보 모음을 JSON으로 반환합니다. 자세한 내용은 [작업 실행 세부 정보 메시지 구조](ba-endpoints-apx.md#job-execution-details) 섹션을 참조하세요.

샘플 응답:

```
[
    {
      "scriptId": "INTCALC",
      "caller": "127.0.0.1",
      "identifier": "d43cbf46-4255-4ce2-aac2-79137573a8b4",
      "startTime": "06-12-2023 16:26:15",
      "endTime": "06-12-2023 16:26:15",
      "status": "DONE",
      "executionResult": "{ \"exitCode\": -1, \"stepName\": \"STEP15\", \"program\": \"CBACT04C\", \"status\": \"Error\" }",
      "executionMode": "ASYNCHRONOUS"
    }
  ]
```

### 작업 실행 세부 정보 검색
<a name="ba-retrieve-job-execution-details"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/getjobexecutioninfo/{jobexecutionid:.+}`
+ 인수:
  + jobexecutionid(필수): 해당 작업 실행 세부 정보를 검색하기 위한 고유한 작업 실행 식별자입니다. **입력 검증**: 작업 실행 ID는 비워둘 수 없으며 255자를 초과할 수 없습니다.
+ 단일 작업 실행 세부 정보([작업 실행 세부 정보 메시지 구조](ba-endpoints-apx.md#job-execution-details) 참조)를 나타내는 JSON 문자열을 반환합니다. 지정된 식별자에 대한 작업 실행 세부 정보를 찾을 수 없는 경우 빈 응답을 반환합니다.

### 비동기적으로 실행되어 종료될 수 있는 스크립트를 나열합니다
<a name="ba-list-async-scripts"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/killablescripts`
+ 비동기적으로 시작되었지만 현재 실행 중이고 강제로 종료될 수 있는 작업의 작업 실행 식별자 컬렉션을 반환합니다(아래 `/kill` 엔드포인트 참조).

### 동기적으로 실행된 스크립트 중 종료될 수 있는 스크립트를 나열합니다
<a name="ba-list-sync-scripts"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/killablesyncscripts`
+ 동기적으로 시작되어 현재 실행 중이고 강제로 종료될 수 있는 작업의 작업 실행 식별자 컬렉션을 반환합니다(아래 `/kill` 엔드포인트 참조).

### 특정 작업 실행 중단
<a name="ba-kill-job-execution"></a>
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ 경로: `/kill/{identifier:.+}`
+ 인수: 작업 실행 식별자(필수): 강제로 종료될 작업 실행을 가리키는 고유한 작업 실행 식별자입니다. **입력 검증**: 식별자는 비워둘 수 없으며 255자를 초과할 수 없습니다.
+ 작업 실행 중단 시도 결과를 자세히 설명하는 텍스트 메시지를 반환합니다. 메시지에는 스크립트 식별자, 작업 실행 고유 식별자, 실행 중단이 발생한 날짜 및 시간이 포함됩니다. 지정된 식별자에 대해 실행 중인 작업 실행을 찾을 수 없는 경우 대신 오류 메시지가 반환됩니다.

**주의**  
 런타임은 대상 작업 실행을 제대로 종료하기 위해 최선을 다합니다. 따라서 메인프레임 런타임을 위한 AWS 변환은 작업 종료로 인한 비즈니스 영향을 최소화하려고 시도하므로 /kill 엔드포인트의 응답이 호출자에게 도달하는 데 약간의 시간이 걸릴 수 있습니다.
작업 실행을 강제 종료하는 것은 데이터 손실이나 손상을 비롯한 직접적인 비즈니스 결과를 초래할 수 있으므로 가볍게 해서는 안 됩니다. 특정 작업 실행이 중단되고 데이터 수정 수단이 명확하게 식별된 경우에만 사용해야 합니다.
작업을 중단하면 추가 조사(사후 분석) 를 통해 무엇이 잘못되었는지 파악하고 적절한 수정 조치를 취해야 합니다.
어떤 경우든 실행 중인 작업을 중단하려는 시도는 경고 수준 메시지와 함께 서버 로그에 기록됩니다.

### 재시작이 가능하도록 기존 체크포인트를 나열합니다
<a name="ba-list-existing-checkpoints"></a>

작업 재시작 가능성은 스크립트가 체크포인트를 `CheckpointRegistry`에 등록하여 작업 실행 진행 상황을 추적할 수 있는지에 달려 있습니다. 작업 실행이 제대로 종료되지 않고 다시 시작 체크포인트가 등록된 경우 체크포인트 위의 선행 단계를 실행할 필요 없이 마지막으로 등록된 체크포인트에서 간단히 작업 실행을 다시 시작할 수 있습니다.
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ 경로: `/restarts/{scriptId}/{jobId}`
+ 인수:
  + scriptId(선택 사항 - 문자열): 다시 시작되는 스크립트입니다.
  + jobId(선택 사항 - 문자열): 작업 실행의 고유 식별자입니다.
+ 실행이 제대로 종료되지 작업을 다시 시작하거나 이전에 실행된 단계를 우회하여 지연된 다시 시작을 트리거하는 데 사용할 수 있는 기존 다시 시작 지점의 JSON 형식 목록을 반환합니다. 스크립트에서 체크포인트를 등록하지 않은 경우 페이지 내용은 “등록된 체크포인트 없음”으로 표시됩니다.

### 작업 재시작(동기식)
<a name="ba-restart-job-sync"></a>
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ 경로: `/restart/{hashcode}/{scriptId}/{skipflag}`
+ 인수: 
  + hashcode(정수 - 필수): 제공된 해시코드를 체크포인트 값으로 사용하여 가장 최근 작업 실행을 다시 시작합니다(유효한 체크포인트 값을 검색하는 방법을 알아보려면 위의 `/restarts` 엔드포인트 참조).
  + scriptId(선택 사항 - 문자열): 다시 시작되는 스크립트입니다.
  + skipflag(선택 사항 - 부울): 선택한 (체크포인트) 단계의 실행을 건너뛰고 즉시 후속 단계(있는 경우)에서 재시작을 실행합니다.
+ 반품: 위의 `/script` 반환 설명을 참조하세요.

### 작업 재시작(비동기식)
<a name="ba-restart-job-async"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/triggerrestart/{hashcode}/{scriptId}/{skipflag}`
+ 인수: 
  + hashcode(정수 - 필수): 제공된 해시코드를 체크포인트 값으로 사용하여 가장 최근 작업 실행을 다시 시작합니다(유효한 체크포인트 값을 검색하는 방법을 알아보려면 위의 `/restarts` 엔드포인트 참조).
  + scriptId(선택 사항 - 문자열): 다시 시작되는 스크립트입니다.
  + skipflag(선택 사항 - 부울): 선택한 (체크포인트) 단계의 실행을 건너뛰고 즉시 후속 단계(있는 경우)에서 재시작을 실행합니다.
+ 반품: 위의 `/triggerscript` 반환 설명을 참조하세요.

### 비동기 작업 실행에 대한 스레드 제한 설정
<a name="ba-set-thread-limit"></a>

작업 비동기 실행은 JVM의 전용 스레드 풀을 사용합니다. 이 풀에는 사용 가능한 스레드 수에 대한 고정된 제한이 있습니다. 사용자는 호스트 성능(CPU 수, 사용 가능한 메모리 등) 에 따라 제한을 조정할 수 있습니다. 기본적으로 스레드 제한은 5개 스레드로 설정됩니다.
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ 경로: `/settriggerthreadlimit/{threadlimit:.+}`
+ 인수(정수): 적용할 새 스레드 제한. **입력 검증**: 1\$11000이어야 합니다.
+ 새 스레드 제한과 이전 스레드 제한을 제공하는 메시지(`String`)를 반환하거나, 제공된 스레드 제한 값이 유효하지 않은 경우(양수 정수가 아님) 오류 메시지를 반환합니다.

샘플 응답:

```
Set thread limit for Script Tower Control to 10 (previous value was 5)
```

#### 현재 실행 중인 트리거된 작업 실행 횟수 계산
<a name="ba-count-current-jobs"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/countrunningtriggeredscripts`
+ 비동기적으로 시작된 실행 중인 작업 수와 스레드 제한(동시에 실행할 수 있는 트리거된 작업의 최대 수) 을 나타내는 메시지를 반환합니다.

샘플 응답:

```
0 triggered script(s) running (limit =10)
```

**참고**  
작업을 시작하기 전에 스레드 제한에 도달하지 않았는지(이로 인해 작업이 시작되지 않음) 되었는지 확인하는 데 사용할 수 있습니다.

#### 작업 실행 정보 제거
<a name="ba-purge-job-info"></a>

작업 실행 정보는 서버가 가동되는 동안 서버 메모리에 남아 있습니다. 가장 오래된 정보는 더 이상 관련이 없으므로 메모리에서 지우는 것이 편리할 수 있습니다. 이것이 이 엔드포인트의 목적입니다.
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ 경로: `/purgejobinformation/{age:.+}`
+ 인수: 제거할 정보의 보존 기간(시간) 을 나타내는 양수 정수 값입니다. **입력 검증**: 0에서 365 사이여야 합니다.
+ 다음 정보가 포함된 메시지를 반환합니다.
  + 제거된 작업 실행 정보가 보관 목적으로 저장되는 제거 파일의 이름입니다.
  + 제거된 작업 실행 정보 수.
  + 메모에 남아 있는 작업 실행 정보 수

## 지표 엔드포인트
<a name="ba-endpoints-gapwalk-metrics"></a>

**입력 검증**: 모든 지표 엔드포인트는 요청 파라미터를 검증하고 잘못된 값에 대해 HTTP 400 잘못된 요청을 반환합니다.

### JVM
<a name="ba-metrics-jvm"></a>

이 엔드포인트는 JVM과 관련된 사용 가능한 메트릭을 반환합니다.
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/metrics/jvm`
+ 인수: 없음
+ 다음 정보가 포함된 메시지를 반환합니다.
  + threadActiveCount: 활성 스레드 수.
  + jvmMemoryUsed: Java 가상 머신에서 활발히 사용하는 메모리입니다.
  + jvmMemoryMax: JAVA 가상 머신에 허용되는 최대 메모리입니다.
  + jvmMemoryFree: JAVA 가상 머신에서 현재 사용하고 있지 않은 사용 가능한 메모리입니다.

### 세션
<a name="ba-metrics-session"></a>

이 엔드포인트는 현재 열려 있는 HTTP 세션과 관련된 메트릭을 반환합니다.
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/metrics/session`
+ 인수: 없음
+ 다음 정보가 포함된 메시지를 반환합니다.
  + 세션 수: 서버에서 현재 유지 관리하는 활성 사용자 세션 수입니다.

### 일괄
<a name="ba-metrics-batch"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/metrics/batch`
+ 인수:
  + startTimestamp(선택 사항, 숫자): 데이터 필터링을 위한 시작 타임스탬프입니다. **입력 검증**: 유효한 숫자 값이어야 합니다.
  + endTimestamp(선택 사항, 숫자): 데이터 필터링의 종료 타임스탬프입니다. **입력 검증**: 유효한 숫자 값이어야 합니다.
  + page(선택 사항, 번호): 페이지 매김을 위한 페이지 번호입니다. **입력 검증**: 양의 정수여야 합니다.
  + pageSize(선택 사항, 숫자): 페이지 매김의 페이지당 항목 수입니다. **입력 검증**: 엄격하게 양의 정수여야 하며 최대 500이어야 합니다.
  + **입력 검증**: 파라미터 맵은 20개의 항목을 초과할 수 없습니다.
+ 다음 정보가 포함된 메시지를 반환합니다.
  + content: 일괄 실행 지표 목록.
  + pageNumber: 페이지 매김의 현재 페이지 번호.
  + pageSize: 페이지당 표시되는 항목 수입니다.
  + totalPages: 사용 가능한 총 페이지 수입니다.
  + numberOfElements: 현재 페이지에 있는 항목 수입니다.
  + last: 마지막 페이지의 부울 플래그.
  + first: 첫 페이지의 부울 플래그.

### 트랜잭션
<a name="ba-metrics-transaction"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/metrics/transaction`
+ 인수:
  + startTimestamp(선택 사항, 숫자): 데이터 필터링을 위한 시작 타임스탬프입니다. **입력 검증**: 유효한 숫자 값이어야 합니다.
  + endTimestamp(선택 사항, 숫자): 데이터 필터링의 종료 타임스탬프입니다. **입력 검증**: 유효한 숫자 값이어야 합니다.
  + page(선택 사항, 번호): 페이지 매김을 위한 페이지 번호입니다. **입력 검증**: 양의 정수여야 합니다.
  + pageSize(선택 사항, 숫자): 페이지 매김의 페이지당 항목 수입니다. **입력 검증**: 엄격하게 양의 정수여야 하며 최대 500이어야 합니다.
  + **입력 검증**: 파라미터 맵은 20개의 항목을 초과할 수 없습니다.
+ 다음 정보가 포함된 메시지를 반환합니다.
  + content: 트랜잭션 실행 지표 목록.
  + pageNumber: 페이지 매김의 현재 페이지 번호.
  + pageSize: 페이지당 표시되는 항목 수입니다.
  + totalPages: 사용 가능한 총 페이지 수입니다.
  + numberOfElements: 현재 페이지에 있는 항목 수입니다.
  + last: 마지막 페이지의 부울 플래그.
  + first: 첫 페이지의 부울 플래그.

## 기타 엔드포인트
<a name="ba-endpoints-gapwalk-other"></a>

이러한 엔드포인트를 사용하여 등록된 프로그램 또는 서비스를 나열하고, 상태를 확인하고, JICS 트랜잭션을 관리할 수 있습니다.

**Topics**
+ [등록된 프로그램 목록](#ba-list-registered-programs)
+ [등록된 서비스 목록](#ba-list-registered-services)
+ [상태 확인](#ba-health-status)
+ [사용 가능한 JICS 트랜잭션 나열](#ba-list-jics-transactions)
+ [JICS 트랜잭션 시작](#ba-launch-jics-transaction)
+ [JICS 트랜잭션 시작(대안)](#ba-launch-jics-transaction-alt)
+ [모든 활성 세션 나열](#ba-active-session-list)

### 등록된 프로그램 목록
<a name="ba-list-registered-programs"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/programs`
+ 등록된 프로그램 목록을 html 페이지로 반환합니다. 각 프로그램은 기본 프로그램 식별자로 지정됩니다. 현대화된 레거시 프로그램과 유틸리티 프로그램(IDCAMS, IEBGENER 등)이 모두 목록에 반환됩니다. 사용 가능한 유틸리티 프로그램은 tomcat 서버에 배포된 유틸리티 웹 애플리케이션에 따라 달라진다는 점에 유의하세요. 예를 들어 z/OS 유틸리티 지원 프로그램은 현대화된 iSeries 자산과 관련이 없으므로 사용하지 못할 수 있습니다.

### 등록된 서비스 목록
<a name="ba-list-registered-services"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/services`
+ 등록된 런타임 서비스 목록을 html 페이지로 반환합니다. 지정된 서비스는 메인프레임 런타임용 AWS 변환에서 유틸리티로 가져오며, 이는 groovy 스크립트의 인스턴스에 사용할 수 있습니다. Blusam 로드 서비스(레거시 데이터세트에서 Blusam 데이터세트를 생성하는 서비스) 가 해당 범주에 속합니다.

샘플 응답:

```
<p>BluesamESDSFileLoader</p><p>BluesamKSDSFileLoader</p><p>BluesamRRDSFileLoader</p>
```

### 상태 확인
<a name="ba-health-status"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/`
+ gapwalk-애플리케이션이 실행 중임을 나타내는 간단한 메시지를 반환합니다(`Jics application is running.`)

### 사용 가능한 JICS 트랜잭션 나열
<a name="ba-list-jics-transactions"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/transactions`
+ 사용 가능한 모든 JICS 트랜잭션을 나열하는 html 페이지를 반환합니다. 이는 JICS 요소(기존 CICS 요소의 현대화)가 있는 환경에서만 의미가 있습니다.

샘플 응답:

```
<p>INQ1</p><p>MENU</p><p>MNT2</p><p>ORD1</p><p>PRNT</p>
```

### JICS 트랜잭션 시작
<a name="ba-launch-jics-transaction"></a>
+ 지원되는 방법: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/jicstransrunner/{jtrans:.+}`
+ 인수:
  + JICS 트랜잭션 식별자(문자열, 필수): 시작할 JICS 트랜잭션의 식별자(최대 8자)
  + 필수: 맵<String, Object>으로 트랜잭션에 전달할 추가 입력 데이터. 이 맵의 내용은 JICS 트랜잭션에서 사용될 [COMMAREA](https://www.ibm.com/docs/en/cics-ts/5.4?topic=programs-commarea)를 공급하는 데 사용됩니다. 트랜잭션을 실행하는 데 데이터가 필요하지 않은 경우 맵이 비어 있을 수 있습니다.
  + 선택 사항: 주어진 트랜잭션의 실행 환경을 사용자 지정하기 위한 HTTP 헤더 항목. 다음과 같은 헤더 키가 지원됩니다.
    + `jics-channel`: 이번 거래 개시에 따라 실행될 프로그램에서 사용할 JICS CHANNEL의 이름입니다.
    + `jics-container`: 이번 JICS 트랜잭션 실행에 사용될 JICS CONTAINER의 이름.
    + `jics-startcode`: JICS 트랜잭션 시작 시 사용할 STARTCODE(문자열, 최대 2자). 가능한 값은 [STARTCODE](https://www.ibm.com/docs/en/cics-ts/5.5?topic=summary-assign)를 참조하세요(페이지 아래로 이동).
    + `jicxa-xid`: 호출자가 시작한 “글로벌 트랜잭션”([XA](https://en.wikipedia.org/wiki/X/Open_XA))의 XID(X/오픈 트랜잭션 식별자 XID 구조)로, 현재 JICS 트랜잭션 실행에 참여합니다. **입력 검증**: XID는 비워둘 수 없으며 255자를 초과할 수 없습니다.
+ JICS 트랜잭션 시작 결과를 나타내는 `com.netfective.bluage.gapwalk.rt.shared.web.TransactionResultBean` JSON 직렬화를 반환합니다.
+ **입력 검증**: 잘못된 XID 값(공백 또는 255자 초과)은 검증 오류 세부 정보와 함께 HTTP 400 잘못된 요청을 반환합니다.

구조에 대한 자세한 내용은 [트랜잭션 시작 결과 구조](ba-endpoints-apx.md#transaction-outcome) 섹션을 참조하세요.

### JICS 트랜잭션 시작(대안)
<a name="ba-launch-jics-transaction-alt"></a>
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ path: `/jicstransaction/{jtrans:.+}`
+ 인수:  
**JICS 트랜잭션 식별자(문자열, 필수)**  
시작할 JICS 트랜잭션의 식별자(최대 8자)  
**필수: 트랜잭션에 Map<String, Object>으로 전달할 추가 입력 데이터**  
이 맵의 내용은 JICS 트랜잭션에서 사용될 [COMMAREA](https://www.ibm.com/docs/en/cics-ts/5.4?topic=programs-commarea)를 공급하는 데 사용됩니다. 트랜잭션을 실행하는 데 데이터가 필요하지 않은 경우 맵이 비어 있을 수 있습니다.  
**선택 사항: 주어진 트랜잭션의 실행 환경을 사용자 지정하기 위한 HTTP 헤더 항목.**  
다음과 같은 헤더 키가 지원됩니다.  
  + `jics-channel`: 이번 거래 개시에 따라 실행될 프로그램에서 사용할 JICS CHANNEL의 이름입니다.
  + `jics-container`: 이번 JICS 트랜잭션 실행에 사용될 JICS CONTAINER의 이름.
  + `jics-startcode`: JICS 트랜잭션 시작 시 사용할 STARTCODE(문자열, 최대 2자). 가능한 값은 [STARTCODE](https://www.ibm.com/docs/en/cics-ts/5.5?topic=summary-assign)(페이지 아래로 이동)를 참조하세요.
  + `jicxa-xid`: 호출자가 시작한 “글로벌 트랜잭션”([XA](https://en.wikipedia.org/wiki/X/Open_XA))의 XID(X/오픈 트랜잭션 식별자 XID 구조)로, 현재 JICS 트랜잭션 실행에 참여합니다. **입력 검증**: XID는 비워둘 수 없으며 255자를 초과할 수 없습니다.
+ JICS 트랜잭션 시작 결과를 나타내는 `com.netfective.bluage.gapwalk.rt.shared.web.RecordHolderBean` JSON 직렬화를 반환합니다. 구조에 대한 자세한 내용은 [거래 시작 기록 결과 구조](ba-endpoints-apx.md#transaction-record-outcome)에서 확인할 수 있습니다.
+ **입력 검증**: 잘못된 XID 값(공백 또는 255자 초과)은 검증 오류 세부 정보와 함께 HTTP 400 잘못된 요청을 반환합니다.

### 모든 활성 세션 나열
<a name="ba-active-session-list"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ path: `/activesessionlist`
+ 인수: 없음
+ **입력 검증**: 파라미터 맵은 20개의 항목을 초과할 수 없습니다.
+ 활성 사용자 세션 목록을 나타내는 JSON 직렬화의 `com.netfective.bluage.gapwalk.application.web.sessiontracker.SessionTrackerObject` 목록을 반환합니다. 세션 추적이 비활성화되면 빈 목록이 반환됩니다.

## 작업 대기열 관련 엔드포인트
<a name="ba-endpoints-gapwalk-jobq"></a>

 작업 대기열은 AS400 작업 제출 메커니즘에 대한 메인프레임 지원을 위한 AWS 변환입니다. 작업 대기열은 AS400에서 특정 스레드 풀의 작업을 실행하는 데 사용됩니다. 작업 대기열은 해당 대기열에서 동시에 실행할 수 있는 최대 프로그램 수에 해당하는 이름 및 최대 스레드 수로 정의됩니다. 대기열에 제출된 작업이 최대 스레드 수보다 많은 경우 작업은 스레드를 사용할 수 있을 때까지 대기합니다.

대기열에 있는 작업의 전체 상태 목록은 [큐에 있는 작업의 가능한 상태](ba-endpoints-apx.md#jobs-status)을 참조하세요.

작업 대기열에 대한 작업은 다음 전용 엔드포인트를 통해 처리됩니다. `http://server:port/gapwalk-application/jobqueue` 루트 URL을 사용하여 Gapwalk 애플리케이션 URL에서 이러한 작업을 간접적으로 호출할 수 있습니다.

**Topics**
+ [사용 가능한 대기열 나열](#ba-list-available-queues)
+ [작업 대기열 시작 또는 재시작](#ba-start-restart-queue)
+ [시작을 위해 작업을 제출하세요](#ba-submit-job-launch)
+ [제출된 모든 작업 나열](#ba-list-scheduled-jobs)
+ [“보류 중” 상태인 모든 작업을 해제하세요](#ba-release-held-jobs)
+ [해당 작업 이름에 대해 “보류 중” 상태인 모든 작업을 릴리스하세요](#ba-release-held-jobs-name)
+ [주어진 작업을 릴리즈하여 작업 번호를 확인하세요](#ba-release-job-number)
+ [반복 일정에 따라 작업 제출](#ba-submit-job-on-repeating-schedule)
+ [제출된 모든 반복 작업 나열](#ba-list-all-submitted-repeating-jobs)
+ [반복 작업 예약 취소](#ba-cancel-scheduling-of-repeating-job)

### 사용 가능한 대기열 나열
<a name="ba-list-available-queues"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `list-queues`
+ 사용 가능한 대기열 목록을 상태와 함께 JSON 키-값 목록으로 반환합니다.

샘플 응답:

```
{"Default":"STAND_BY","queue1":"STARTED","queue2":"STARTED"}
```

가능한 작업 대기열 상태는 다음과 같습니다.

**STAND\$1BY**  
작업 대기열이 시작되기를 기다리고 있습니다.

**STARTED**  
작업 대기열이 가동되어 실행 중입니다.

**UNKNOWN**  
작업 대기열 상태를 확인할 수 없습니다.

### 작업 대기열 시작 또는 재시작
<a name="ba-start-restart-queue"></a>
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ 경로: `/restart/{name}`
+ 인수: 시작/재시작할 큐의 이름(문자열) - 필수. **입력 검증**: 대기열 이름은 비워둘 수 없으며 255자를 초과할 수 없습니다.
+ 엔드포인트는 아무 것도 반환하지 않고 http 상태를 기반으로 시작/재시작 작업의 결과를 표시합니다.  
**HTTP 200**  
시작/재시작 작업이 순조롭게 진행되었습니다. 지정된 작업 대기열이 이제 시작되었습니다.  
**HTTP 404**  
작업 대기열이 존재하지 않습니다.  
**HTTP 503**  
시작/재시작 시도 중에 예외가 발생했습니다(서버 로그를 검사하여 무엇이 잘못되었는지 확인해야 함).

### 시작을 위해 작업을 제출하세요
<a name="ba-submit-job-launch"></a>
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/submit`
+ 인수: 요청 본문으로 필수이며, `com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage` 객체의 JSON 직렬화입니다. 자세한 내용은 [작업 제출 및 작업 입력 예약](ba-endpoints-apx.md#submit-job) 섹션을 참조하세요.
+ 원본 `SubmitJobMessage`와 작업이 제출되었는지 여부를 나타내는 로그가 포함된 JSON을 반환합니다.

### 제출된 모든 작업 나열
<a name="ba-list-scheduled-jobs"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/list-jobs?status={status}&size={size}&page={page}&sort={sort}`
+ 인수:
  + page: 검색할 페이지 번호(기본값 = 1)
  + size: 페이지 크기(기본값 = 50, 최대 = 300)
  + sort: 작업의 순서(기본값 = ‘executionId’). ‘executionId’는 현재 지원되는 유일한 값입니다.
  + status: (선택 사항) 있는 경우 상태를 기준으로 필터링됩니다.
+ 예약된 모든 작업의 목록을 JSON 문자열로 반환합니다. 샘플 응답은 [예정된 작업 응답 목록](ba-endpoints-apx.md#list-scheduled-jobs)을 참조하세요.

### “보류 중” 상태인 모든 작업을 해제하세요
<a name="ba-release-held-jobs"></a>
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/release-all`
+ 릴리스 시도 작업의 결과를 나타내는 메시지를 반환합니다. 다음과 같은 두 가지 경우가 발생할 수 있습니다.
  + HTTP 200 및 “모든 작업이 성공적으로 릴리스되었습니다\$1”라는 메시지 모든 작업이 성공적으로 릴리스된 경우.
  + HTTP 503 및 메시지: “작업이 공개되지 않았습니다. 알 수 없는 오류가 발생했습니다. 출시 시도에 문제가 발생한 경우 자세한 내용은 로그를 참조하세요.

### 해당 작업 이름에 대해 “보류 중” 상태인 모든 작업을 릴리스하세요
<a name="ba-release-held-jobs-name"></a>

주어진 작업 이름에 대해 작업 번호가 서로 다른 여러 개의 작업을 제출할 수 있습니다(작업 실행의 통일성은 <작업 이름, 작업 번호>의 쌍으로 보장됨). 엔드포인트는 지정된 작업 이름을 가진 “보류 중” 상태인 모든 작업 제출을 릴리스하려고 시도합니다.
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/release/{name}`
+ 인수: 검색할 작업 이름(문자열). 필수.
+ 릴리스 시도 작업의 결과를 나타내는 메시지를 반환합니다. 다음과 같은 두 가지 경우가 발생할 수 있습니다.
  + HTTP 200 및 “<name>(<number of released jobs>) 그룹 내 작업이 성공적으로 릴리스되었습니다\$1”라는 메시지 작업이 성공적으로 공개되었습니다.
  + HTTP 503 및 릴리스 시도에 문제가 발생한 경우 “<name> 그룹 내 작업이 공개되지 않았습니다. 알 수 없는 오류가 발생했습니다. 자세한 정보는 로그를 참조하세요”라는 메시지.

### 주어진 작업을 릴리즈하여 작업 번호를 확인하세요
<a name="ba-release-job-number"></a>

엔드포인트는 해당 쌍<job name, job number>에 대해 “보류 중”인 고유한 작업 제출을 릴리스하려고 시도합니다.
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/release/{name}/{number}`
+ 인수:  
**이름**  
검색할 작업 이름(문자열). 필수.  
**number**  
찾으려는 작업 번호(정수). 필수.  
**반환**  
 릴리즈 시도 작업의 결과를 나타내는 메시지입니다. 다음과 같은 두 가지 경우가 발생할 수 있습니다.  
  + HTTP 200 및 메시지 “" Job이 <name/number> 성공적으로 릴리스되었습니다\$1” 작업이 성공적으로 릴리스된 경우.
  + HTTP 503 및 “<이름/번호> 작업이 릴리스되지 않았습니다. 알 수 없는 오류가 발생했습니다. 자세한 정보는 로그를 참조하세요”라는 메시지.

### 반복 일정에 따라 작업 제출
<a name="ba-submit-job-on-repeating-schedule"></a>

반복 일정으로 실행할 작업을 예약합니다.
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER
+ 경로: `/schedule`
+ 인수: 요청 본문에는 `com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage` 객체의 JSON 직렬화가 포함되어야 합니다.

### 제출된 모든 반복 작업 나열
<a name="ba-list-all-submitted-repeating-jobs"></a>
+ 지원되는 메서드: GET

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ 경로: `/schedule/list?status={status}&size={size}&page={page}&sort={sort}`
+ 인수:

  1. page: 검색할 페이지 번호(기본값 = 1)

  1. size: 페이지 크기(기본값 = 50, 최대 = 300)

  1. sort: 작업의 순서(기본값 = ‘id’). ‘id’는 현재 지원되는 유일한 값입니다.

  1. status: (선택 사항) 있는 경우 상태를 기준으로 필터링됩니다. 가능한 값은 섹션 1에 언급된 값입니다.

  1. status: (선택 사항) 있는 경우 상태를 기준으로 필터링됩니다. 가능한 값은 섹션 1에 언급된 값입니다.

  1. 예약된 모든 작업의 목록을 JSON 문자열로 반환합니다.

### 반복 작업 예약 취소
<a name="ba-cancel-scheduling-of-repeating-job"></a>

반복 일정으로 만들어진 작업을 제거합니다. 작업 예약 상태가 비활성으로 설정됩니다.
+ 지원되는 메서드: POST

  인증 및 다음 역할 중 하나가 필요합니다. ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ 경로: `/schedule/remove/{schedule_id}`
+ 인수: 제거할 예약 작업의 식별자 `schedule_id`입니다.