我目前正在開發基於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可以用於你的目的,這對我來說是一個指標。 –