无效方法上的JAX-RS拦截器映射异常

时间:2018-08-27 14:41:31

标签: java jax-rs resteasy void

我正在尝试使用拦截器来自省和更改后端发生的异常。拦截器看起来像这样:

public class ApplicationErrorInterceptor {
    private static final Logger LOGGER = Logger.getLogger(ApplicationErrorInterceptor.class);

    @AroundInvoke
    public Object handleException(InvocationContext context) {
        try {
            return context.proceed();
        } catch (Exception ex) {
            LOGGER.errorf(ex, "An unhandled exception occured!");
            return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
                    .entity("some custom 500 error text")
                    .build();
        }
    }
}

使用此拦截器的服务如下所示:

@Path("/somepath")
@Interceptors({ApplicationErrorInterceptor.class})
public interface SomeRestService {
    @POST
    @Path("getResponse")
    Response getResponse();

    @POST
    @Path("getVoid")
    void getVoid();
}

假定这两个方法的实现都引发异常。在两种情况下,我都希望使用提供的自定义消息将异常映射到500服务器错误。不幸的是,返回void的方法将被映射到204 No Content响应。如果完全删除拦截器,则会发生默认的500服务器错误,至少是正确的状态码,但是我丢失了错误自定义

0 个答案:

没有答案