我目前正在开发基于RESTeasy的RESTful服务。我有一个过滤器类,用作服务器请求过滤器以及服务器响应过滤器(即它实现ContainerRequestFilter
和ContainerResponseFilter
接口)。在基于RestEasy的服务中为ThreadLocal存储使用服务器请求和响应过滤器
在请求开始时,我使用过滤器将对象放入ThreadLocal
。该对象在整个请求中由资源使用。在请求结束时,在发送响应之前,过滤器从ThreadLocal
中删除对象。
我的问题是,有没有保证请求过滤器,资源和响应过滤器都将在同一个线程中执行?在请求过滤器将对象放入ThreadLocal
后,有不同的线程执行请求(从而无法访问对象)吗?
我确信是这样,但后来我看到这http://jersey.576304.n2.nabble.com/Does-filter-method-of-ContainerRequestFilter-run-in-resource-method-thread-td7582648.html(官方泽西岛论坛),现在我有疑虑。
关于异步处理的球衣论坛的评论/链接:异步处理意味着客户立即得到响应,不是吗? - 但这并不意味着首先处理客户端请求的servlet容器线程在发送客户端响应之后会发生变化。如果这是真的,那么ThreadLocal可以用于你的目的,这对我来说是一个指标。 –