50.2. WebApplicationException을 사용하여 보고


            errors
indexterm:[WebApplicationException]

50.2.1. 개요

Cryostat-RS API는 리소스 메서드에서 RESTful 클라이언트가 사용할 수 있는 예외를 쉽게 생성할 수 있도록 WebApplicationException 런타임 예외를 도입했습니다. WebApplicationException 예외에는 요청 출처로 돌아가기 위해 엔터티 본문을 정의하는 Response 오브젝트가 포함될 수 있습니다. 또한 엔터티 본문이 제공되지 않는 경우 HTTP 상태 코드를 클라이언트에 반환하는 메커니즘을 제공합니다.

50.2.2. 간단한 예외 생성

WebApplicationException 예외를 생성하는 가장 쉬운 방법은 인수 생성자나 WebApplicationException 예외에서 원래 예외를 래핑하는 생성자를 사용하는 것입니다. 두 생성자 모두 빈 응답이 있는 WebApplicationException을 생성합니다.

이러한 생성자 중 하나에 의해 생성된 예외가 발생하면 런타임에서 빈 엔터티 본문과 상태 코드가 500 Server Error 인 응답을 반환합니다.

50.2.3. 클라이언트에 반환되는 상태 코드 설정

500 이외의 오류 코드를 반환하려면 상태를 지정할 수 있는 네 가지 WebApplicationException 생성자 중 하나를 사용할 수 있습니다. 예 50.1. “상태 코드를 사용하여 WebApplicationException 생성” 에 표시된 이러한 생성자 중 두 개는 반환 상태를 정수로 가져옵니다.

예 50.1. 상태 코드를 사용하여 WebApplicationException 생성

WebApplicationExceptionintstatusWebApplicationExceptionjava.lang.Throwable의 경우int

예 50.2. “상태 코드를 사용하여 WebApplicationException 생성” 에 표시된 다른 두 개는 응답 상태를 Response.Status 인스턴스로 가져옵니다.

예 50.2. 상태 코드를 사용하여 WebApplicationException 생성

WebApplicationExceptionjavax.ws.rs.core.Response.Status상태WebApplicationExceptionjava.lang.Throwable원인javax.ws.rs.core.Response.Status상태

이러한 생성자 중 하나에 의해 생성된 예외가 발생하면 런타임에서 빈 엔터티 본문 및 지정된 상태 코드가 있는 응답을 반환합니다.

50.2.4. 엔터티 본문 제공

예외와 함께 메시지를 보내려면 Response 개체를 사용하는 WebApplicationException 생성자 중 하나를 사용할 수 있습니다. 런타임은 Response 오브젝트를 사용하여 클라이언트에 전송된 응답을 생성합니다. 응답에 저장된 엔티티는 메시지의 엔티티 본문에 매핑되고 응답의 status 필드는 메시지의 HTTP 상태에 매핑됩니다.

예 50.3. “예외를 사용하여 메시지 전송” 예외 이유가 포함된 클라이언트에 텍스트 메시지를 반환하고 HTTP 메시지 상태를 409 Conflict 로 설정하는 코드를 표시합니다.

예 50.3. 예외를 사용하여 메시지 전송

import javax.ws.rs.core.Response;
import javax.ws.rs.WebApplicationException;
import org.apache.cxf.jaxrs.impl.ResponseBuilderImpl;

...
ResponseBuilderImpl builder = new ResponseBuilderImpl();
builder.status(Response.Status.CONFLICT);
builder.entity("The requested resource is conflicted.");
Response response = builder.build();
throw WebApplicationException(response);

50.2.5. 일반 예외 확장

WebApplicationException 예외를 확장할 수 있습니다. 이를 통해 사용자 정의 예외를 생성하고 일부 보일러 플레이트 코드를 제거할 수 있습니다.

예 50.4. “Extending WebApplicationException” 예 50.3. “예외를 사용하여 메시지 전송” 에서 코드와 유사한 응답을 생성하는 새 예외를 표시합니다.

예 50.4. Extending WebApplicationException

public class ConflicteddException extends WebApplicationException
{
  public ConflictedException(String message)
  {
    ResponseBuilderImpl builder = new ResponseBuilderImpl();
    builder.status(Response.Status.CONFLICT);
    builder.entity(message);
    super(builder.build());
     }
}

...
throw ConflictedException("The requested resource is conflicted.");
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.