如何在通过JAX-RS(Apache-CXF实现)ExceptionMapper准备的错误响应中保留请求标头

时间:2015-10-09 06:16:11

标签: java jax-rs cxf restful-architecture exceptionmapper

我正在使用apache CXF实现JAX-RS。我创建了一个ExceptionMapper来处理这样的错误请求:

    public class ClientErrorExceptionMapper implements ExceptionMapper<ClientErrorException> {

    @Override
    public Response toResponse(final ClientErrorException exception) {
        return Response.status(Response.Status.BAD_REQUEST).entity("Invalid request: Invalid URI.").build();

    }

}

我不确定这是如何在内部工作的,但我想如果用户发出无效请求,该框架将抛出​​异常,并且此处理程序将准备要发回的错误消息。我的问题是,我希望保留用户在请求中发送的一些自定义标头,以便我将其与响应一起发回。但是使用这个异常映射器,我无法看到获取原始请求标头的任何选项。我可以在响应中设置任何新标头,但我希望保留请求标头 - 就像我在正常请求中一样。 那么在JAX-RS中有什么办法可以保留或有效地引用当前请求中的自定义标题吗?

1 个答案:

答案 0 :(得分:0)

我们使用的是使用线程局部变量在请求到达时保存RequestContext,然后在ExceptionMapper中我们可以获取请求特定信息。

丑陋但它有效。我认为我们在过滤器列表中有一个通用过滤器,可以在发送之前捕获所有请求。