1

我正在使用 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 中有什么方法可以保留或有效地引用当前请求中的自定义标头吗?

4

1 回答 1

0

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

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

于 2017-01-21T01:37:31.310 回答