JAX-RS (Java API for RESTful Web Services)는 Java에서 RESTful 웹 서비스를 구축하기 위한 API입니다. JAX-RS를 사용하여 개발하다보면 예외 처리가 필요한 경우가 있습니다. 이 블로그 포스트에서는 JAX-RS에서 예외 처리하는 방법을 살펴보겠습니다.
예외 처리 방법
JAX-RS에서 예외 처리는 javax.ws.rs.ext.ExceptionMapper
를 구현하여 수행할 수 있습니다. ExceptionMapper
는 예외를 처리하여 응답을 생성하는 역할을 수행합니다.
예를 들어, NotFoundException
이 발생했을 때 클라이언트에게 적절한 응답을 전달하기 위해 다음과 같이 NotFoundExceptionMapper
클래스를 작성할 수 있습니다.
import javax.ws.rs.NotFoundException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
public class NotFoundExceptionMapper implements ExceptionMapper<NotFoundException> {
@Override
public Response toResponse(NotFoundException ex) {
return Response.status(Response.Status.NOT_FOUND)
.entity("Resource not found")
.build();
}
}
위의 코드에서 @Provider
어노테이션은 JAX-RS에게 이 클래스가 Provider로 사용될 것임을 알려줍니다. ExceptionMapper
를 구현한 클래스를 Provider로 등록해서 JAX-RS가 예외를 처리할 수 있도록 해야합니다.
toResponse
메소드는 예외가 발생할 경우 호출되며, 해당 예외에 대한 적절한 응답을 생성하여 반환합니다.
위의 예제에서는 NotFoundException
이 발생하면 404 응답을 생성하고 “Resource not found”라는 메시지를 응답 엔티티에 포함시킵니다.
예외 처리 적용하기
예외 처리를 사용하려면 JAX-RS 애플리케이션의 구성 클래스에서 Application
클래스를 상속하고 @ApplicationException
어노테이션을 이용하여 예외를 발생시킨 리소스에 적용해야합니다.
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/api")
public class MyApplication extends Application {
}
위의 코드에서 @ApplicationPath
어노테이션은 JAX-RS 애플리케이션의 루트 경로를 설정합니다.
결론
JAX-RS에서 예외 처리는 ExceptionMapper
를 구현하는 방식으로 처리할 수 있습니다. ExceptionMapper
를 사용하면 예외 발생 시 적절한 응답을 생성하여 클라이언트에 전달할 수 있습니다.