2016-06-15 47 views
1

我使用嵌入式Jetty來託管WEB服務器。請求被轉發(通過我的內部實現)從動態加載的JAR中進行編碼。有時候我需要熱更新內存JAR,爲此我等待請求完成,但可能會發生這種情況,要麼是因爲編程錯誤,要麼是因爲實際的長時間運行等待超出了合理的時間。如何正常取消嵌入式Jetty中的死鎖WEB請求

我想取消一些超時後處理WEB請求。
在這種情況下,Jetty(v.8 +)可以做什麼?

附註:我知道線程上的Thread.stop()與卡住WEB請求,它似乎不是一個好方法。

+0

與任何取消邏輯一樣,您需要決定如何處理取消操作。這包括您提供取消消息的方式,以及在取消時如何處理。畢竟,「優雅」本質上是一個主觀的術語。至於死鎖看看http://stackoverflow.com/questions/1849972/how-to-kill-deadlocked-threads-in-java –

回答

0

請求的唯一有效的消除是通過終止連接和/或端點。

這通常(並且很容易)通過空閒超時完成。

對於熱插拔jar,關閉(或停止)連接器,等待所有的請求/連接空閒超時,交換你的罐子,然後重新啓動連接器。

+0

似乎是一個不錯的選擇,除了請求處理代碼只是停留在無限循環而不發送任何內容的情況。 –