javax.ws.rs.WebApplicationException而不是Jersey Exception Mapper中的实际异常

时间:2013-10-08 10:13:40

标签: java jersey

为什么我总是在我的异常映射器中获取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();
    }

}

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

1 个答案:

答案 0 :(得分:0)

您需要将此PaymentExceptionHandler注册为泽西容器的泽西资源,以了解在响应中发送Exception类时需要发送此响应。

与投掷new RunTimeExecption(e)一样,球衣将投掷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);
    }
}