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

Java 如何在通过JAX-RS(Apache CXF实现)ExceptionMapper准备的错误响应中保留请求头,java,jax-rs,cxf,restful-architecture,exceptionmapper,Java,Jax Rs,Cxf,Restful Architecture,Exceptionmapper,我正在使用ApacheCXF实现JAX-RS。我创建了一个ExceptionMapper来处理如下错误请求: public class ClientErrorExceptionMapper implements ExceptionMapper<ClientErrorException> { @Override public Response toResponse(final ClientErrorException exception) {

我正在使用ApacheCXF实现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();

    }

}
公共类ClientErrorExceptionMapper实现ExceptionMapper{
@凌驾
公共响应(最终ClientErrorException异常){
返回Response.status(Response.status.BAD_请求).entity(“无效请求:无效URI”).build();
}
}
我不确定这在内部是如何工作的,但我认为如果用户发出无效的请求,框架将抛出一个异常,并且这个处理程序将准备一个错误消息发送回。我的问题是,我希望保留用户在请求中发送的一些自定义头,以便将其与响应一起发送回去。但是使用这个异常映射器,我看不到任何获取原始请求头的选项。我可以在响应中设置任何新的头,但是我希望保留请求头,就像我在普通请求中所做的那样。
那么,在JAX-RS中有什么方法可以保存或有效地引用当前请求中的自定义头呢?

我们所采用的方法是在请求到达时使用线程局部变量保存
RequestContext
,然后在
异常apper
中,我们可以获得特定于请求的信息


虽然很难看,但很管用。我认为我们在筛选器列表中有一个通用筛选器,它在分派之前捕获所有请求。

我们所采用的方法是在请求到达时使用线程局部变量保存
RequestContext
,然后在
exceptionapper
中我们可以获得请求特定的信息

虽然很难看,但很管用。我认为我们在过滤器列表中有一个通用过滤器,它在发送之前捕获所有请求