用jersey2搭建restful平臺時遇到的問題

前幾天用jersey2搭建了一個restful平臺,今天在測試的時候發現一個問題,若是一個沒有權限的用戶訪問了限制資源,那麼正確的返回結果應該爲401。問題就在這裏發生了,我寫了一個測試用例,第一次訪問的時候返回401,再次請求時就成了200,日後再怎麼試都是200,除非重啓應用。看看了日誌發現報錯了:java

An I/O error has occurred while writing a response message entity to the container output stream.
! java.lang.IllegalStateException: The output stream has already been closed.

看到了,當服務端往請求的客戶端通道中返回數據時,發現客戶端的通道已經關閉了。哦,明白了,看看了代碼,發現問題的因此,以下:restful

final Response ACCESS_DENIED = Response.status(Response.Status.UNAUTHORIZED).entity("無權限訪問!").build();

起初這段代碼是作filter的類變量而使用的,也就是說定義了一個Response重複在使用,這樣作是不對的,隨後把改爲了局部變量,再次驗證問題解決了。測試

相關文章
相關標籤/搜索