ExceptionMapper在grizzly中不起作用

时间:2015-03-02 05:28:58

标签: java jersey jax-rs grizzly exceptionmapper

抱歉我的英语不好。 我正在使用灰熊和球衣来构建一个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。 所以我调试并发现正在调用此方法并返回上面的响应。 但最后http响应是一个由grizzly构建的html页面。 我该怎么办

1 个答案:

答案 0 :(得分:5)

确保您设置了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();
    }