Jersey 在基于RestEasy的服务中为ThreadLocal存储使用服务器请求和响应筛选器

Jersey 在基于RestEasy的服务中为ThreadLocal存储使用服务器请求和响应筛选器,jersey,jax-rs,resteasy,thread-local,Jersey,Jax Rs,Resteasy,Thread Local,我目前正在开发一个基于RESTeasy的RESTful服务。我有一个filter类,用作服务器请求筛选器和服务器响应筛选器(即,它实现ContainerRequestFilter和ContainerResponseFilter接口) 在请求开始时,我使用过滤器将对象放入ThreadLocal。此对象由资源在整个请求中使用。在请求结束时,在发送响应之前,过滤器会从ThreadLocal中删除对象 我的问题是,是否可以保证请求过滤器、资源和响应过滤器都将在同一个线程中执行?在请求筛选器将对象放入Th

我目前正在开发一个基于RESTeasy的RESTful服务。我有一个filter类,用作服务器请求筛选器和服务器响应筛选器(即,它实现
ContainerRequestFilter
ContainerResponseFilter
接口)

在请求开始时,我使用过滤器将对象放入
ThreadLocal
。此对象由资源在整个请求中使用。在请求结束时,在发送响应之前,过滤器会从
ThreadLocal
中删除对象

我的问题是,是否可以保证请求过滤器、资源和响应过滤器都将在同一个线程中执行?在请求筛选器将对象放入
ThreadLocal
后,是否有可能由另一个线程执行请求(因此无法访问该对象)

我确信情况确实如此,但后来我看到了这个(泽西岛官方论坛),现在我有了怀疑

javax.ws.rs.container.ContainerRequestContext.setProperty(…)

javax.ws.rs.container.ContainerRequestContext.getProperty(…)

这可能是正确的方法。javadoc声明:

在Servlet容器中,属性与ServletRequest同步,并公开ServletRequest中可用的所有属性。属性的任何修改也会反映在相关ServletRequest的属性集中


在jersey论坛关于异步处理的评论/链接上:异步处理意味着客户机立即得到响应,不是吗但这并不意味着首先处理客户机请求的servlet容器线程在发送客户机响应后会发生变化。如果这是真的,这对我来说是一个指标,ThreadLocal可以用于您的目的。这可能很简单。非常感谢你的邀请,省去了我们很多麻烦。