0

为什么我总是得到 javax.ws.rs.WebApplicationException 而不是我的异常映射器中的实际异常类:

@Provider
public class PaymentExceptionHandler implements ExceptionMapper<Exception> {

    /*
     * Maps the Exception object to response Object when any exception is thrown
     * within the application.
     */
    @Override
    public Response toResponse(Exception exception) {
        return Response.status(550)
                .entity(exception)
                .build();
    }

}

我不确定这是否已经回答,我找不到任何答案。任何帮助,将不胜感激。

4

1 回答 1

0

您需要将其注册PaymentExceptionHandler为球衣容器的球衣资源,以了解如果在响应中发送Exception类,则需要发送此响应。

和 throw 一样new RunTimeExecption(e),jersey 也会PaymentExceptionHandler做出响应。

加载您PaymentExceptionHandler的球衣资源。

我不知道您是如何通过包扫描或其他方式加载资源的,一种方法如下所示:

@ApplicationPath("/rest")
public class AuthResourceLoader extends Application
{
    /* (non-Javadoc)
     * @see javax.ws.rs.core.Application#getClasses()
     */
    @Override
    public Set<Class<?>> getClasses()
    {
        Set<Class<?>> classes = new HashSet<Class<?>>();
        exceptionResource(classes);
        return classes;
    }

    private void exceptionResource(Set<Class<?>> classes)
    {
        classes.add(PaymentExceptionHandler.class);
    }
}
于 2014-01-10T16:38:25.813 回答