2.16. RESTEasy 작업 서비스
RESTEasy 비동기 작업 서비스는 비동기 동작을 HTTP 프로토콜에 추가하도록 설계되었습니다. HTTP는 동기식 프로토콜이지만 비동기 호출을 인식합니다. HTTP 1.1 응답 코드 202 허용됨 은 서버가 처리 처리를 위해 응답을 수신 및 수락했지만 아직 처리가 완료되지 않았음을 의미합니다. 비동기 작업 서비스는 이 문제를 중심으로 빌드됩니다.
2.16.1. 비동기 작업 서비스 활성화 링크 복사링크가 클립보드에 복사되었습니다!
web.xml 파일에서 비동기 작업 서비스를 활성화합니다.
<context-param>
<param-name>resteasy.async.job.service.enabled</param-name>
<param-value>true</param-value>
</context-param>
2.16.2. 비동기 작업 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 RESTEasy를 사용한 비동기 작업에 대한 쿼리 매개 변수의 예를 설명합니다.
역할 기반 보안은 이식 가능한 구현이 불가능하므로 비동기 작업 서비스에서 작동하지 않습니다. 비동기 작업 서비스를 사용하는 경우 대신 web.xml 파일에서 XML 선언을 통해 애플리케이션 보안을 수행해야 합니다.
GET, DELETE 및 PUT 메서드를 비동기적으로 호출할 수 있지만, 이 경우 이러한 메서드의 HTTP 1.1 계약이 중단됩니다. 이러한 호출은 두 번 이상 호출되는 경우 리소스 상태를 변경하지 않을 수 있지만 호출마다 새 작업 항목으로 서버 상태를 변경합니다.
asynch 쿼리 매개 변수는 백그라운드에서 호출을 실행하는 데 사용됩니다. 202 Accepted 응답이 반환되고, 백그라운드 메서드의 응답이 있는 위치를 가리키는 URL이 있는 위치 헤더가 반환됩니다.
POST http://example.com/myservice?asynch=true
위의 예제에서는 202 Accepted 응답을 반환합니다. 또한 백그라운드 메서드의 응답이 있는 위치를 가리키는 URL이 있는 위치 헤더를 반환합니다. 위치 헤더의 예는 다음과 같습니다.
HTTP/1.1 202 Accepted
Location: http://example.com/asynch/jobs/3332334
URI는 다음과 같은 형식을 사용합니다.
/asynch/jobs/{job-id}?wait={milliseconds}|nowait=true
GET, POST 및 DELETE 작업은 이 URL에서 수행할 수 있습니다.
-
GET은 작업이 완료된 경우 응답으로 호출된 Jakarta RESTful Web Services 리소스 메서드를 반환합니다. 작업이 완료되지 않은 경우 GET은
202 수락된 응답 코드를 반환합니다. GET을 호출하면 작업이 제거되지 않으므로 여러 번 호출할 수 있습니다. - POST는 작업 응답을 읽고 작업이 완료된 경우 작업을 제거합니다.
- DELETE는 작업 대기열을 수동으로 정리하기 위해 호출됩니다.
작업 대기열이 가득 차면 DELETE를 호출하지 않고 메모리에서 가장 빠른 작업을 자동으로 제거합니다.
GET 및 POST 작업을 사용하면 wait 및 nowait 쿼리 매개변수를 사용하여 최대 대기 시간을 정의할 수 있습니다. wait 매개변수를 지정하지 않으면 작업이 기본적으로 nowait=true 로 설정되며 작업이 완료되지 않은 경우 전혀 대기하지 않습니다. wait 매개 변수는 밀리초 단위로 정의됩니다.
POST http://example.com/asynch/jobs/122?wait=3000
RESTEasy는 oneway 쿼리 매개 변수를 사용하여 fire 및 forget 작업을 지원합니다.
POST http://example.com/myservice?oneway=true
위의 예제에서는 202 Accepted 응답을 반환하지만 작업이 생성되지 않습니다.
비동기 작업 서비스에 대한 구성 매개 변수는 부록의 RESTEasy 작업 서비스 구성 매개 변수 섹션에서 확인할 수 있습니다.