找不到JAX-RS 404 ExceptionMapper

时间:2012-11-05 20:30:22

标签: java rest exception jax-rs

如果找不到匹配的JAX-RS资源,我正在寻找提供自定义错误页面的方法。我的想法是使用ExceptionMapper,但我不知道要使用的异常类:

@Provider
public class NotFoundMapper implements ExceptionMapper<WHATEXCEPTION?> {
  ...
}

RestEasy有一个专有的NotFoundException,但有没有一种方法适用于泽西岛?理想情况下是标准的合规方式吗?

1 个答案:

答案 0 :(得分:2)

你的意思是你的休息服务是在localhost / rest下监听,那么localhost / rest / asdf会给你一个自定义的404页面吗?它特定于JAX-RS引擎,您必须检查Jersey的源代码。例如,CXF抛出WebApplicationException,但它没有提供任何方式来自定义它。请参阅JAXRSInInterceptor.processRequest()第156行以了解它是如何完成的:

    org.apache.cxf.common.i18n.Message errorMsg = 
        new org.apache.cxf.common.i18n.Message("NO_ROOT_EXC", 
                                           BUNDLE,
                                           message.get(Message.REQUEST_URI),
                                           rawPath);
    LOG.warning(errorMsg.toString());
    Response resp = JAXRSUtils.createResponse(resource, message, errorMsg.toString(), 
            Response.Status.NOT_FOUND.getStatusCode(), false);
    throw new WebApplicationException(resp);

总结一下,没有好的标准方法,你可以尝试使用请求过滤器或ExceptionMapper