ExceptionMapper 在灰熊中不起作用

ExceptionMapper not work in grizzly

抱歉我的英语不好。 我正在使用 grizzly 和 jersey 构建 Web 应用程序。

我是这样实现的

        ErrorModel errorModel = new ErrorModel("1", "1", "1");
        WebApplicationException applicationException = (WebApplicationException) exception;
        return Response.status(applicationException.getResponse().getStatus()).type(MediaType.APPLICATION_JSON_TYPE).entity(errorModel).build();

当我访问一个不存在的页面时。 我发现它抛出 WebApplicationException。 所以我调试并发现正在调用此方法并且 return 上面的响应。 但最后 http 响应是由 grizzly 构建的 html 页面。 我该怎么办

确保您设置了 RESPONSE_SET_STATUS_OVER_SEND_ERROR 属性。

我在 grizzly 上遇到了同样的问题,它正在捕获我的 400 并发回默认的通用 servlet 错误页面。这是球衣 2 的解决方案。

public class RestApplication extends ResourceConfig {

    private static final Logger logger = Logger.getLogger(RestApplication.class.getName());

    public RestApplication() {
        // Set this property so that the 400 will still send the entity correctly.
        property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, "true");
        registerModules();
    }