自定义ExceptionMapper无法在Spring + Jersey + Jetty中运行

时间:2015-02-01 23:04:58

标签: java spring rest spring-mvc jersey

我的异常映射器如下所示

@Provider
public class DAExceptionMapper implements ExceptionMapper<DAException> {
    @Override
    public @ResponseBody Response toResponse(DAException exception) {
    }
}

public class DAException extends Exception {
}

我在Jetty 8.1.14上使用Spring 3.2.5和Jersey 2.15。

我找不到为什么我的异常映射器没有注册Spring。当我在我的应用程序中抛出自定义DAException时,我得到500。我在https://java.net/jira/browse/JERSEY-2063中尝试了所有解决方案。他们都没有工作。

我目前在spring context xml中注册的异常没有任何bean。我的应用程序没有通过程序设置资源。

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is DAException [responseStatus=Unauthorized, errorMessage=ErrorMessage [errorMessage=User is not allowed to access this resource.], errorDescription=User is not allowed to access this resource.]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)

1 个答案:

答案 0 :(得分:0)

您是否实施了toResponse方法?

@Provider
public class DAExceptionMapper implements
        ExceptionMapper<DAException> {
    @Override
    public Response toResponse(DAException ex) {
        return Response.status(404).entity(ex.getMessage()).type("text/plain")
                .build();
    }
}

还有这个,但听起来这与球衣版本有关&gt; 2.5 toResponse in jersey ExceptionMapper does not get invoked